You are not logged in.
- Topics: Active | Unanswered
Announcement
Please create new topics on the new site at community.openstreetmap.org. We expect the migration of data will take a few weeks, you can follow its progress here.***
#1 2019-10-09 19:26:33
- JSteen
- Member
- Registered: 2019-10-09
- Posts: 3
Osmfilter: gegevens zonder addr data wegfilteren
Hey ik probeer een OSM file om te zetten naar CSV, met:
osmconvert64.exe netherlands-latest.osm --max-objects=999999--all-to-nodes --csv="@lat @lon addr:street addr:housenumber addr:postcode addr:city" -o=streets.csvDe CSV wil ik in MySQL importeren. Ik merkte dat in de CSV er soms alleen lat/lon is, maar geen addr data. Is er een manier om de gegevens te filteren die geen addr data hebben (zodat de final CSV kleiner is, plus geen onnodige data heeft).
Ik probeerde:
osmfilter.exe netherlands-latest.osm --keep="@lat @lon addr:street= and addr:housenumber= and addr:postcode= and addr:city=" --drop="@lat==null @lon==null addr:street==null addr:housenumber==null addr:postcode==null addr:city==null" -o=netherlands-filtered.osmEn vervolgens:
osmconvert64.exe netherlands-filtered.osm --max-objects=999999--all-to-nodes --csv="@lat @lon addr:street addr:housenumber addr:postcode addr:city" -o=streets.csvEchter met head streets.csv krijg ik deze output, nog steeds de te wegfilteren regels met lege cellen.
50.8469717 5.6951123
50.8454855 5.6948405
50.8455008 5.6952500
52.0979188 5.1179062 Lijsterstraat 49 3514TB Utrecht
52.0816566 5.1235152 Tolsteegbrug 3 3511ZN Utrecht
52.0817878 5.1241932 Tolsteegbrug 1 3511ZN Utrecht
51.4454199 5.4847854
51.8438309 5.8659531 Tweede Walstraat 21 6511LN Nijmegen
51.8479247 5.8635052 Achter de Hoofdwacht 3 6511VW Nijmegen
52.0953797 5.0867812 Broerestraat 12 3532CP UtrechtHoe moeten de regels zonder addr data correct weggefilterd worden?
Offline
#2 2019-10-09 20:27:43
- JanWandelaar
- Member
- From: Melderslo
- Registered: 2011-04-09
- Posts: 679
Re: Osmfilter: gegevens zonder addr data wegfilteren
Voor het filteren van text files (dus ook .csv files) gebruik ik zelf regelmatig "findstr".
Offline
#3 2019-10-09 21:03:20
- JSteen
- Member
- Registered: 2019-10-09
- Posts: 3
Re: Osmfilter: gegevens zonder addr data wegfilteren
Oke Jan, dat is weer een alternatief. Had gehoopt dat er een heldere `osmfilter` commando mogelijk was.
Aangezien er een patroon in zit heb ik een regex bedacht, die matched met volledige data namelijk:
.*\s+.*\s+.*\s+.*\s+\d{4}\w{2}\s+.*.
Volledig commando zou zijn, denk ik:
sed -n -s "/.*\s+.*\s+.*\s+.*\s+\d{4}\w{2}\s+.*/p" streets.csv > streetsv2.csvHoor graag of dit klopt, want weet niet zeker of ik sed met het patroon correct gebruik nu.
Offline
#4 2019-10-10 00:13:34
- alphensebezorger
- Member
- Registered: 2016-02-08
- Posts: 218
Re: Osmfilter: gegevens zonder addr data wegfilteren
Bij een klein testbestandje werkte dit bij mij:
osmfilter invoer.osm --verbose --keep="addr:street=" -o=uitvoer.osmHierna hield ik alleen nodes over met een tag addr:street=..., ik neem aan dat de bedoeling was.
Offline
#5 2019-10-10 09:57:28
- JSteen
- Member
- Registered: 2019-10-09
- Posts: 3
Re: Osmfilter: gegevens zonder addr data wegfilteren
Alphensebezorger ik wil @lat, @lon, addr:street, addr:housenumber, addr:postcode, addr:city overhouden. Dus niet regels met alleen de geocoordinaten (lat, lon), maar ook de addr gegevens. Misschien moet ik in de --keep="@lat= and @lon=" typen, dus echt met and erbij?
Kunt u een commando aandragen met
findstrJan? Vraag me af of ik het beste een patroon moet schrijven die matched met wat ik over wil houden, of met wat ik wil wegfilteren.
Offline
#6 2019-10-11 11:06:10
- JanWandelaar
- Member
- From: Melderslo
- Registered: 2011-04-09
- Posts: 679
Re: Osmfilter: gegevens zonder addr data wegfilteren
Met findstr moet je inderdaad een patroon hebben. Ik dacht even (onterecht) dat de tag mee in de regel stond).
Als het eenmalig is, dan kun de .csv file in excel importeren en de filter functie gebruiken.
Offline
#7 2019-10-11 12:51:34
- alphensebezorger
- Member
- Registered: 2016-02-08
- Posts: 218
Re: Osmfilter: gegevens zonder addr data wegfilteren
Alphensebezorger ik wil @lat, @lon, addr:street, addr:housenumber, addr:postcode, addr:city overhouden. Dus niet regels met alleen de geocoordinaten (lat, lon), maar ook de addr gegevens. Misschien moet ik in de --keep="@lat= and @lon=" typen, dus echt met and erbij?
Bij nadere studie lijkt je probleem te maken te hebben met het omzetten van vlakken met een adres naar nodes door osmconvert. Met osmfilter gooi je wel alle punten zonder adresinformatie weg, maar daarna maakt osmconvert weer nieuwe punten. Het lijkt alsof een vlak met een adres wel omgezet wordt naar een node, maar de bijbehorende addr=tags worden niet meegenomen naar die node. Edit: de nodes van een gebouw met addr-tags blijven echter bewaard, om het renderen van het gebouw mogelijk te maken.
Als je die punten echt wilt weggooien zou ik aan een grep commando denken, dat geeft alleen regels met de gezocht tekst erin door. "egrep [0-9]{4}[A-Z]{2}" zou dan moeten werken, tenzij ergens nog een postcode-achtige tekst staat in een straatnaam o.i.d. Je kunt ze ook met osmfilter wegfilteren door --keep-nodes te gebruiken.
Kortom: mijn osmfilter opdracht werkt zoals verwacht, daarna levert osmconvert weer ongewenste resultaten.
Edit:
De netste oplossing lijkt me een drie-staps-aanpak:
osmconvert64.exe invoer.osm --max-objects=999999 --all-to-nodes -o=alleen_nodes.osm1. (Vervangt alle way&relaties door een node toe met dezelfde tags, voegt dus adrespunten toe voor ways/relations met een adres)
osmfilter.exe alleen_nodes.osm --keep="addr:street=" -o=gefilterd.osm2. (Gooit alle nodes weg die geen tag addr:street=... hebben, bv. vuilnisbakken, bankjes, nodes van straten/landuse-vlakken enz. enz.)
osmconvert64.exe gefilterd.osm --csv="@lat @lon addr:street addr:housenumber addr:postcode addr:city" -o=adressen.csv3. (Zet het bestand om naar csv-formaat)
Last edited by alphensebezorger (2019-10-11 15:50:14)
Offline
#8 2019-10-14 17:16:25
- IIVQ
- Member
- Registered: 2014-11-12
- Posts: 909
Re: Osmfilter: gegevens zonder addr data wegfilteren
osmconvert64.exe netherlands-filtered.osm --max-objects=999999--all-to-nodes --csv="@lat @lon addr:street addr:housenumber addr:postcode addr:city" -o=streets.csv
Domme vraag, maar er zit geen spatie voor --all-to-nodes. Kan dat de fout veroorzaakt hebben?
Offline
#9 2019-10-15 21:24:03
- marczoutendijk
- Member

- From: Vught
- Registered: 2012-03-04
- Posts: 2,398
- Website
Re: Osmfilter: gegevens zonder addr data wegfilteren
De netste oplossing lijkt me een drie-staps-aanpak:
osmconvert64.exe invoer.osm --max-objects=999999 --all-to-nodes -o=alleen_nodes.osmosmfilter.exe alleen_nodes.osm --keep="addr:street=" -o=gefilterd.osmosmconvert64.exe gefilterd.osm --csv="@lat @lon addr:street addr:housenumber addr:postcode addr:city" -o=adressen.csv
Ik was ook wel geïnteresseerd in iets dergelijks en probeerde bovenstaande op een osm extract met alle data van Zeeland.
Dat leverde een bestand op dat vrijwel helemaal klopte, op 15 regels na waarin uitlsuitend @lat en @lon stonden. Er zit dus nog iets in de brondata dat niet weggefilterd wordt met bovenstaande filters.
Maar wat ik overhield was dus een bestand met 248.765 adressen in Zeeland waarvan er 739 niet aan de regels van een NL adres voldeden omdat óf de postcode óf het huisnummer óf de plaats ontbrak. Meestal plaats en postcode, soms zelfs alledrie. Ik heb bv. 11 keer een Bergstraat mét huisnummer maar geen postcode/woonplaats. Ik ga ervan uit dat die fouten in OSM zitten en niet een gevolg zijn van de filtertechniek.
--
There is only one place where you can connect a high voltage line to a river: on osm! (but not in JOSM
)
Offline
#10 2019-10-16 19:06:33
- PeeWee32
- Member

- From: Leusden, NL
- Registered: 2010-11-28
- Posts: 1,302
- Website
Re: Osmfilter: gegevens zonder addr data wegfilteren
Hey ik probeer een OSM file om te zetten naar CSV, met:
osmconvert64.exe netherlands-latest.osm --max-objects=999999--all-to-nodes --csv="@lat @lon addr:street addr:housenumber addr:postcode addr:city" -o=streets.csvDe CSV wil ik in MySQL importeren.
Even uit nieuwsgierigheid... ben je eigenlijk niet op zoek naar de BAG adres gegevens aangevuld met de lat/lon? Zo ja dan is het wellicht beter de BAG als bron te gebruiken en niet OSM NL. Ik had een vergelijkbaar probleem en heb toen mbv de postgis DB dumps van NL-Extract aan de gang gegaan. Nu heb ik een tabel met alle ruim 9 mio adressen met een groot aantal attributen.
Een ander alternatief is misschien de CSV die NL-extract levert.
Offline