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.
Folgende Parameter können in der Map SHPOUT_PARAM
für den Modul gesetzt werden:
| Parameter | req/opt | Beschreibung |
CRS | o | EPSG:2056, Default:
EPSG:2056 . Definiert das Koordinaten Referenz
System.. |
STROKE_TOL | r | <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. |
STATISTICS | o | ON oder OFF, Default
= OFF. Objektstatistik am Ender der .log Datei
anzeigen. |
| Komponente | req/opt | Beschreibung |
OUT.GEOJSON_NAME(s) | o | Der Name des GeoJSON-Objektes. |
OUT.GEOJSON_ID(s) | o | Die ID des GeoJSON-Objektes. |
OUT.GEOJSON_GEOMETRY(g) | o | Die Geometrie des GeoJSON-Objektes. |
OUT.<attribute>(*) | o | Weitere Objekte des JSON-Objektes. |
| Prozedur | GEOJSONOUT_OPEN ! [s zipfile][] |
| Beschreibung | Öffnet den GEOJSONOUT Modul. Der Output wird in die ZIP-Datei geschrieben. Die Prozedur wird von RUN1 automatisch aufgerufen. |
| Beispiel | |
| Prozedur | GEOJSONOUT_WRITE_OBJECT0 ! [] [] |
| Beschreibung | Schreibt ein Objekt. Für eine Erklärung der einzelnen Komponenten siehe Objektmodell. |
| Beispiel | |
| Prozedur | GEOJSONOUT_CLOSE ! [][] |
| Beschreibung | Schliesst den Modul und gibt die durch den Modul belegten Resourcen wieder frei. Die Prozedur wird von RUN1 automatisch aufgerufen. |
| Beispiel | |
! 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