"ST_Geometry"-Funktionen werden unter Oracle und PostgreSQL per Structured Query Language (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".
Wenn Sie in einer Oracle- oder PostgreSQL-Datenbank mit SQL-Funktionen auf ST_Geometry-Spalten zugreifen, rufen Sie die Datenbank direkt auf. Daher muss die Datenbank auf die ST_Geometry-Funktionen 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.
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 ArcGIS-Client-Installation.
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.
Für eine ordnungsgemäße Funktionsweise ist die folgende Konfiguration erforderlich:
- 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.
- 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. Hierzu definieren Sie die Umgebungsvariable EXTPROC_DLLS in der Datei "listener.ora" (Oracle 10g) oder der Datei "extproc.ora" (Oracle 11g).
- 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.
- Wenn Sie die Datei "listener.ora" ändern, müssen Sie den Listener neu starten.
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".