Openstreetmap — Wikidata
Florian Lohoff
f at zz.de
Do Jun 12 16:46:56 CEST 2025
Hola Björn,
On Thu, Jun 12, 2025 at 03:53:11PM +0200, Björn Kruschke wrote:
>Hallo Liste,
>
> kennt sich jemand mit wikidata und openstreetmap aus und könnte mir
> dabei weiterhelfen.
> Ich würde gerne openstreetmap, wikidata und das Häuser wiki Lippe
> https://www.lippe-haeuser-wiki.de/wiki/Hauptseite verknüpfen. Habe
> aber zu wenig Ahnung, um das zu automatisieren.
> Ich stelle mir vor, dass ich als ersten Schritt alle Straßen in
> Detmold auch in Wikidata nach dem Straßen Schema anlege.
> https://www.wikidata.org/wiki/EntitySchema:E317
> Nun denke ich, dass die Eigenschaft connects with sich aus
> openstreetmap herauslesen lässt, wenn man es kann.
> Also kann ich bei openstreetmap abfragen, welchen Straßen z.B. in
> Detmold eine Verbindung bzw. Berührung zum Haselnussweg haben?
> Ich vermute, dass es auch zu kompliziert ist, es in der Mailingsliste
> zu behandeln, aber für einen Tipp wie ich damit weiterkommen könnte
> und die nötigen Informationen finden, bin ich dankbar.
Also - das zu automatisieren halte ich für relativ gefährlich. Ist auch
nicht so gern gesehen in OSM - Wenn du das weiter verfolgst gehts
auch darum genau zu dokumentieren was und wie du das vor hast - Hier ist
die Mechanical Edit Policy.
https://wiki.openstreetmap.org/wiki/Automated_Edits_code_of_conduct
Bezüglich des "Connects" - meinst du die Straße mit namen A kreuzt
Straße mit namen B?
Keine ahnung ob man das mit Overpass Turbo hin bekommt. Ich würde
mir den owl als PBF in eine postgres laden und dann so vorgehen - Nur
mal schnell gehackt auf einem NRW export:
Boundary von Detmold geholt von osm-boundaries und in die Postgis packen:
create table boundaries ( id serial primary key, name varchar, osmb jsonb, geom public.geometry(MultiPolygon,4326) );
\set content `cat OSMB-ca487ae64eed6ded6afe49829c9889fc4ff33ccf.geojson`
insert into boundaries ( osmb ) values ( :'content'::jsonb );
update boundaries set geom = ST_Multi(ST_GeomFromGeoJSON(osmb->'features'->0->'geometry')),
name = osmb->'features'->0->'properties'->>'name';
Und dann entsprechend die Kreuzungen selektieren:
select a.osm_id aid,
a.highway ahighway,
a.name aname,
b.osm_id bid,
b.highway bhighway,
b.name bname,
ST_AsText(ST_Intersection(a.way,b.way))
from boundaries bound
join planet_osm_line as a on
( ST_Intersects(bound.geom, a.way) )
join planet_osm_line as b on
( ST_Intersects(bound.geom, b.way) )
where bound.name = 'Detmold'
and a.highway <> ''
and b.highway <> ''
and a.name <> ''
and b.name <> ''
and 'Haselnußweg' in ( a.name, b.name )
and a.osm_id < b.osm_id
and ST_Intersects(a.way, b.way)
limit 100;
Resultat:
aid | ahighway | aname | bid | bhighway | bname | st_astext
----------+-------------+-------------+------------+-------------+-------------+-----------------------------
35340663 | residential | Krokusweg | 35731462 | footway | Haselnußweg | POINT(8.8432215 51.9218607)
35731463 | residential | Haselnußweg | 1223209838 | residential | Römerweg | POINT(8.8448084 51.9215907)
35731462 | footway | Haselnußweg | 35731463 | residential | Haselnußweg | POINT(8.8436812 51.9217497)
Flo
--
Florian Lohoff f at zz.de
Any sufficiently advanced technology is indistinguishable from magic.
Mehr Informationen über die Mailingliste OSM