Diferencias de implementación de SQL para el tipo ST_Geometry
Hay poca diferencia entre la implementación de SQL espacial para Informix, DB2 y el tipo espacial para Oracle o 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 t para verdadero y una f para falso, mientras que DB2 y el tipo espacial para Oracle utiliza 1 para verdadero y 0 para falso. En este ejemplo de Informix SQL, la declaración select devuelve solamente los Id. de edificios para los que la función ST_Contains devuelve una t para los terrenos de edificación que contengan huellas de edificios.
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 y los tipos espaciales de Oracle y PostgreSQL, el valor SRID se introduce directamente. En este ejemplo, un SRID de valor 1 se introduce directamente en 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 SQL pueden calificarse con el nombre de esquema. Por ejemplo, sde.ST_Buffer. Esto se puede hacer cuando ejecuta SQL contra tablas con columnas ST_Geometry en cualquiera de los sistemas de administración de bases de datos. Sin embrago, para tales tablas en las bases de datos de Oracle, las funciones se deben calificar con el nombre de esquema. Esto vale para todas las geodatabases de ArcSDE para Oracle que se crearon recientemente en ArcGIS 9.3 o versiones posteriores.