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
[email protected]
https://lists.openstreetmap.org/listinfo/talk-be

Reply via email to