Diferencias de implementación de SQL para el tipo ST_Geometry
Hay una diferencia entre la implementación de SQL espacial (ST_Geometry) implementación para Informix, DB2, Oracle y PostgreSQL. Esri, un socio y desarrollador asociado del SQL espacial extendido dentro de los productos del sistema de administración de bases de datos (DBMS) de IBM, trabajó en un ambiente de cooperación para asegurar que las normas establecidas por el Consorcio Geoespacial abierto (OGC) se aplicaran en su máxima expresión.
Sin embargo, hay tres excepciones notables, ninguna de las cuales realmente rompe las normas del OGC, pero que son idiosincrasias de implementación de poca importancia de los DBMS en sí mismos.
-
Valores de predicado
Las funciones de predicado de Informix y PostgreSQL devuelven una v para verdadero y una f para falso, mientras que DB2 y el tipo espacial para Oracle utilizan 1 para verdadero y 0 para falso.
En este ejemplo de Informix SQL, la declaración seleccionada devuelve solamente aquellas ID de construcción para las que la función ST_Contains devuelve t para los lotes de construcción que contienen huellas de construcción.
La misma función ST_Contains para un tipo DB2 o espacial para la declaración SELECT de Oracle devuelve los mismos Id. de edificio para los cuales se devuelve 1 cuando un terreno contiene una huella.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;
-
Entrada de SRID
Para un texto conocido (WKT), un binario conocido (WKB), y representaciones de forma ESRI en DB2, se introduce el Id. de referencia espacial (SRID) por medio del método srid del objeto coordref. Para Informix, Oracle y PostgreSQL, el valor de SRID se ingresa directamente.
En este ejemplo, la SRID de 1 se ingresa directamente a la función linefromtext de Informix.
En este ejemplo, un SRID de valor 1 se introduce en la función linefromtext de DB2 por medio del objeto srid coordref.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)) ); -
Funciones calificativas
Las funciones ST_Geometry se deben calificar con el nombre del esquema al ejecutar SQL contra las tablas en las geodatabases corporativas en Oracle. Esto es verdadero para todas las geodatabases en Oracle creadas en ArcGIS 9.3 o versiones posteriores.
Puede calificar las funciones ST_Geometry al ejecutar SQL contra las tablas con columnas ST_Geometry en DB2, Informix o PostgreSQL, pero esto no es requerido.