ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • Hilfe
  • Sign Out
ArcGIS Desktop

ArcGIS Online

Die Mapping-Plattform für Ihre Organisation

ArcGIS Desktop

Ein vollständiges professionelles GIS

ArcGIS Enterprise

GIS in Ihrem Unternehmen

ArcGIS Developers

Werkzeuge zum Erstellen standortbezogener Apps

ArcGIS Solutions

Kostenlose Karten- und App-Vorlagen für Ihre Branche

ArcGIS Marketplace

Rufen Sie Apps und Daten für Ihre Organisation ab.

  • Dokumentation
  • Support
Esri
  • Anmelden
user
  • Eigenes Profil
  • Abmelden

ArcMap

  • Startseite
  • Erste Schritte
  • Karte
  • Analysieren
  • Daten verwalten
  • Werkzeuge
  • Erweiterungen

Der Speichertyp "ST_Geometry"

  • Subclasses
  • "ST_Geometry"-Funktionsaufrufe
  • Wie wird "ST_Geometry" implementiert?

Der Datentyp "ST_Geometry" implementiert die SQL 3-Spezifikation benutzerdefinierter Datentypen (UDTs) und ermöglicht es Ihnen, Spalten zu erstellen, die zum Speichern von räumlichen Daten wie der Lage eines Orientierungspunktes, einer Straße oder eines Flurstückes geeignet sind. Er stellt den International Organization for Standards (ISO)- und Open Geospatial Consortium, Inc. (OGC)-kompatiblen SQL-Zugriff (Structured Query Language) auf die Geodatabase und die Datenbank bereit. Dieser Speichertyp erweitert die Funktionen der Datenbank, indem er die Speicherung von Objekten (Punkte, Linien und Polygone) ermöglicht, die geographische Features darstellen. Er wurde für die effiziente Verwendung von Datenbankressourcen, die Kompatibilität mit Datenbank-Features, wie z. B. Replikation und Partitionierung, und den schnellen Zugriff auf räumliche Daten entwickelt.

Esri hat den Typ "ST_Geometry" in Oracle, PostgreSQL und SQLite implementiert. Dieser Datentyp "ST_Geometry" wird in der ArcGIS-Hilfe erklärt.

"ST_Geometry" selbst ist eine abstrakte, nicht instanziierte übergeordnete Objektklasse. Ihre Subclasses können jedoch instanziiert sein. Bei einem instanziierten Datentyp handelt es sich um einen Datentyp, der als Tabellenspalte definiert werden kann und darin eingefügte Werte seines Typs aufweisen kann.

Eine Spalte kann zwar als Typ "ST_Geometry" definiert werden, es werden jedoch keine ST_Geometry-Werte in die Spalte eingefügt, da sie nicht instanziiert werden kann. Stattdessen werden die Subclass-Werte eingefügt.

Im folgenden Diagramm wird die Hierarchie des Datentyps "ST_Geometry" und seiner Subclasses veranschaulicht:

ST_Geometry
Die übergeordnete Objektklasse "ST_Geometry" und ihre Subclasses

Subclasses

Die Subclasses von "ST_Geometry" sind in zwei Kategorien unterteilt: die Subclasses der Basisgeometrie und die Subclasses der homogenen Sammlung. Die Basisgeometrien umfassen "ST_Point", "ST_LineString" und "ST_Polygon", während die homogene Sammlung "ST_MultiPoint", "ST_MultiLineString" und "ST_MultiPolygon" umfasst. Wie der Name schon besagt, handelt es sich bei den homogenen Sammlungen um Sammlungen der Basisgeometrien. Homogene Sammlungen weisen neben den mit der Basisgeometrie gemeinsamen Eigenschaften auch eigene Eigenschaften auf.

Jede Subclass speichert den durch ihren Namen implizierten Geometrietyp: "ST_MultiPoint" speichert beispielsweise Multipoints. In der folgenden Tabelle finden Sie eine Liste mit den Subclasses und die dazugehörigen Beschreibungen:

SubtypeBeschreibung

ST_Point

  • Eine nulldimensionale Geometrie, die eine einzelne Position in einem Koordinatenbereich einnimmt.
  • Besitzt einen XY-Koordinatenwert, ist immer eine einfache Geometrie und weist eine NULL-Grenze auf.

ST_LineString

  • Ein eindimensionales Objekt, das als Folge von Punkten gespeichert ist und einen linearen interpolierten Pfad definiert.
  • "ST_LineStrings" besitzen eine Länge.
  • Der "ST_LineString" besitzt eine einfache Geometrie, wenn er seinen Innenbereich nicht schneidet.
  • Die Endpunkte (Grenze) eines geschlossenen "ST_LineString" nehmen denselben Punkt im Raum ein.
  • Ein "ST_LineString" ist ein Ring, wenn er geschlossen ist und eine einfache Geometrie aufweist.
  • Die Endpunkte bilden im Normalfall die Grenze eines "ST_LineString". Wenn der "ST_LineString" geschlossen ist, ist die Grenze jedoch NULL.
  • Der Innenbereich eines "ST_LineString" ist der verbundene Pfad, der zwischen den Endpunkten liegt. Wenn er geschlossen ist, gibt es einen durchgehenden Innenbereich.

ST_Polygon

  • Eine zweidimensionale Oberfläche, die als Folge von Punkten gespeichert ist und den umfassenden äußeren Ring sowie null oder mehr innere Ringe definiert.
  • "ST_Polygon" weist eine Fläche auf und ist immer eine einfache Geometrie.
  • Der äußere und alle inneren Ringe definieren die Grenze eines "ST_Polygon". Der Raum, der zwischen den Ringen eingeschlossen ist, definiert den Innenbereich des "ST_Polygon".
  • Die Ringe eines "ST_Polygon" dürfen sich an einem Tangentenpunkt schneiden, jedoch nicht kreuzen.

ST_MultiPoint

  • Eine Sammlung von ST_Points.
  • Weist die Dimension 0 auf.
  • Ein "ST_MultiPoint" ist einfach, wenn keines seiner Elemente den gleichen Koordinatenbereich einnimmt.
  • Die Grenze eines "ST_MultiPoint" beträgt NULL.

ST_MultiLineString

  • Eine Sammlung von ST_LineStrings.
  • "ST_MultiLineStrings" besitzen eine Länge.
  • "ST_MultiLineStrings" sind einfach, wenn sich nur die Endpunkte der "ST_LineString"-Elemente schneiden.
  • "ST_MultiLineStrings" sind komplex, wenn sich die Innenbereiche der "ST_LineString"-Elemente schneiden.
  • Die Grenze eines "ST_MultiLineString" bilden die Endpunkte der "ST_LineString"-Elemente, die nicht geschnitten werden.
  • Der "ST_MultiLineString" ist geschlossen, wenn alle "ST_LineString"-Elemente geschlossen sind.
  • Die Grenze eines "ST_MultiLineString" ist NULL, wenn alle Endpunkte aller Elemente geschnitten werden.

ST_MultiPolygon

  • Eine Sammlung von Polygonen.
  • "ST_MultiPolygons" besitzen eine Fläche.
  • Die Grenze eines ST_MultiPolygon ist die kumulative Länge der äußeren und inneren Ringe seiner Elemente.
  • Der Innenbereich eines "ST_MultiPolygon" ist als die kumulativen Innenbereiche der zugehörigen "ST_Polygon"-Elemente definiert.
  • Die Grenzen der Elemente eines "ST_MultiPolygon" dürfen sich nur an einem Tangentenpunkt schneiden.

ST_Geometry-Subtypes

Beachten Sie, dass jede Subclass die Eigenschaften der übergeordneten Objektklasse "ST_Geometry" erbt, aber auch über eigene Eigenschaften verfügt. Bei Funktionen, die für den Datentyp "ST_Geometry" verwendet werden können, sind alle Subclass-Entitätstypen zulässig. Einige Funktionen wurden jedoch auf Subclass-Ebene definiert und nehmen nur bestimmte Subclasses an. Die Funktion "ST_GeometryN" akzeptiert beispielsweise nur die Subtype-Werte "ST_MultiLinestring", "ST_MultiPoint" oder "ST_MultiPolygon" als Eingabe.

Um die Subclass einer "ST_Geometry" zu ermitteln, können Sie die Funktion "ST_GeometryType" verwenden. Die Funktion "ST_GeometryType" gibt für eine "ST_Geometry" die instanziierte Subclass in der Form einer Zeichenfolge zurück. Um zu ermitteln, wie viele Basisgeometrieelemente in einer homogenen Sammlung enthalten sind, können Sie die Funktion "ST_NumGeometries" verwenden, die eine homogene Sammlung annimmt und die Anzahl der enthaltenen Basisgeometrieelemente zurückgibt.

"ST_Geometry"-Funktionsaufrufe

"ST_Geometry"-Funktionen in Oracle und PostgreSQL werden in SQL implementiert. Dies ist eine Sprache auf Datenbankebene. In Oracle ist dies die Procedural Language Structured Query Language (PL/SQL). In PostgreSQL ist dies "PL/pgSQL".

Sie greifen direkt auf die Datenbank zu, wenn Sie mit SQL-Funktionen auf ST_Geometry-Spalten in Oracle oder PostgreSQL zugreifen; die Datenbank muss deshalb auf die ST_Geometry-Bibliothek zugreifen können. In Oracle erzeugt die Datenbank außerdem einen "extproc"-Prozess.

In SQLite werden ST_Geometry-Funktionen in der ST_Geometry-Bibliothek in C implementiert. Sie müssen die ST_Geometry-Bibliothek aufrufen, um die ST_Geometry-Funktionen zu verwenden.

Oracle

Die Funktionen sind in PL/SQL implementiert. Bei dieser Sprache werden Funktionen in externen freigegebenen Bibliotheksdateien aufgerufen, die in der Programmiersprache C geschrieben wurden. Die Funktionen werden von PL/SQL mittels eines Aliasnamens abgerufen, der den Namen der Bibliothek (bei "ST_Geometry" in Oracle ist dies "st_shapelib") mit dem Namen der Bibliotheksdatei verknüpft. (Weitere Informationen zum Oracle-Befehl CREATE LIBRARY finden Sie in der Dokumentation.) Wenn eine Spatial Type-Funktion, die "st_shapelib" erfordert, zum ersten Mal aufgerufen wird, fordert die Datenbank den Listener auf, einen "extproc"-Vorgang für die SQL-Sitzung zu erstellen. Extproc erhält den Speicherort von "st_shapelib", den Namen der aufgerufenen Funktion und die entsprechenden Parameter. Extproc lädt "st_shapelib" und ruft die Funktion auf. Wenn die externe Funktion abgeschlossen ist, gibt extproc die Ergebnisse zurück, bleibt weiterhin aktiv und wartet auf weitere Funktionsaufrufe während dieser Sitzung. Der extproc-Vorgang wird beendet, wenn die SQL-Sitzung getrennt wird.

Dies erfordert die folgende Konfiguration:

  • Die Datenbank benötigt den Speicherort der Datei, die "st_shapelib" enthält, damit sie diese Informationen an den Listener-Vorgang und an extproc weiterleiten kann.
  • Wenn die Angabe unter "file_spec" für "st_shapelib" in der Tabelle "user_libraries" nicht mit dem physischen Dateispeicherort von "st_shapelib" auf dem Server übereinstimmt, funktionieren "ST_Geometry"-Operatoren und -Funktionen nicht. Aus diesem Grund müssen Sie die Bibliotheksdefinition in den Oracle-Benutzerbibliotheken aktualisieren, damit diese den richtigen Bibliothekspfad zur Datei mit "st_shapelib" enthält, indem Sie den Befehl CREATE LIBRARY verwenden.
    Hinweis:

    Durch eine Änderung der Definition des Bibliothekspfads werden Pakettexte ungültig, die auf diesen verweisen. Aus diesem Grund müssen die Pakettexte einiger gespeicherter Prozeduren der Geodatabase mithilfe von Oracle neu kompiliert werden.

  • Die Datenbank muss den Service kennen, der die Anfragen an extproc bearbeitet. Dies wird in der Datei "tnsnames.ora" konfiguriert.
  • Extproc muss die Datei, die "st_shapelib" enthält, laden können. Dies wird dadurch garantiert, dass die Umgebungsvariable EXTPROC_DLLS in der Datei "extproc.ora" definiert wird.
  • Extproc (wird normalerweise mit dem Benutzer, der ORACLE_HOME besitzt, ausgeführt) benötigt Leseberechtigungen (READ) für den Speicherort der Bibliotheksdaten sowie Ausführungsberechtigungen (EXECUTE) für die Dateien selbst.

PostgreSQL

Die Bibliothek "st_geometry" muss im Installationsverzeichnis von PostgreSQL gespeichert werden, damit PostgreSQL auf die "ST_Geometry"-Funktionen zugreifen kann. Kopieren Sie die Datei "st_geometry.dll" (Windows) in den Bibliotheksordner des PostgreSQL-Installationsverzeichnisses. Bei Linux-Servern müssen Sie die Datei "st_geometry.so" (Linux) in das Verzeichnis /usr/lib/pgsql auf dem PostgreSQL-Server kopieren. Beide Dateien befinden sich im Ordner "DatabaseSupport" der ArcMap- oder ArcGIS Server-Installationen oder können aus My Esri heruntergeladen werden.

SQLite

Sie müssen den Speicherort der ST_Geometry-Bibliothek festlegen und sie laden, damit der SQLite-Client auf die SQL-Funktionen zugreifen kann. Sie können den Speicherort der Bibliothek in der Systemumgebungsvariablen "PATH" (Windows) oder "LIBPATH" (Linux) des Clients festlegen und dann die Bibliothek laden, oder Sie können den Pfad angeben, wenn Sie die Bibliothek "ST_Geometry" laden. Weitere Anweisungen finden Sie unter Laden der SQLite-Bibliothek "ST_Geometry".

Wie wird "ST_Geometry" implementiert?

"ST_Geometry" wird als benutzerdefinierter Typ zur Verwendung in Datenbanken und Geodatabases in IBM Db2, IBM Informix, Oracle, PostgreSQL und SAP HANA implementiert. "ST_Geometry" kann auch in Datenbanken in SQLite, Dameng und IBM Netezza verwendet werden.

"ST_Geometry" wird von den Datenbankmanagementsystemen wie folgt unterstützt:

"ST_Geometry" nach Datenbank

DatenbankmanagementsystemBeschreibung

Dameng

Der Typ "ST_Geometry" ist in der Dameng-Datenbank enthalten, muss aber von Ihnen initialisiert werden.

IBM Db2

Der Db2 Spatial Extender, der von IBM standardmäßig im Db2-Produkt bereitgestellt wird, bietet Unterstützung für "ST_Geometry". Der Typ "ST_Geometry" wurde gemeinsam von Esri und IBM entwickelt.

Beachten Sie, dass es Unterschiede in der SQL-Syntax von Db2 for z/OS und Db2 gibt. Weitere Informationen zur richtigen Syntax für die verwendete Db2-Version finden Sie in der Db2-Dokumentation.

IBM Informix

Die Informix Spatial DataBlade, die von IBM im Informix-Produkt bereitgestellt wird, installiert den Typ "ST_Geometry" in der Datenbank und Geodatabase. "ST_Geometry" ist die einzige Option, die zum Speichern von Feature-Geometrie in Geodatabases in Informix verwendet wird. Dieser leistungsstarke Speichertyp, der gemeinsam von Esri und IBM entwickelt wurde, ermöglicht einen ISO- und OGC-kompatiblen SQL-Zugriff auf räumliche Daten.

IBM Netezza

Der Typ "ST_Geometry" wird in Netezza durch die Netezza Spatial Esri-Bibliothek (nzSpatial_Esri) implementiert, die im IBM Netezza Analytics-Softwarepaket enthalten ist.

Oracle

Der Datentyp "ST_Geometry" wird implementiert, wenn Sie eine Geodatabase in Oracle erstellen. Dies ist der Standard-Geometriespeichertyp für Geodatabases in Oracle. Wenn Sie keine Geodatabase-Funktionen verwenden müssen, können Sie den Typ "ST_Geometry" mithilfe des Geoverarbeitungswerkzeugs Räumlichen Typ erstellen in einer Oracle-Datenbank installieren.

PostgreSQL

Der Datentyp "ST_Geometry" wird implementiert, wenn Sie eine Geodatabase in PostgreSQL erstellen. Dies ist der Standardtyp für das Speichern von Feature-Geometrie in Geodatabases in PostgreSQL. Wenn Sie keine Geodatabase-Funktionen verwenden müssen, können Sie den Typ "ST_Geometry" mithilfe des Geoverarbeitungswerkzeugs Räumlichen Typ erstellen in einer PostgreSQL-Datenbank installieren.

SAP HANA

In der Installation des SAP HANA Data Warehouse ist der Typ "ST_Geometry" standardmäßig enthalten.

SQLite

Der Datentyp "ST_Geometry" in SQLite wird mit einer st_geometry-Bibliothek und einer geometryblob-Spalte implementiert. Die SQL-Funktionen "ST_Geometry" werden in der st_geometry-Bibliothek statt in der Datenbank gespeichert.

Mit dem Geoverarbeitungswerkzeug SQLite-Datenbank erstellen können Sie eine SQLite-Datenbank erstellen, die den Typ "ST_Geometry" enthält. Sie können auch die SQL-Funktion "CreateOGCTables" verwenden, um den Datentyp "ST_Geometry" in einer vorhandenen SQLite-Datenbank zu erstellen.

Verwandte Themen

  • Konfigurieren von "extproc" für den Zugriff auf "ST_Geometry" in Oracle
  • Unterschiede bei der SQL-Implementierung für den Datentyp "ST_Geometry"

ArcGIS Desktop

  • Startseite
  • Dokumentation
  • Support

ArcGIS

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS
  • ArcGIS Developer
  • ArcGIS Solutions
  • ArcGIS Marketplace

Über Esri

  • Über uns
  • Karriere
  • Esri Blog
  • User Conference
  • Developer Summit
Esri
Wir sind an Ihrer Meinung interessiert.
Copyright © 2021 Esri. | Datenschutz | Rechtliches