[OSM-talk-be] Export database
Glenn Plas
glenn at byte-consult.be
Wed Oct 1 09:12:51 UTC 2014
Ik krijg mooi 80000 uit mechelen te zien: (bbox aangepast voor test)
<osm-script>
<query type="node">
<has-kv k="place" v="town"/>
<bbox-query {{bbox}}/>
</query>
<print mode="meta"/>
</osm-script>
Tags:
is_in:continent=Europe
is_in:country=Belgium
is_in:province=Antwerp
name=Mechelen
name:de=Mecheln
name:en=Mechelen
name:es=Malinas
name:fr=Malines
name:it=Malines
name:la=Maclinia
name:lt=Mechelenas
name:nl=Mechelen
name:ru=Мехелен
place=town
population=80000
Glenn
On 01-10-14 10:44, Karel Adams wrote:
> Na enige stilte wegens andere prioriteiten heb ik dit netjes aan het
> werk gekregen.
> Als er nog eens een Linuxiaan zoiets wil doen, hier is mijn oplossing:
>
> 1) query om overpass aan te spreken:
>
> <osm-script>
> <query type="node">
> <has-kv k="place" v="town"/>
> <bbox-query e="8" n="54" s="49" w="2" />
> </query>
> <print/>
> </osm-script>
>
> 2) command-line om met deze query aan te kloppen bij overpass:
>
> wget -O $TMPFIL --post-file=overpass_query
> "http://overpass-api.de/api/interpreter"
>
> 3) een handjevol python code om de xml te parsen tot csv zoals een
> die-hard unixiaan verder vermaalt met awk en sed en zo:
>
> import codecs
> import xml.etree.cElementTree as ET
> tree = ET.parse('target.osm')
> root = tree.getroot()
>
> allnodes=root.findall('node')
> for node in allnodes:
> lat=node.get('lat')
> lon=node.get('lon')
> cityname=''
> population=0
> for tag in node.findall('tag'):
> if tag.attrib['k'] == 'name':
> cityname = tag.attrib['v']
> if tag.attrib['k'] == 'population':
> try:
> population = int(tag.attrib['v'])
> except:
> pass
>
> print("{},{},{},{}".format(lat,lon,cityname.encode('utf-8'),population))
>
> Vragen:
>
> 1) de 'population' is niet overal ingevuld, en sommige getallen zijn zo
> rond dat ik ze niet erg betrouwbaar vind. Vervelend dat de info vooral
> schijnt te ontbreken bij middelgrote steden in Vlaanderen (Turnhout,
> Mol, Mechelen...) Is er een betere manier om aan de bevolkingsaantallen
> per stad te geraken? Het komt niet echt aan op de precieze getallen, de
> bedoeling is om de "lokaliteiten" te kunnen categoriseren (bv. meer dan
> 5000, meer dan 20000, meer dan 300000)
>
> 2) her en der lees ik dat het 'not done' zou zijn om API's te gebruiken
> voor downloads - en op deze mailinglist werd me dat net aanbevolen? Ik
> wil overigens best overwegen om een extra parameter mee te geven om de
> prioriteit te verlagen, dit is toch een batchproces dat gerust enkele
> uren mag staan draaien. En ik maak me niet al te veel gewetensbezwaren
> over het overbelasten van de overpass-server want dit is behoorlijk
> statische data, die ga ik neit om de haverklap refreshen, misschien maar
> één keertje per jaar of zo.
>
> Karel
>
> NB voor wie het interesseert: bovenstaande query, "de benelux en
> aanpalende" gaf me 1207 lokaliteiten; van 907 daarvan is het
> inwonersaantal aangegeven.
>
>
>
> _______________________________________________
> Talk-be mailing list
> Talk-be at openstreetmap.org
> https://lists.openstreetmap.org/listinfo/talk-be
--
"Everything is going to be 200 OK."
More information about the Talk-be
mailing list