Abwasser (SQL für Fortgeschrittene): Fehlende virtuelle Linien erzeugen nach Interlis 2 Import

Es gibt Systeme, die keine Verbindung zwischen Haltungspunkt und Bauwerk verlangen, GEOBOX Abwasser jedoch schon (virtuelle Linie).

Darum kann es sein, dass nach einem Interlis 2 Import diese Haltungsverbindungen fehlen, was wiederum zu Topologiefehlern führt (Knoten ohne Kanten). Man kann die fehlenden Haltungen (virtuelle Linien) aber im SQL-Sheet folgendermassen erzeugen. Es ist zu empfehlen vorher eine Sicherung der DB zu machen:

Vorgehen im SQL-Sheet (Für geübte SQL-Anwender)

pro Bauwerk gibt es zwei "Inserts". Eines für den "von Punkt" und eines für den "nach Punkt". Das SQL ist am Beispiel des Normschachtes erklärt.

Vorgehen im SQL-Sheet (Für geübte SQL-Anwender)

Pro Bauwerk gibt es zwei Inserts. Einer für den "von Punkt" und einer für den "nach Punkt". Das SQL ist am Beispiel des Normschachtes erklärt.

In folgenden SQL Skripts werden für das Attribut F_CLASS_ID_ATTR Codes aus der Tabelle TB_DICTIONARY verwendet. Diese können von Anwender zu Anwender verschieden sein und können deshalb nicht 1:1 übernommen werden. Diese Werte sind vorgängig der Tabelle TB_DICTIONARY zu entnehmen.
In untenstehendem Beispiel steht 84 für den Normschacht (WW_PO_MA_MANHOLE), 76 für Haltung (WW_PI_SECTION) und 98 für Haltungspunkt (WW_PO_SE_SECTION_P).

Normschacht (von Punkt)

insert into ww_line (fid_attr, f_class_id_attr, isvirtual, utility_info, geom) select se.fid,76,1,1, sdo_geometry(2002,2056,null,sdo_elem_info_array(1,2,1),sdo_ordinate_array(ps.geom.sdo_point.x,ps.geom.sdo_point.y,pp.geom.sdo_point.x,pp.geom.sdo_point.y)) from ww_point ps, ww_point pp, ww_po_se_section_p p, ww_pi_section se where ps.F_CLASS_ID_ATTR=84 and pp.F_CLASS_ID_ATTR=98 and pp.fid_attr=p.fid and exists (select 1 from WW_PO_MA_MANHOLE s where s.fid=p.fid_feature) and ps.geom.sdo_point.x *ungleich* pp.geom.sdo_point.y and ps.geom.sdo_point.y *ungleich* pp.geom.sdo_point.y and sdo_within_distance(ps.geom,pp.geom, 'distance=3') = 'TRUE' and p.fid_section = se.fid and se.fid_feature_from = ps.fid_attr;

Sie können dies im SQL-Sheet ausführen (F5), mit F9 festschreiben und anschliessend die Topologie neu starten.

Weitere Bauwerke

Für weitere Bauwerke, wie z.B. Spezialbauwerk muss jeweils folgendes angepasst werden:

  • ps.F_CLASS_ID_ATTR= in der Where-Bedingung (entsprechende ID's findet man in der Tabelle TB_DICTIONARY)
  • die Objektklasse in der Zeile "and exists (select......". Also z.B WW_PO_MA_MANHOLE ersetzen durch die Objektklasse der Spezialbauwerke (z.B. ww_po_sc_spec_constr)

insert into ww_line (fid_attr, f_class_id_attr, isvirtual, utility_info, geom ) select se.fid,76,1,1, sdo_geometry(2002,2056,null,sdo_elem_info_array(1,2,1),sdo_ordinate_array(ps.geom.sdo_point.x,ps.geom.sdo_point.y,pp.geom.sdo_point.x,pp.geom.sdo_point.y)) from ww_point ps, ww_point pp, ww_po_se_section_p p, ww_pi_section se where ps.F_CLASS_ID_ATTR=84 and pp.F_CLASS_ID_ATTR=98 and pp.fid_attr=p.fid and exists (select 1 from WW_PO_MA_MANHOLE s where s.fid=p.fid_feature) and ps.geom.sdo_point.x *ungleich* pp.geom.sdo_point.y and ps.geom.sdo_point.y *ungleich* pp.geom.sdo_point.y and sdo_within_distance(ps.geom,pp.geom, 'distance=3') = 'TRUE' and p.fid_section = se.fid and se.fid_feature_to= ps.fid_attr;

0Noch keine Kommentare

Ihr Kommentar
Antwort auf:  Direkt auf das Thema antworten