Отличия реализации SQL для типа ST_Geometry
Между реализацией пространственного языка SQL (ST_Geometry) для Informix, DB2, Oracle и PostgreSQL есть небольшая разница. Компания Esri и партнер,один из разработчиков расширенного пространственного SQL в СУБД корпорации IBM, работали совместно, чтобы обеспечить полное применение стандартов консорциума Open Geospatial Consortium (OGC).
Однако существует три заметных исключения, на деле не нарушающих стандарты OGC, но представляющих незначительные отличия в реализации от самих СУБД.
-
Предикатные значения
Предикатные функции Informix и PostgreSQL возвращают t для значения истина и f для значения ложь, в то время как DB2 и пространственный тип для Oracle используют 1 для значения истина и 0 для значения ложь.
В этом примере Informix SQL инструкция select возвращает только те ID, для которых функция ST_Contains возвращает значение t для строительных участков с контурами зданий.
select bf.building_id "Building id" from buildingfootprints bf, lots where st_contains(lot,footprint) = 't';
select bf.building_id "Building id" from buildingfootprints bf, lots where sde.st_contains(lot,footprint) = 1;
-
Входные данные SRID
Для текстового формата WKT, двоичного формата WKB и представлений форм Esri в DB2 ID пространственной привязки (SRID) вводится с помощью метода srid объекта coordref. Для Informix, Oracle и PostgreSQL значение SRID вводится напрямую.
В этом примере значение SRID, равное 1, вводится в функции linefromtext СУБД Informix.
insert into linestring_test values ( linefromtext('linestring(10.01 20.03, 20.94 21.34, 35.93 19.04)', 1) );
insert into linestring_test values ( linefromtext('linestring(10.01 20.03, 20.94 21.34, 35.93 19.04)',coordref()..srid(1)) );
-
Квалифицирующие функции
Функции ST_Geometry должны соответствовать имени схемы при выполнении операций SQL для обработки таблиц в многопользовательских баз геоданных в Oracle. Это справедливо для всех баз геоданных в Oracle, созданных в ArcGIS 9.3 и более поздних версиях.
Функции ST_Geometry можно квалифицировать при выполнении операций SQL для обработки таблиц со столбцами ST_Geometry в DB2, Informix и PostgreSQL, но это необязательно.