Вызовы функции ST_Geometry

Функции ST_Geometry в Oracle и PostgreSQL реализованы в языке структурированных запросов (SQL). Это язык уровня базы данных. В Oracle это процедурный язык структурированных запросов (PL/SQL). В PostgreSQL – это PL/pgSQL.

При осуществлении доступа к столбцам ST_Geometry в базе данных Oracle либо PostgreSQL с использованием функций SQL вы обращаетесь к базе данных напрямую, поэтому в базе данных должен быть доступ к функциям ST_Geometry. В Oracle база данных также запускает процесс extproc.

В SQLite функции ST_Geometry реализованы в C в библиотеке ST_Geometry. Вы должны обращаться к библиотеке ST_Geometry, чтобы использовать функции ST_Geometry.

PostgreSQL

Библиотека st_geometry должна находиться в директории установки PostgreSQL, чтобы позволить PostgreSQL получить доступ к функциям ST_Geometry. Вам необходимо скопировать файл st_geometry.dll (Windows) в папку lib в директории установки PostgreSQL. На сервере Linux: скопируйте файл st_geometry.so (Linux) в директорию /usr/lib/pgsql на сервере PostgreSQL. Оба этих файла находятся в папке DatabaseSupport для установленного клиентского приложения ArcGIS.

Oracle

Функции реализованы на языке PL/SQL, который вызывает функции из внешних файлов совместно используемых библиотек, написанных на языке программирования C. Функции вызываются из PL/SQL по псевдониму, который представляет собой соответствие между названием библиотеки – в случае с ST_Geometry в Oracle это ST_SHAPELIB – и именем файла библиотеки. (Для получения более подробных сведений о команде Oracle CREATE LIBRARY см. документацию). Когда в первый раз вызывается функция пространственного типа, для которой требуется ST_SHAPELIB, база данных запрашивает listener запустить процесс extproc для сессии SQL. Процессу extproc сообщается расположение ST_SHAPELIB, имя функции, которую необходимо вызвать, и ее параметры. Процесс extproc загружает ST_SHAPELIB и вызывает функцию. Когда внешняя функция завершает работу, extproc возвращает результаты и продолжает работать, ожидая новых вызовов функции во время текущей сессии. Процесс extproc завершается по завершении сессии SQL.

Для того чтобы данный механизм работал, необходима следующая конфигурация:

SQLite

Необходимо указать расположение и загрузить библиотеку ST_Geometry, чтобы SQLite-клиент мог получить доступ к функциям SQL. Вы можете указать местоположение библиотеки в клиентских системных переменных PATH (Windows) или LIBPATH (Linux) при загрузке библиотеки либо ввести путь при загрузке библиотеки ST_Geometry. Для получения инструкций см. раздел Загрузка библиотеки SQLite ST_Geometry.

Связанные темы

5/25/2014