GML Dateien

Ermöglicht den Direktzugriff auf GML Dateien.

Beim ersten Zugriff wird das Stammelement der GML Datei (und der entsprechende Namespace ausgewertet). Anhand dessen wird der Inhaltstyp ermittelt.

Derzeit werden folgende Elemente unterstützt (in Klammern der Namespace):

XPlan

  • XPlanAuszug (http//www.xplanung.de/xplangml/3/ ... http//www.xplanung.de/xplangml/6/)

NAS

  • AX_Bestandsdatenauszug (http://www.adv-online.de/namespaces/adv/gid/6.0)

  • AX_NutzerbezogeneBestandsdatenaktualisierung_NBA (http://www.adv-online.de/namespaces/adv/gid/6.0)

  • AX_Fortfuehrungsauftrag (http://www.adv-online.de/namespaces/adv/gid/6.0)

    Bei NAS werden die Elemente Insert, Update, Delete, Replace im Namespace http://www.adv-online.de/namespaces/adv/gid/6.0 oder (ab Version 7.4.9) in http://www.adv-online.de/namespaces/adv/gid/wfsext erwartet.

Abfragen mittels GeoSQL sind möglich.

Eine Auflistung der derzeit unterstützten GML Elemente/Geometrietypen finden Sie unter Geometrieformate.

Die Attribute können wie gehabt abgefragt werden. Für die Objekt-Spalte (Att) kann in GeoSQL per JSON zugegriffen werden. In CSS erfolgt der Attribut-Zugriff via Dot-Syntax, d.h. att.ElementName.

Es gibt diesen Ebenentyp in der Ausprägung als Einzeldatei oder ab Version 7.0.6.660 als Menge von GML Dateien.

Die Darstellung kann mittels Vektor-CSS erfolgen oder je nach Typ auch über eine Standard-Symbolik. Dazu sind die üblichen Angaben style, cssFile etc. hier anwendbar.

Bsp. in GeoSQL:


SELECT
	*
FROM
	XPlan1
where
      TypeName='BP_VerEntsorgung' 
 AND json_extract(ToJson(att),'$.rechtsstand') == '2000'

Bsp. als Bedingung in Css:

id [TypeName=="BP_VerEntsorgung" and att.rechtsstand == "2000"]
{
 ...
}

Argumente (Einzeldatei)

Typname: GmlFile

Argumente (Auflistung)

Typname: GmlFileColl

  • folder: Der Name des Ordners mit den GML Dateien (schließt sich mit fileName aus).
  • recursive: Ordner rekursiv durchsuchen.
  • filePattern (*.gml): Suchmuster für die Dateien in dem Ordner.

... oder ...

Hiermit können mehrere GML Dateien als eine Ebene zusammengefasst werden. Die Einzeldatei wird als SubLayer innerhalb dieser Ebene abgebildet.

Der Parameter "loadErrorBehavior" wird ausgewertet. Bei "Lax" werden fehlerhafte Dateien oder Dateien, die einen von der ersten abweichenden GML-Type haben, ignoriert. Es wird in dem Fall nur eine Trace-Warnung ausgegeben.

Abfragen sind derzeit nicht sonderbar effizient, da immer alle Dateien vollständig gelesen werden. Es erfolgt nur eine Optimierung: Ein Filter auf Geometrien, wenn dieser nicht mit "OR" über andere Attribute verbunden ist, führt dies zum "ausdünnen" der Dateiliste.

Der EpsgCode des Layers ergibt sich aus dem der 1. GML Datei.

Es dürfen keine Dateitypen gemischt vorkommen. D.h. alle in der Collection befindlichen Quellen müssen den gleichen Root-Namespace haben. (z.B.: XPlanAuszug (http:://www.xplanung.de/xplangml/*)

Ladevorgang

Der Zugriff auf die Datei läuft immer wie folgt ab:

  • Einlesen des Stammelements, prüfen, ob der Typ bekannt ist
  • einmaliges Durchlesen der Datei, ermitteln der Boundingbox, die Epsg wird vom ersten Element verwendet (wenn nicht quickLoad=true ist)

Bei Quickload = false und mit vorhandener Symbolik dauert der Ladevorgang ca. 50ms für die Analyse, welche Elemente aus dem CSS tatsächlich vorhanden sind und ca. 50ms für das Lesen der Datei, also ca. eine ~1/10 Sekunde.

Bei der Verwendung mit Auflistungen für 40 (typische) XPlan Dateien also ca. 4 Sekunden.

Beispiel

{
"Xplan1": {
   "type": "GmlFile",
   "fileName":"d:\\temp\\test.gml",
   "quickLoad":false
  }
}

Standard-Symbolik (nur für XPlanung)

Für diesen Ebenentyp wird ein Standard-CSS gesucht. Dabei wird erst im Projektordner geschaut *1, dann im globalen Ordner*2.

Der Dateiname entspricht dabei dem Element-Typ, für XPlanAuszug entsprechend XPlanAuszug.css. Wird ein eigener Stil angegeben, wird der Standard ignoriert.

Es wird dabei zuerst nach einem Stil entsprechend der XPlan Version geschaut, dann nach einem Allgemeinen.

D.h.: {XPlanAuszug30.css|XPlanAuszug40.css|XPlanAuszug41.css} XPlanAuszug.css

Neben der Suche im lokalen Dateisystem wird auch Online nach einem CSS geschaut. Dabei findet ein http Zugriff auf die Domäne webs.idu.de statt (unter Beachtung des Standardproxys des Betriebssystems).

*1 siehe Element "workingDir" in der Datei .config

*2 siehe Element "workingDir" in der Datei $default.config (wenn leer, dann der Pfad der ausführbaren Datei)

Die Legende ist sehr groß, da alle Elemente enthalten sind. Wenn die Ebene indirekt über Iwan6 geladen wird, wird die Legende bereits beim Laden mit abgerufen.

Sie sollten daher quickLoad nicht mit false angegeben, außer, die Ebene soll wirklich nur für Abfragen verwendet werden.

RenderReader XPlan

Beim Zeichnen von XPlan Daten wird intern ein spezieller Reader verwendet, der die Daten entsprechend der Zeichenregeln versucht aufzubereiten.

Dabei werden folgende Regeln angewandt:

  • Gib die Reihenfolge der Elemente aus, so wie diese in der Reihenfolge im Element BP_Bereich, FP_Bereich oder SO_Bereich im Attribut inhaltBPlan (bzw. planinhalt) definiert ist.

  • Passe diese Reihenfolge dabei noch einmal so an, dass Punkt über Linien und Linien über Flächen fliegen.

    Ab Version 7.6.2.5 zusätzlich:

  • Ignoriere vorerst den Filter auf die Datenquelle, füge nur an, ob das Element gefiltert werden sollte.

  • Ermittle für alle Elemente, außer denen vom Typ XP_LPO,XP_PPO, XP_FPO, die über das Attribut wirdDargestelltDurch referenzierten Ausgestaltungselemente (in der angegebenen Reihenfolge), außer denen die vom evtl. angegebenen Filter betroffen sind.

    Der Umgang mit dem Filtern ist noch nicht optimal im Moment.

  • Beim Abrufen eines Datensatzes eines Elements, außer es ist vom o.g. Typ, der referenzierte Ausgestaltungselemente hat gelten folgende Regeln:

    • Wenn das Element vom Filter ausgeblendet sein würde, dann überspringe das Element, es sei denn es hat referenzierte Ausgestaltungselemente.

    • Gib den Objekt-Datensatz wie definiert zurück.

    • Gib im folgenden alle Datensätze der referenzierten Ausgestaltungselemente zurück, füge dabei das Ausgestaltungselement mit dem Objekt-Datensatz nach folgenden Regeln zusammen:

      • Behalte den Typ des Quell-Elements.
      • Nimm die Geometrie des Ausgestaltungselements.
      • Füge die Objekt-Eigenschaften (Attribut "Att") der beiden Elemente zu einem zusammen.
      • Gibt dieses zusammengeführte Objekt als Datensatz zurück.

      Bsp.:


      Quellobjekt

      TypeName: BP_GruenFlaeche

      Geom: MultiPolygon

      Att:

          "ebene" : "0",
          "gehoertZuBereich@href" : "#GML_f24cc8cf-f107-4110-bb90-0743f2a49951",
          "wirdDargestelltDurch@href" : "#GML_91877929-41c4-4adc-bf14-8e9192cbe411",
          "rechtscharakter" : "1000",
          "flaechenschluss" : "true",
          "nutzungsform" : "2000" 
       }
      

      Ausgestaltungelement

      TypeName : XP_PPO

      Geom : Point

      Att :

        "art" : "nutzungsform",
        "index" : "0",
        "gehoertZuBereich@href" : "#GML_f24cc8cf-f107-4110-bb90-0743f2a49951",
        "dientZurDarstellungVon@href" : "#GML_688f3ff1-d445-4989-85e6-5df57fa7a28c",
        "drehwinkel" : "0",
        "skalierung" : "1" 
      }
      

      Ergebnis

      TypeName : BP_GruenFlaeche

      Geom : Point

      Att :

        "art" : "nutzungsform",
        "index" : "0",
        "gehoertZuBereich@href" : "#GML_f24cc8cf-f107-4110-bb90-0743f2a49951",
        "dientZurDarstellungVon@href" : "#GML_688f3ff1-d445-4989-85e6-5df57fa7a28c",
        "drehwinkel" : "0",
        "skalierung" : "1",
        "rechtsstand" : "1000",
        "ebene" : "0",
        "gehoertZuBereich@href" : "#GML_f24cc8cf-f107-4110-bb90-0743f2a49951",
        "wirdDargestelltDurch@href" : "#GML_91877929-41c4-4adc-bf14-8e9192cbe411",
        "rechtscharakter" : "1000",
        "flaechenschluss" : "true",
        "nutzungsform" : "2000"
      }
      

Implementierungsdetails / Features und Einschränkungen

Die Datei wird bei jedem Zugriff neu eingelesen, ein Caching findet derzeit nicht statt.

Für die Abbildung der Struktur in eine Tabellenansicht werden folgende Spalten für die Quelle definiert:

  • GmlId (Char, 100, UniqueId) wird aus der gml:id des Features verwendet, es wird angenommen, dass der Wert eindeutig ist
  • TypeName (Char, 50): Der Name des Feature-Elementes
  • Position (Geometry): Die Haupt-Geometrie
  • Att (Object, BSON): Alle weiteren Attribute werden in dieser Spalte als Objekt abgebildet

Zusätzliche bei AX_NutzerbezogeneBestandsdatenaktualisierung_NBA

  • Op (Char, 10): "Insert", "Update", "Replace" oder "Delete"

Hinweis: Es wird kein Schema beim Auslesen verwendet, alle Attribute im Objekt sind vom Typ String.


Zuletzt geändert: 13.03.2024 12:40:13 (erstmals erstellt 17.08.2017)