7. Modul GEOJSONOUT - GeoJSON schreiben

7.1. Allgemeines

Mit dem Modul GEOJSONOUT können Objekte in eine GeoJSON Datei geschrieben werden.Mit dem Modul können auch JSON Dateien geschrieben werden, die keine Erweiterungen für GeoJSON enthalten.

Der Modul GEOJSONOUT wird mit:

|INCL \script\geojsonout.mod

in einer ICS RUN1-Konfiguration verfügbar gemacht.

7.2. Abhängigkeiten von anderen Modulen

Keine Abhängigkeiten vorhanden.

7.3. Parametermap GEOJSONOUT_PARAM

Folgende Parameter können in der Map SHPOUT_PARAM für den Modul gesetzt werden:

Parameterreq/optBeschreibung
CRSoEPSG:2056, Default: EPSG:2056 . Definiert das Koordinaten Referenz System..
STROKE_TOLr<real> . Stroke-Tolerance zur Auflösung von Kreisbögen in Liniensegmente. Als Stroke-Tolerance können dieselben Werte wie für die ICS-Methode ICS.STROKE verwendet werden (s.a. iG/Script Benutzer- und Referenzhandbuch). Mit OFF werden die Kreisbögen nicht aufgelöst.
STATISTICSoON oder OFF, Default = OFF. Objektstatistik am Ender der .log Datei anzeigen.

7.4. Objektmodell

Allgemeine Komponenten für jedes OUT-Objekt
Komponentereq/optBeschreibung
OUT.GEOJSON_NAME(s) o

Der Name des GeoJSON-Objektes.

OUT.GEOJSON_ID(s)oDie ID des GeoJSON-Objektes.
OUT.GEOJSON_GEOMETRY(g) o

Die Geometrie des GeoJSON-Objektes.

OUT.<attribute>(*) o

Weitere Objekte des JSON-Objektes.

7.5. Exportierte Prozeduren und Methoden

ProzedurGEOJSONOUT_OPEN ! [s zipfile][]
BeschreibungÖffnet den GEOJSONOUT Modul. Der Output wird in die ZIP-Datei geschrieben. Die Prozedur wird von RUN1 automatisch aufgerufen.
Beispiel
'c:\test.zip' GEOJSONOUT_OPEN
ProzedurGEOJSONOUT_WRITE_OBJECT0 ! [] []
Beschreibung

Schreibt ein Objekt. Für eine Erklärung der einzelnen Komponenten siehe Objektmodell.

Beispiel
GEOJSONOUT_WRITE_OBJECT0
ProzedurGEOJSONOUT_CLOSE ! [][]
BeschreibungSchliesst den Modul und gibt die durch den Modul belegten Resourcen wieder frei. Die Prozedur wird von RUN1 automatisch aufgerufen.
Beispiel
GEOJSONOUT_CLOSE

7.6. Skriptbeispiel

! Diese ICS Konfiguration schreibt INTERLIS AV Daten in eine GeoJSON Datei

|LICENSE \license\iltools.lic

MAP USER_INPUT1
   DIALOG => FILE
   MESSAGE => 'Enter .itf Input File'
   FILE_FILTER => itf
   FILE_EXISTS => TRUE
   OPT => input
END_MAP

MAP USER_INPUT2
   DIALOG => FILE
   MESSAGE => 'Enter ZIP Output File'
   FILE_FILTER => zip
   FILE_EXISTS => FALSE
   OPT => output
END_MAP

MAP ILIN_PARAM
   INTERLIS_DEF => ''
   LOG_TABLE => ON
   TRACE => OFF
   STATISTICS => ON
   CALC_SURFACE => ON
   ENUM_TO_TEXT => ON
   BUILD_DB => ON
END_MAP

MAP ILIN_TOPO
   Liegenschaften,Liegenschaft_Geometrie => AREA
   DEFAULT => OFF
END_MAP

MAP GEOJSONOUT_PARAM
   STATISTICS     => ON
   FENCE_MODE     => OFF
   STROKE_TOL     => 0.001
   CRS            => EPSG:2056 
END_MAP

MAP INPUT_SOURCES
   I1 => ILTOPO,OPT.input
END_MAP

MAP INOUT
   I1 => IN.TOPIC,IN.TABLE
   I1,Liegenschaften,Grundstueck => GEOJSONOUT_WRITE_OBJECT0
   I1,Liegenschaften,GrundstueckPos => GEOJSONOUT_WRITE_OBJECT0
   I1,Liegenschaften,Liegenschaft_Geometrie => GEOJSONOUT_WRITE_OBJECT0
   I1,Liegenschaften,Liegenschaft => GEOJSONOUT_WRITE_OBJECT0
   I1,Liegenschaften,Liegenschaft_Area => GEOJSONOUT_WRITE_OBJECT0
   I1,Liegenschaften,Liegenschaft_Boundary => GEOJSONOUT_WRITE_OBJECT0
   I1,* => OFF
END_MAP

PROCEDURE POST_READ_I1

   ! allgemeine Trigger-Procedure, die automatisch nach jedem Lesen der Input-Source I1 aufgerufen wird (hier INTERLIS-Objekte)
   ! aus dem IN-Objekt wird das OUT-Objekt erstellt
   ! das OUT-Objekt wird dann geschrieben mit GEOJSONOUT_WRITE_OBJECT0 

   &IN &OUT MAPCOPY

   IF IN.TABLE '_Area' ENDS_WITH THEN
      &OUT 'Geometrie' MAPREM POP
   END_IF

   OUT.TOPIC . '_' . OUT.TABLE      => OUT.GEOJSON_NAME
   OUT.GEOSHOP_ID                   => OUT.GEOJSON_ID

   &OUT MAPRESET
   WHILE &OUT MAPSCAN DO
      => LOCAL.NAME
      => LOCAL.VALUE

      IF LOCAL.VALUE IS_NULL THEN CONTINUE END_IF

      &LOCAL.VALUE GET_TYPE => LOCAL.TYPE

      IF LOCAL.TYPE = 'point' 
         LOCAL.TYPE = 'line'  OR 
         LOCAL.TYPE = 'area'  OR THEN

         &OUT 'GEOJSON_GEOMETRY' LOCAL.VALUE MAPINS
      END_IF

   END_WHILE

END_PROCEDURE

MAP MACRO
END_MAP

|INCL \script\iltopodb.mod
|INCL \script\geojsonout.mod
|INCL \script\run1.prg