Hola Ludwig und Co, On Tue, Mar 10, 2020 at 10:11:00PM +0100, Ludwig Baumgart wrote: > Hallo Otto, > > wenn Du als QGIS-ler-Spezialist mit einem Plugin etwas für uns OSM-ler > entwickeln könntest, fände ich das sehr gut. > > Ganz im gleichen Sinn wie Florian und Martin: > > Hier in BaWü sind zwar nicht einmal die amtlichen Luftbilder für OSM > freigegeben, aber es gibt in nahezu jeder Kommune (über deren Rahmenvertrag > mit dem LGL-BW) die umfänglichen amtlichen Datensätze (NAS-Format für > PostgisDB) incl. Luftbild. Da wäre ein solcher "Gebäude-Vergleichs-Plugin" > zwischen OSM-Gebäuden und amtlichen Gebäuden sehr wertvoll.
Am Ende brauchst du da kein großes Plugin. Mit ogr2ogr bekommst du die NAS Daten in eine Postgis (Das dauert aber 17 Jahre und noch 2 Schneewittchen lang - Was ein ineffizientes Format) Danach lädst du dir mit osm2pgsql ein pbf des Ausschnittes in dieselbe Datenbank - Der rest ist SQL. Mein primäres sql diff ist das hier. Ich sammel mir für jedes ALKIS Gebäude alle schneidenden OSM Gebäude zusammen (ST_Union) - Dann baue ich da ein diff drauf (Wenn keine schneiden dann ist mein Diff = 100% des ALKIS Gebäudes) Die Tabelle ax_gebaeude_diff kopiere ich dann mit ogr2ogr in ein sqlite. Dann reichere ich die sqlite mit metadaten an (Boundary, styles etc) und dann schiebe ich die in meine Visualisierungsgeschichte (https://github.com/flohoff/spatialite-rest) auf http://osm.zz.de/dbview select * into ax_gebaeude_diff from ( select *, ST_Area(ST_Transform(diff, 25832)) area, ST_Area(ST_Transform(alkisgeom, 25832)) alkisarea from ( select ogc_fid, gml_id, coalesce(ST_Difference(geom, building), geom) as diff, geom as alkisgeom, building as osmgeomcollection from ( select g.ogc_fid, g.gml_id, g.geom, ST_Union(p.way) as building from ax_gebaeude g left outer join planet_osm_polygon p on ( ST_Intersects(p.way, g.geom) and p.building <> '' ) where ( g.lagezurerdoberflaeche is null or g.lagezurerdoberflaeche <> 1200 ) group by g.geom,ogc_fid,gml_id ) foo ) bar ) baz where area > 5 ; ogr2ogr -f SQLite \ -dsco SPATIALITE=YES \ -nln alkisnotinosm \ ${BASE}/${OUTPUT} \ PG:"dbname='osm'" \ -sql "select ogc_fid as id, gml_id as gmlid, diff as geom, area, alkisarea, 'Area ' || trunc(area) || 'm²' as text, 'default' as style from ax_gebaeude_diff" Ich mache das ganze processing in docker containern. Also NAS Import bzw convert in ein pg_dump und das processing gegen OSM Daten. (NAS Import mache ich nur manuell, OSM diff läuft jede stunde - dann nehme ich nur den pg_dump) Ich habe mal meine Pipeline hier abgekippt: https://github.com/flohoff/nas-osm-diff Die run-* scripte sind die die dann einen docker spawnen um in dem docker daten zu prozessieren. Die process-* scripte laufen dann IM docker. Ich benutze im Kreis GT auch nur die NAS files weil die zur Verfügung gestellten Shapes nur Hauptgebäude enthalten. Also keine Garagen, Schuppen etc was natürlich Bullshit ist. Der diff ist auch problemlos gegen shapes zu machen. Die kann man sich entsprechend ja auch mit ogr2ogr direkt in eine postgis schieben. Flo -- Florian Lohoff f...@zz.de UTF-8 Test: The 🐈 ran after a 🐁, but the 🐁 ran away
signature.asc
Description: PGP signature
_______________________________________________ Talk-de mailing list Talk-de@openstreetmap.org https://lists.openstreetmap.org/listinfo/talk-de