Crear referencias espaciales con SQL

Complejidad: Avanzado Requisitos de datos: Usar datos propios

Esri recomienda crear referencias espaciales con las herramientas de ArcGIS Desktop cuando se crean clases de entidades. ArcGIS proporciona un gama completa de herramientas para esta tarea, y calculará unidades x, y, z y m, y desplazamientos para que mantenga datos de alta precisión. Sin embargo, Esri comprende que algunos usuarios y desarrolladores de aplicaciones desean contar con opciones cuando crean referencias espaciales. Esta sección trata sobre las herramientas de base de datos que proporcionan Esri e IBM para la creación de referencias espaciales.

Todos los sistemas de referencias espaciales reconocidos por la base de datos se almacenan en las tablas del sistema, algunos de los cuales tienen vistas editables. Para las geodatabases de ArcSDE en Oracle que utilizan un almacenamiento de geometría de ST_Geometry, es la tabla ST_Spatial_References. En Informix, esta tabla se llama Spatial_References. En DB2, se llama ST_Spatial_Reference_Systems. En PostgreSQL, la tabla es sde_spatial_references, pero también hay una vista de la tabla sde_spatial_references, st_spatial_references, en la que se pueden insertar referencias espaciales.

Las funciones internas utilizan los parámetros de un sistema de referencia espacial para trasladar y escalar cada coordenada de punto flotante de la geometría en enteros positivos de 64 bits antes de almacenarlas. En la recuperación, las coordenadas se restablecen al formato de punto flotante externo.

Las coordenadas de punto flotante se convierten en enteros al sustraer los valores falsos x e y, que se trasladan al origen falso; multiplicar por las unidades x,y para escalar; agregar media unidad y después truncar el resto.

Se trabaja con las coordenadas opcionales z y las medidas de manera similar, con la excepción de que se trasladan con valores z y m falsos y se escalan con unidades z y m respectivamente.

Para definir todas las columnas en la tabla de referencia espacial en cada sistema de administración de bases de datos, consulte los temas de tabla de sistema correspondientes:

Tablas del sistema de una geodatabase en DB2Tablas del sistema de una geodatabase en InformixTablas del sistema de una geodatabase en OracleTablas del sistema de una geodatabase en PostgreSQL

El sistema de referencia espacial se asigna a una geometría durante su construcción. El sistema de referencia espacial debe existir en la tabla de referencia espacial. Todas las geometrías en una columna deben tener el mismo sistema de referencia espacial.

Crear una referencia espacial en IBM DB2

En DB2, el comando para crear una referencia espacial es db2se create_srs (o invoque el procedimiento almacenado db2se.ST_create_srs). El siguiente ejemplo crea un registro de referencia espacial con un factor de escala de 10 y con un sistema de coordenadas específico:

db2se create_srs mydb -srsName \"mysrs\"  -srsID 100 -xScale 10 -coordsysName \"GCS_North_American_1983\"

Para obtener información sobre el uso de este comando, consulte la sección "Creating a spatial reference system" de la DB2 Spatial Extender and Geodetic Extender User's Guide and Reference.

Crear una referencia espacial en IBM Informix

Los usuarios de Informix pueden crear un registro de referencia espacial con una declaración INSERT similar a este ejemplo:

INSERT INTO SDE.SPATIAL_REFERENCES (srid, description,  auth_name, auth_srid, falsex, falsey, xyunits, falsez,  zunits, falsem, munits, srtext, object_flags,  xycluster_tol, zcluster_tol, mcluster_tol) VALUES ( 20,  'GCS_North_American_1983',  NULL,  NULL,  -400, -400, 1000000000, -100000, 100000, -100000, 10000,  'GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]', 1, 0, 0, 0);

Para obtener más información sobre la creación de una referencia espacial en Informix, consulte la sección "Using the spatial references table" en la IBM Informix Spatial DataBlade Module User's Guide.

Crear una referencia espacial en Oracle

La creación de una referencia espacial para las tablas con el tipo espacial en Oracle se realiza a través de la declaración INSERT como la que se muestra a continuación. Asegúrese de remplazar el SRID con un valor único. En el siguiente ejemplo, el SRID es el 1 en la tercer línea de código.

INSERT INTO SDE.ST_SPATIAL_REFERENCES (SR_NAME, SRID,  X_OFFSET, Y_OFFSET, XYUNITS, Z_OFFSET, Z_SCALE, M_OFFSET,  M_SCALE, MIN_X, MAX_X, MIN_Y, MAX_Y, MIN_Z, MAX_Z, MIN_M,  MAX_M, CS_ID, CS_NAME, CS_TYPE, ORGANIZATION,  ORG_COORDSYS_ID, DEFINITION, DESCRIPTION) VALUES ( 'GCS_North_American_1983',  1, -400, -400, 1000000000,  -100000,  100000,  -100000,  100000,  9.999E35, -9.999E35,  9.999E35,  -9.999E35,  9.999E35,  -9.999E35,  9.999E35,  -9.999E35,  4269,  'GCS_North_American_1983', 'PROJECTED',  NULL, NULL, 'GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]', 'ArcSDE SpRef');

Crear una referencia espacial en PostgreSQL

Para crear un sistema de referencia espacial para el tipo espacial en PostgreSQL, utilice una declaración INSERT como la que se muestra a continuación. Asegúrese de remplazar el SRID con un valor único. En el siguiente ejemplo, el SRID es el 1 en la tercer línea de código.

INSERT INTO sde.st_spatial_references (sr_name, srid,  x_offset, y_offset, xyunits, z_offset, z_scale, m_offset,  m_scale, min_x, max_x, min_y, max_y, min_z, max_z, min_m,  max_m, cs_id, cs_name, cs_type, organization,  org_coordsys_id, definition, description) VALUES ( 'GCS_North_American_1983', 1,  -400,  -400,  1000000000, -100000,  100000,  -100000,  100000,  9.999E35, -9.999E35,  9.999E35,  -9.999E35,  9.999E35,  -9.999E35,  9.999E35,  -9.999E35,  4269,  'GCS_North_American_1983', 'PROJECTED',  NULL, NULL, 'GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]', 'ArcSDE SpRef');

Temas relacionados


7/11/2012