Aus Well-Known Text- und Well-Known Binary-Daten generierte ST_Geometry

Konvertieren von Geometrie in den Typ "ST_Geometry" in Oracle

Nachfolgend finden Sie eine Beschreibung räumlicher Datenformate und der Konvertierung zwischen ihnen und dem räumlichen Datentyp für Oracle.

OGC Well-Known Text-Format

Das Well-Known Text (WKT)-Format ist eine formatierte ASCII-Textzeichenfolge, die ermöglicht, dass Geometrie in ASCII-Textform ausgetauscht wird. Sie können diese Funktionen in einem Sprachprogramm der dritten oder vierten Generation (3GL oder 4GL) verwenden, da sie keine Definition besonderer Programmstrukturen benötigen.

Der räumliche Datentyp verfügt über mehrere Funktionen, die Geometrien aus Textbeschreibungen generieren. Dazu gehören folgende Funktionen:

  • ST_GeomFromText – Erstellt eine ST_Geometry aus einem WKT-Format eines beliebigen Geometrietyps
  • ST_PointFromText – Erstellt einen ST_Point aus einem Punkt-WKT-Format
  • ST_LineFromText – Erstellt einen ST_LineString aus einem Linestring-WKT-Format
  • ST_PolyFromText – Erstellt ein ST_Polygon aus einem Polygon-WKT-Format
  • ST_MPointFromText – Erstellt einen ST_MultiPoint aus einem Multipoint-WKT-Format
  • ST_MLineFromText – Erstellt einen ST_MultiLineString aus einem Multilinestring-WKT-Format
  • ST_MPolyFromText – Erstellt ein ST_MultiPolygon aus einem Multipolygon-WKT-Format

Die Funktion "ST_AsText" konvertiert eine vorhandene Geometrie in ein WKT-Format.

Verwenden des Well-Known Text-Formats in einem C-Programm

Das WKT-Format der Geometrie kann in C-Programme integriert werden. Die Struktur solch einer Implementierung ist unten definiert. Die Notation {}* gibt 0 (null) oder mehr Wiederholungen der Token innerhalb der geschweiften Klammern an. Die geschweiften Klammern werden nicht in der Ausgabe-Token-Liste angezeigt.

<Geometry Tagged Text> :=
| <Point Tagged Text> 
| <LineString Tagged Text>
| <Polygon Tagged Text>
| <MultiPoint Tagged Text>
| <MultiLineString Tagged Text>
| <MultiPolygon Tagged Text> 

<Point Tagged Text> := 
POINT <Point Text> 

<LineString Tagged Text> := 
LINESTRING <LineString Text> 

<Polygon Tagged Text> := 
POLYGON <Polygon Text> 

<MultiPoint Tagged Text> :=  
MULTIPOINT <Multipoint Text> 

<MultiLineString Tagged Text> := 
MULTILINESTRING <MultiLineString Text> 

<MultiPolygon Tagged Text> := 
MULTIPOLYGON <MultiPolygon Text> 

<Point Text> := EMPTY 
|    <Point> 
| Z  <PointZ> 
| M  <PointM>
| ZM <PointZM>

<Point> :=  <x>  <y> 
<x> := double precision literal
<y> := double precision literal

<PointZ> :=  <x>  <y>  <z> 	
<x> := double precision literal
<y> := double precision literal
<z> := double precision literal

<PointM> :=  <x>  <y>  <m> 
<x> := double precision literal
<y> := double precision literal
<m> := double precision literal

<PointZM> :=  <x>  <y>  <z>  <m> 
<x> := double precision literal
<y> := double precision literal
<z> := double precision literal
<m> := double precision literal

<LineString Text> := EMPTY
|    ( <Point Text >   {,  <Point Text> }*  )
| Z  ( <PointZ Text >  {,  <PointZ Text> }*  )
| M  ( <PointM Text >  {,  <PointM Text> }*  )
| ZM ( <PointZM Text > {,  <PointZM Text> }*  )

<Polygon Text> := EMPTY 
| ( <LineString Text > {,< LineString Text > }*)

<Multipoint Text> := EMPTY 
| ( <Point Text >   {,  <Point Text > }*  )

<MultiLineString Text> := EMPTY 
| ( <LineString Text > {,< LineString Text>}*  )

<MultiPolygon Text> := EMPTY 
| ( < Polygon Text > {,  < Polygon Text > }*  )

Verwenden des Well-Known Text-Formats in einem SQL-Editor

Da das Well-Known Text-Format Text ist, kann es bequem in ein SQL-Skript oder direkt in einen SQL-Editor eingegeben werden. Der Text wird von einer Funktion in und aus einer Geometrie konvertiert. Funktionen, die Text in Geometrie konvertieren, verfügen über die folgende Syntax:

function ('<text description>',<SRID>)

Beispiele:

ST_PointFromText('point zm(10.01 20.04 3.2 9.5)', 1)

Die Raumbezugskennung (SRID) – der Primärschlüssel zur Tabelle ST_SPATIAL_REFERENCES – identifiziert die möglichen Raumbezugssysteme innerhalb einer Oracle-Instanz. Einer räumlichen Spalte wird beim Erstellen eine SRID zugewiesen. Bevor eine Geometrie in eine räumliche Spalte eingefügt werden kann, muss ihre SRID mit der SRID der räumlichen Spalte übereinstimmen.

Die Textbeschreibung besteht aus drei grundlegenden, in einfache Anführungszeichen eingeschlossenen Komponenten:

'<geometry type> [coordinate type] [coordinate list]'

Der Geometrietyp wird als einer der Folgenden definiert: Point, Linestring, Polygon, Multipoint, Multilinestring oder Multipolygon.

Der Koordinatentyp gibt an, ob die Geometrie Z-Koordinaten und/oder Messwerte hat. Lassen Sie dieses Argument leer, wenn die Geometrie keines von beiden hat; setzen Sie den Koordinatentyp andernfalls auf Z für Geometrien, die Z-Koordinaten enthalten, M für Geometrien mit Messwerten und ZM für Geometrien, die beides haben.

Die Koordinatenliste definiert die Stützpunkte der Geometrie mit doppelter Genauigkeit. Koordinatenlisten sind durch Kommas getrennt und in Klammern eingeschlossen. Geometrien mit mehreren Komponenten erfordern Klammerpaare, die jede Komponente einschließen. Wenn die Geometrie leer ist, ersetzt das Schlüsselwort EMPTY die Koordinaten.

In den folgenden Beispielen wird eine vollständige Liste aller möglichen Kombinationen des Textbeschreibungsteils des Textformats bereitgestellt:

Geometrietyp

Textbeschreibung

Anmerkung

ST_Point

'point empty'

Leerer Punkt

ST_Point

'point z empty'

Leerer Punkt mit Z-Koordinate

ST_Point

'point m empty'

Leerer Punkt mit Messwert

ST_Point

'point zm empty'

Leerer Punkt mit Z-Koordinate und Messwert

ST_Point

'point ( 10.05 10.28 )'

Punkt

ST_Point

'point z( 10.05 10.28 2.51 )'

Punkt mit Z-Koordinate

ST_Point

'point m( 10.05 10.28 4.72 )'

Punkt mit Messwert

ST_Point

'point zm(10.05 10.28 2.51 4.72 )'

Punkt mit Z-Koordinate und Messwert

ST_LineString

'linestring empty'

Leerer Linestring

ST_LineString

'linestring z empty'

Leerer Linestring mit Z-Koordinaten

ST_LineString

'linestring m empty'

Leerer Linestring mit Messwerten

ST_LineString

'linestring zm empty'

Leerer Linestring mit Z-Koordinaten und Messwerten

ST_LineString

'linestring (10.05 10.28 , 20.95 20.89 )'

Linestring

ST_LineString

'linestring z(10.05 10.28 3.09, 20.95 31.98 4.72, 21.98 29.80 3.51 )'

Linestring mit Z-Koordinaten

ST_LineString

'linestring m(10.05 10.28 5.84, 20.95 31.98 9.01, 21.98 29.80 12.84 )'

Linestring mit Messwerten

ST_LineString

'linestring zm(10.05 10.28 3.09 5.84, 20.95 31.98 4.72 9.01, 21.98 29.80 3.51 12.84)'

Linestring mit Z-Koordinaten und Messwerten

ST_Polygon

'polygon empty'

Leeres Polygon

ST_Polygon

'polygon z empty'

Leeres Polygon mit Z-Koordinaten

ST_Polygon

'polygon m empty'

Leeres Polygon mit Messwerten

ST_Polygon

'polygon zm empty'

Leeres Polygon mit Z-Koordinaten und Messwerten

ST_Polygon

'polygon ((10 10, 10 20, 20 20, 20 15, 10 10))'

Polygon

ST_Polygon

'polygon z((10 10 3, 10 20 3, 20 20 3, 20 15 4, 10 10 3))'

Polygon mit Z-Koordinaten

ST_Polygon

'polygon m((10 10 8, 10 20 9, 20 20 9, 20 15 9, 10 10 8 ))'

Polygon mit Messwerten

ST_Polygon

'polygon zm((10 10 3 8, 10 20 3 9, 20 20 3 9, 20 15 4 9, 10 10 3 8 ))'

Polygon mit Z-Koordinaten und Messwerten

ST_MultiPoint

'multipoint empty'

Leerer Multipoint

ST_MultiPoint

'multipoint z empty'

Leerer Multipoint mit Z-Koordinaten

ST_MultiPoint

'multipoint m empty'

Leerer Multipoint mit Messwerten

ST_MultiPoint

'multipoint zm empty'

Leerer Multipoint mit Z-Koordinaten und Messwerten

ST_MultiPoint

'multipoint (10 10, 20 20)'

Multipoint mit zwei Punkten

ST_MultiPoint

'multipoint z(10 10 2, 20 20 3)'

Multipoint mit Z-Koordinaten

ST_MultiPoint

'multipoint m(10 10 4, 20 20 5)'

Multipoint mit Messwerten

ST_MultiPoint

'multipoint zm(10 10 2 4, 20 20 3 5)'

Multipoint mit Z-Koordinaten und Messwerten

ST_MultiLineString

'multilinestring empty'

Leerer Multilinestring

ST_MultiLineString

'multilinestring z empty'

Leerer Multilinestring mit Z-Koordinaten

ST_MultiLineString

'multilinestring m empty'

Leerer Multilinestring mit Messwerten

ST_MultiLineString

'multilinestring zm empty'

Leerer Multilinestring mit Z-Koordinaten und Messwerten

ST_MultiLineString

'multilinestring ((10.05 10.28 , 20.95 20.89 ),( 20.95 20.89, 31.92 21.45))'

Multilinestring

ST_MultiLineString

'multilinestring z((10.05 10.28 3.4, 20.95 20.89 4.5),( 20.95 20.89 4.5, 31.92 21.45 3.6))'

Multilinestring mit Z-Koordinaten

ST_MultiLineString

'multilinestring m((10.05 10.28 8.4, 20.95 20.89 9.5), (20.95 20.89 9.5, 31.92 21.45 8.6))'

Multilinestring mit Messwerten

ST_MultiLineString

'multilinestring zm((10.05 10.28 3.4 8.4, 20.95 20.89 4.5 9.5), (20.95 20.89 4.5 9.5, 31.92 21.45 3.6 8.6))'

Multilinestring mit Z-Koordinaten und Messwerten

ST_MultiPolygon

'multipolygon empty'

Leeres Multipolygon

ST_MultiPolygon

'multipolygon z empty'

Leeres Multipolygon mit Z-Koordinaten

ST_MultiPolygon

'multipolygon m empty'

Leeres Multipolygon mit Messwerten

ST_MultiPolygon

'multipolygon zm empty'

Leer

ST_MultiPolygon

'multipolygon (((10 10, 10 20, 20 20, 20 15 , 10 10), (50 40, 50 50, 60 50, 60 40, 50 40)))'

Multipolygon

ST_MultiPolygon

'multipolygon z(((10 10 7, 10 20 8, 20 20 7, 20 15 5, 10 10 7), (50 40 6, 50 50 6, 60 50 5, 60 40 6, 50 40 6)))'

Multipolygon mit Z-Koordinaten

ST_MultiPolygon

'multipolygon m(((10 10 2, 10 20 3, 20 20 4, 20 15 5, 10 10 2), (50 40 7, 50 50 3, 60 50 4, 60 40 5, 50 40 7)))'

Multipolygon mit Messwerten

ST_MultiPolygon

'multipolygon zm(((10 10 7 2, 10 20 8 3, 20 20 7 4, 20 15 5 5, 10 10 7 2), (50 40 6 7, 50 50 6 3, 60 50 5 4, 60 40 6 5, 50 40 6 7)))'

Multipolygon mit Z-Koordinaten und Messwerten

Alle möglichen Kombinationen des Textbeschreibungsteils des Textformats

OGC Well-Known Binary-Format

Das Well-known Binary-Format für Geometrie ist Teil der Simple Features-Spezifikation des Open Geospatial Consortium (OGC). Diese implementiert ein einfaches Speichermodell für Punkt-, Linien- und Polygon-Features mit X/Y-Koordinaten. Es bietet eine übertragbare Darstellung eines Geometriewerts in Form eines zusammenhängenden Datenstroms. Auf diese Weise können Geometriewerte zwischen einem ODBC-Client und einer Datenbank im Binärformat ausgetauscht werden. Sie werden dabei nicht komprimiert.

Der Typ "ST_Geometry" für Oracle verfügt über mehrere Funktionen, die Geometrien aus Well-Known Binary-Formaten (WKB) generieren. Dazu gehören folgende Funktionen:

  • ST_GeomFromWKB – Erstellt eine ST_Geometry aus einem WKB-Format eines beliebigen Geometrietyps
  • ST_PointFromWKB – Erstellt einen ST_Point aus einem Punkt-WKB-Format
  • ST_LineFromWKB – Erstellt einen ST_LineString aus einem Linestring-WKB-Format
  • ST_PolyFromWKB – Erstellt ein ST_Polygon aus einem Polygon-WKB-Format
  • ST_MPointFromWKB – Erstellt einen ST_MultiPoint aus einem Multipoint-WKB-Format
  • ST_MLineFromWKB – Erstellt einen ST_MultiLineString aus einem Multilinestring-WKB-Format
  • ST_MPolyFromWKB – Erstellt ein ST_MultiPolygon aus einem Multipolygon-WKB-Format
HinweisHinweis:

Diese Geometriefunktionen erfordern die Definition von C-Strukturen, um das binäre Format zuzuordnen. Sie sind für die Verwendung in einem 3GL-Programm vorgesehen und werden nicht an eine 4GL-Umgebung gepasst.

Die Funktion ST_AsBinary konvertiert einen vorhandenen Geometriewert in ein Well-Known Binary-Format.

Weitere Informationen zum Well-Known Binary-Format finden Sie unter Das OGC-Well-Known Binary-Format für Geometrie.


7/10/2012