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

Attachment: signature.asc
Description: PGP signature

_______________________________________________
Talk-de mailing list
Talk-de@openstreetmap.org
https://lists.openstreetmap.org/listinfo/talk-de

Antwort per Email an