19. Modul SHPOUT - ESRI Shapefile schreiben

19.1. Allgemeines

Mit dem Modul SHPOUT können Objekte in eine ESRI Shapefile Datei geschrieben werden.

Der Modul SHPOUT wird mit:

|INCL \script\shpout.mod

in einer ICS RUN1-Konfiguration verfügbar gemacht.

19.2. Abhängigkeiten von anderen Modulen

Keine Abhängigkeiten vorhanden.

19.3. Parametermap SHPOUT_PARAM

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

Parameterreq/optBeschreibung
FILEPREFIX_GEToON oder OFF, Default: OFF . Definiert ob ein Fileprefix interaktiv abgefragt werden soll.
FILEPREFIXoDefault: OFF . Definiert ob ein Fileprefix interaktiv abgefragt werden soll.
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.
DBF_DOSoON oder OFF. Falls ON gesetzt wird, werden DBF-Dateien im DOS-Zeichensatz geschrieben (ArcExlorer). Sonst wird der Windowszeichensatz verwendet (ArcView).
PRJ_FILEo<file>, Definiert ein *.prj Template-File mit dem Spatial Referenz System für die Shapefiles. Beispiele sind ILTOOLS_DIR\system\data\SHP_CH1903_LV03.prj und ILTOOLS_DIR\system\data\SHP_CH1903+_LV03.prj. Pfad kann relativ zu ILTOOLS_DIR angegeben werden.
CPG_FILEo<Codepage>, Definiert die Codepage (Zeichensatz) für die Sachdaten im dbf-File. Per Default 1252, der Windows-Zeichensatz. Notwendig ab ESRI 10.3/10.4 um z.B. Umlaute richtig darzustellen. Mit dem Wert OFF werden die cpg-Files nicht erzeugt Der Wert des Parameters wird in das cpg-File geschrieben..
DEBUGrON oder OFF, Default = OFF. Debugmodus ein oder aus.
STATISTICSrON oder OFF, Default = OFF. Objektstatistik am Ender der .log Datei anzeigen.

19.4. Objektmodell

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

Dateiname der Outputdatei ohne Endung .shp.

OUT.TYPE(s)rTyp des Outputobjekts (s.a. unten).
OUT.DIMENSION(s) r

Dimension der Ouputdatei (2D oder 3D).

Zusätzliche Komponenten für OUT.TYPE = 'DBF'

Ein OUT-Objekt vom Typ DBF erzeugt nur eine DBF-Datei.

Zusätzliche Komponenten für OUT.TYPE = 'NULL'

Ein OUT-Objekt vom Typ NULL erzeugt ein NULL-Objekt. Das NULL-Objekt hat keine spezifischen Komponenten.

Zusätzliche Komponenten für OUT.TYPE = 'POINT'
Komponentereq/optBeschreibung
OUT.GEOM(p) r

Punktkoordinate.

Zusätzliche Komponenten für OUT.TYPE = 'MULTIPOINT'
Komponentereq/optBeschreibung
OUT.GEOM(l) r

Liste aus Punktkoordinate(n).

Zusätzliche Komponenten für OUT.TYPE = 'POLYLINE'
Komponentereq/optBeschreibung
OUT.STROKE_TOL(r) r

Stroketoleranz. Löst alle Kreisbögen in einer Geometrie in Liniensegmente auf. Ein Kreisbogen wird gleichmässig in Liniensegemente aufgelöst, bis die Toleranz unterschritten ist.

Toleranz > 0.0

Die Toleranz ergibt sich aus dem Verhältnis der Pfeilhöhe zum Radius eines Kreisbogens.

Toleranz = 0.0

Der Kreisbogen wird in den Anfangs und Endpunkt und den Punkt auf dem Kreisbogen aufgelöst.

Toleranz < 0.0

Die Toleranz ist ein absoluter Wert in Meter, der die maximale Pfeilhöhe definiert.

OUT.GEOM(l)rLiniengeometrie.
Zusätzliche Komponenten für OUT.TYPE = 'POLYGON'
Komponentereq/optBeschreibung
OUT.STROKE_TOL(r)r

Stroketoleranz (s.a. POLYLINE).

OUT.GEOM(a)rFlächengeometrie.

19.5. Map für Textsignaturen

Obwohl das SHP Format keine Möglichkeit für die graphische Ausgabe von Text bietet, ist die Darstellung von Text mit SHPOUT trotzdem möglich (s.a. SHPOUT_WRITE_TEXT6). Dazu muss vorgängig die Map TEXT_SYMBOLOGY in der .cfg Datei wie folgt angelegt werden:

MAP TEXT_SYMBOLOGY
   ...
   <symbology> => <file>,<font>,<size>,<offset>,<xscale>,<slant>
   ...
END_MAP

Die einzelnen Parameter haben folgende Bedeutung:

<symbology>

Name der definierten Textsymbologie. Der Name der Symbologie muss SHPOUT_WRITE_TEXT6 als Argument übergeben werden.

<file>

Name der Outputdatei.

<font>

Name des Fonts. Der Font muss in ICS_DIR\font vorhanden sein.

<size>

Schrifthöhe in Benutzereinheiten.

<offset>

Abstand des der Beschriftungsposition vom Einfügepunkt. Der Abstand wird wie eine Punktkoordinate eingegeben, d.h. z.B. 0.0/1.5.

<xscale>

Skalierungsfakor in x-Richtung.

<slant>

Neigungswinkel in Altgrad.

19.6. Exportierte Prozeduren und Methoden

ProzedurSHPOUT_OPEN ! [s directory][]
BeschreibungÖffnet den SHPOUT Modul auf dem Dateiverzeichnis <directory>. Alle Outputdateien werden in das Verzeichnis <directory> geschrieben. Die Prozedur wird von RUN1 automatisch aufgerufen.
Beispiel
'c:\test' SHPOUT_OPEN
ProzedurSHPOUT_WRITE_DBF1 ! file
Beschreibung

Schreibt nur ein DBF-File. <file> muss ohne Endung und ohne Verzeichnis angegeben werden.

Beispiel
... => SHPOUT_WRITE_DBF1,record
ProzedurSHPOUT_WRITE_NULL1 ! file
Beschreibung

Schreibt ein NULL Objekt in die Datei <file>. <file> muss ohne Endung und ohne Verzeichnis angegeben werden.

Beispiel
... => SHPOUT_WRITE_NULL1,null_object
ProzedurSHPOUT_WRITE_POINT3 ! p position,s dimension,s file
Beschreibung

Schreibt ein POINT Objekt in die Datei <file>. Für eine Erklärung der einzelnen Parameter siehe Objektmodell.

Beispiel
... => SHPOUT_WRITE_POINT3,IN.GEOM,2D,point_object
ProzedurSHPOUT_WRITE_POLYLINE4 ! l geometry, s dimension, r stroktol, s file
Beschreibung

Schreibt ein POLYLINE Objekt in die Datei <file>. Für eine Erklärung der einzelnen Parameter siehe Objektmodell.

Beispiel
... => SHPOUT_WRITE_POLYLINE4,IN.GEOM,2D,0.01,line_object
ProzedurSHPOUT_WRITE_POLYGON4 ! a geometry, s dimension, r stroktol, s file
Beschreibung

Schreibt ein POLYGON Objekt in die Datei <file>. Für eine Erklärung der einzelnen Parameter siehe Objektmodell.

Beispiel
... => SHPOUT_WRITE_POLYGON4,IN.GEOM,2D,0.01,line_object
ProzedurSHPOUT_WRITE_TEXT6 ! s txt, p pos, r rot, i hali, i vali, s symbology
Beschreibung

Schreibt ein TEXT Objekt in die Datei <file>. Die einzelnen Paramter haben folgende Bedeutung:

<txt>

Textinhalt.

<pos>

Textposition.

<rot>

Textorientierung.

<hali>

Horizontale Textjustierung in der INTERLIS 1 Kodierung (Wertebereich: 0 .. 2).

<vali>

Vertikale Textjustierung in der INTERLIS 1 Kodierung (Wertebereich: 0 .. 4).

<symbology>

Für eine Erklärung des Symbologieparameterssiehe Objektmodell.

Beispiel
... => SHPOUT_WRITE_TEXT6,IN.TXT,IN.POS,IN.ORI,
       IN.HALI,IN.VALI,text_object
ProzedurSHPOUT_CLOSE ! [][]
BeschreibungSchliesst den Modul und gibt die durch den Modul belegten Resourcen wieder frei. Die Prozedur wird von RUN1 automatisch aufgerufen.
Beispiel
SHPOUT_CLOSE
MethodeSHPOUT.CREATE_FILE [s Datei,s Typ,s Dimension,m Attribute][]
BeschreibungErzeugt eine neue Shapedatei. Die einzelnen Parameter haben folgende Bedeutung: <Datei>: Name der Shapedatei ohne Endung. <Typ>: Objekttyp der Shapedatei (NULL, POINT, POLYLINE, POLYGON). <Dimension>: 2D oder 3D (ohne Bedeutung für NULL Objekte). <Attribute>: Map in welcher die Objektattribute beschrieben sind.
Beispiel
'Punkte' 'POINT' '2D' &POINT_REC SHPOUT.CREATE_FILE

19.7. Skriptbeispiel

! Diese ICS Konfiguration kopiert alle von shpin.mod
! gelesenen Objekte mit shpout.mod in in eine .shp Datei.

|LICENSE \license\iltools.lic

MAP USER_INPUT1
   DIALOG => FILE ! FILE | FILES | DIRECTORY | STRING | ODBC
   MESSAGE => 'Enter .shp Input File'
   FILE_FILTER => shp
   FILE_EXISTS => TRUE
   OPT => input
END_MAP

MAP USER_INPUT2
   DIALOG => DIRECTORY ! FILE | FILES | DIRECTORY | STRING | ODBC
   MESSAGE => 'Enter .shp Output Directory'
   FILE_FILTER => *
   OPT => output
END_MAP

MAP SHPIN_PARAM
   STATISTICS => ON
   DEBUG      => OFF
END_MAP

MAP SHPOUT_PARAM
   STATISTICS => ON
   PRJ_FILE => \data\SHP_CH1903_LV03.prj
   DEBUG      => OFF
END_MAP

MAP INPUT_SOURCES
   I1 => SHPIN,OPT.input
END_MAP

MAP INOUT
   I1 => COPY_INOUT0
END_MAP

|INCL \script\shpin.mod
|INCL \script\shpout.mod

PROCEDURE COPY_INOUT0
   ! copy IN map
   &IN &OUT MAPCOPY
   ! copy all attributes
   &SHPIN_REC &SHPOUT_REC MAPCOPY
   SHPOUT_WRITE_OBJECT
END_PROCEDURE

|INCL \script\run1.prg