[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