Skip to content

Geometriebildung

Thomas Schüttenberg edited this page Dec 10, 2017 · 8 revisions
  • Nach dem Import der ISYBAU XML-Datei besteht der Datenbankinhalt ausschließlich aus geometrielosen Tabellen.
  • Die Geomerie der Abwassertechnischen Anlagen muss in einem sparaten Schritt mittels SQL aus den vorhandenen Koordinaten gebildet werden. Tabellen mit Koordinaten sind: *
  • Das Ergebnis kann in QGIS als Vektorlayer geladen werden und auch wieder mit den importierten, untereinander referenzierten Tabellen verknüpft werden.

KNOTEN

Bildung von Punktgeometrien

Achtung: nicht deckungsgleich mit "Abwassertechnische Anlagen", mehrere Punkte pro Anlage (SMP, DMP, etc.) möglich!

SELECT 
  st_setsrid(st_makepoint(kp.rechtswert, kp.hochwert), 25832)::geometry(Point,25832) AS p_geom_2d
FROM isybau.identi_datenk_stammd_abwassanlage_geomet_geomet_knoten_punkt kp

Bildung von Flächengeometrien

SELECT (SELECT p_1.parent_ogr_pkid
         FROM isy_in.ident_daten_stammd_abwassanlage_geomet_geomet_polygo_polygon p_1
         WHERE pk.parent_ogr_pkid::text = p_1.ogr_pkid::text) AS parent_ogr_pkid,
       st_setsrid(st_makepolygon(st_makeline(st_makeline(st_makepoint(pk.start_rechtswert, pk.start_hochwert), 
       st_makepoint(pk.ende_rechtswert, pk.ende_hochwert)))), 25832)::geometry(Polygon,25832) AS f_geom_2d
FROM isy_in.ident_daten_stamm_abwasanlag_geome_geome_polygo_polygo_kante pk,
     isy_in.ident_daten_stammd_abwassanlage_geomet_geomet_polygo_polygon p
  WHERE pk.parent_ogr_pkid::text = p.ogr_pkid::text 
  AND (p.polygonart = ANY (ARRAY[1, 2])) -- V105: 1=innerer Polygonring (geschlossen), 2=äußerer Polyring eines Objektes (geschlossen)
GROUP BY pk.parent_ogr_pkid;

KANTEN

Bildung von einfachen Liniengeometrien (Strecken)

SELECT kk.parent_ogr_pkid,
  st_setsrid(st_makeline(st_makepoint(kk.start_rechtswert, kk.start_hochwert), 
  st_makepoint(kk.ende_rechtswert, kk.ende_hochwert)), 25832)::geometry(LineString,25832) AS l_geom_2d
FROM isybau.identi_datenk_stammd_abwassanlage_geomet_geomet_kanten_kante kk

sowie von Polylinien aus mehreren Abschnitten

SELECT (SELECT p_1.parent_ogr_pkid
         FROM isybau.ident_daten_stammd_abwassanlage_geomet_geomet_polygo_polygon p_1
         WHERE pk.parent_ogr_pkid::text = p_1.ogr_pkid::text) AS parent_ogr_pkid,
       st_setsrid(st_makeline(st_makeline(st_makepoint(pk.start_rechtswert, pk.start_hochwert), 
       st_makepoint(pk.ende_rechtswert, pk.ende_hochwert))), 25832)::geometry(LineString,25832) AS l_geom_2d
FROM isybau.ident_daten_stamm_abwasanlag_geome_geome_polygo_polygo_kante pk,
     isybau.ident_daten_stammd_abwassanlage_geomet_geomet_polygo_polygon p
  WHERE pk.parent_ogr_pkid::text = p.ogr_pkid::text 
  AND p.polygonart = 3 -- V105: 3=Polylinie eines Objektes (offen)
GROUP BY pk.parent_ogr_pkid;
Clone this wiki locally