ArcSDE y los tipos espaciales de Microsoft

Las geodatabases de ArcSDE admiten el almacenamiento de datos vectoriales utilizando los tipos de geometría y geografía de Microsoft. Estos tipos están disponibles en SQL Server 2008 y no requieren una instalación independiente para utilizarlos. Debe utilizar estos tipos de datos si desea acceder a los datos espaciales con SQL.

El tipo de geometría de Microsoft es similar a los tipos de datos espaciales SIG existentes: utiliza coordenadas en un plano arbitrario, como proyecciones definidas.

El tipo de geografía de Microsoft se utiliza para datos en un esferoide que se almacena con coordenadas de latitud y longitud.

Los dos tipos difieren en la forma de realizar cálculos espaciales. Para obtener más información sobre los tipos espaciales de Microsoft, consulte la documentación de SQL Server 2008.

Utilice palabras clave de configuración para especificar tipos espaciales de Microsoft

De manera predeterminada, las geodatabases ArcSDE en SQL Server utilizan el tipo binario comprimido ArcSDE, de manera que si desea utilizar los tipos de geometría o geografía de Microsoft para almacenamiento, debe (1) modificar el parámetro GEOMETRY_STORAGE bajo la palabra clave de configuración DEFAULTS en la tabla SDE_dbtune a GEOMETRY o GEOGRAPHY o bien (2) especificar una palabra clave de configuración que designe un parámetro GEOMETRY_STORAGE GEOMETRY o GEOGRAPHY al crear clases de entidades. Solo debe modificar el parámetro GEOMETRY_STORAGE bajo la palabra clave DEFAULTS si la mayoría de sus usuarios utilizarán datos de geometría o geografía la mayoría del tiempo. Si sólo se almacenan algunos de datos en el tipo de geometría o geografía, designe una palabra clave por separado al crear la clase de entidad. Se le proporcionan dos palabras clave: GEOMETRÍA y GEOGRAFÍA, o puede crear sus propias palabras clave.

Requisitos previos para utilizar la geometría o geografía de Microsoft en una geodatabase

Si ha creado tablas que contienen columnas de geometría o geografía de Microsoft utilizando una aplicación de terceros o SQL, puede registrar esas tablas con ArcSDE y la geodatabase para aprovechar la funcionalidad de la geodatabase. Para este fin, las tablas deben cumplir determinados requisitos previos:

Registrar una tabla de geometría o geografía existente con ArcSDE y la geodatabase.

Para registrar la tabla con ArcSDE, utilice el comando sdelayer con la operación de registro.

A continuación se detalla un ejemplo de registro de una tabla denominada spdata que contiene geometrías poligonales (–e a) en una columna de geometría llamada entidades. La tabla contiene una columna de enteros denominada fid que se utilizará como única columna de identificadores de entidades, cuyos valores mantendrá ArcSDE (–C fid,SDE). El ID de referencia espacial (SRID) utilizado para registrar la capa es 5 (–R 5). Es el SRID en la tabla SDE_spatial_references.

sdelayer –o register –l spdata,features –e a –C fid,SDE –t GEOMETRY –R 5 –i sde:sqlserver:tornado –D agency1 –u vijay –p open.septagenarian

Si la referencia espacial que necesita no existe en la tabla SDE_spatial_references, cree una clase de entidad de plantilla en ArcCatalog que utilice la referencia espacial que desea, después consulte la tabla SDE_spatial_references para ver qué SRID se le asignó.

Para una geodatabase sde-schema

SELECT * FROM sde.SDE_spatial_references

Para una geodatabase dbo-schema

SELECT * FROM dbo.SDE_spatial_references

Encuentre la referencia espacial que ha agregado con la clase de entidad de plantilla e identifique el número SRID. Después puede utilizar el número con la opción –R al registrar otras tablas que tengan columnas de geometría y se encuentren en el mismo sistema de referencia de coordenadas.

También podría especificar un ID de proyección con la opción –G en lugar de utilizar la opción –R. Al registrar tablas con una columna de geometría, la ID de proyección utilizada debe coincidir con los SRID almacenados en la tabla sys.spatial_references_systems de SQL Server.

sdelayer –o register –l spgeogdata,features –e a –C fid,SDE –t GEOGRAPHY –G 4326  –i sde:sqlserver:tornado –D agency1 –u vijay –p open.septagenarian

Para las tablas con cualquier almacenamiento de datos espaciales que contienen una gran cantidad de registros, el proceso de registro puede llevar menos tiempo si registra la columna ID de fila como mantenida por usuario. Sin embargo, Esri no recomienda utilizar ID de fila mantenidos por usuario.

sdelayer –o register –l polsamples,shape –e p –C fid,USER –t GEOMETRY –R 300 –i 6543 –D agency1 –u guadalupe –p overnout

Sin embargo, si registra una columna de identificador de entidad como mantenida por usuario y posteriormente registra la clase de entidad con la geodatabase, ArcGIS agregará una columna de identificador de entidad adicional, object_ID. ArcGIS mantendrá los valores de esta columna. Si la tabla contiene una gran cantidad de registros, agregar esta columna adicional object_ID puede llevar un tiempo.

La ejecución del registro sdelayer –o registra su tabla con ArcSDE. De esta manera se agrega un registro a las tablas de sistema SDE_layers, SDE_geometry_columns, SDE_column_registry y SDE_table_registry en la geodatabase. No crea un índice espacial. Puede utilizar SQL para crear índices espaciales en tablas no creadas en ArcGIS y luego registrar las tablas con ArcSDE. También puede crear un índice espacial después de registrar la tabla con ArcSDE utilizando el comando sdelayer con la operación de modificación con el fin de modificar la extensión de la capa; posteriormente puede utilizar la operación load_only_io para colocar la tabla en el modo I/O solo de carga y la operación normal_io para colocarla de nuevo en el modo I/O normal, lo que generará automáticamente un índice espacial. Si después registra la capa con la geodatabase, puede crear un índice espacial utilizando ArcCatalog. Si utiliza sdelayer o ArcCatalog para crear el índice espacial, dicho índice espacial se creará utilizando los parámetros el índice espacial especificados en la tabla SDE_dbtune y la extensión actual de los datos en la capa.

Para obtener más información sobre cómo usar el comando sdelayer, consulte la Referencia sobre el comando de administración de ArcSDE.

Si necesita que la clase de entidad participe en la funcionalidad de geodatabase, tal como clases de relaciones, topología, redes geométricas, tramas catastrales, terrenos o esquemas, o si tiene subtipos, valores predeterminados, dominios o reglas de validación, también debe registrarse con la geodatabase.

Puede registrar los datasets en ArcCatalog de la manera siguiente:

  1. Inicie ArcCatalog.
  2. Conecte la geodatabase que contiene la capa a registrarse. Asegúrese de conectarse como propietario de la capa.
  3. Haga clic con el botón derecho sobre la capa que desea registrar con la geodatabase.
  4. Haga clic en Registrar con geodatabase.

Crear un índice espacial

El requisito previo de SQL Server para crear un índice espacial es que la tabla debe contener una clave principal.

En el caso de tablas espaciales no creadas en ArcGIS; por ejemplo, las creadas utilizando SQL, debe crear una clave principal en la tabla y crear un índice espacial utilizando SQL. A continuación se detalla la sintaxis de SQL para crear un índice espacial en una tabla que contiene una columna de tipo geometría o geografía:

CREATE SPATIAL INDEX <index_name> ON <table> (<spatial column>) USING GEOMETRY_GRID WITH ( BOUNDING_BOX = minx,miny,maxx,maxy), GRIDS = (low|medium|high, low|medium|high, low|medium|high, low|medium|high),  CELLS_PER_OBJECT = n, <other regular btree index options like filegroups, fill factors, etc> )

Al crear una capa con una columna espacial de geometría o geografía a través de ArcGIS, el cuadro de delimitación de la clase de entidad se calcula como la extensión de los datos que debe indexarse. Las entidades que quedan fuera de este rango no serán indexadas pero de todos modos aparecerán en las consultas espaciales. Si no se determina la extensión de la capa, el rango máximo de coordenadas del sistema de referencia espacial de la capa se utilizará para el cuadro de delimitación. Siempre que la capa pase del modo I/O solo de carga al modo I/O normal, el cuadro de delimitación se ajusta con la última extensión de capa.

Además, cuando crea una clase de entidad con una columna de geometría o geografía utilizando ArcGIS, de manera predeterminada, ArcSDE crea una clave primaria agrupada en la columna de id de fila de la tabla de negocios, luego genera un índice espacial basado en los valores definidos para el parámetro B_MS_SPINDEX de la palabra clave de configuración en la tabla SDE_dbtune utilizada cuando se ha creado la clase de entidad. Cuando la clase de entidad se registra como versionada, se crea una clave primaria agrupada en las columnas de id de fila y de id de estado de la tabla de inserciones, y se genera el índice espacial basándose en los valores definidos para A_MS_SPINDEX en la palabra clave de configuración utilizada cuando se ha creado la clase de entidad. El valor predeterminado para ambos parámetros es el siguiente:

GRIDS = (MEDIUM, MEDIUM, MEDIUM, MEDIUM), CELLS_PER_OBJECT = 16

Consulte Alterar el contenido de la tabla DBTUNE después de que se crea para obtener información sobre la definición de valores en la tabla SDE_dbtune.

Límites conocidos al utilizar geografía de SQL Server con una geodatabase de ArcSDE

A continuación aparece una lista de cuestiones a tener en cuenta a la hora de almacenar datos de geografía de SQL Server en la geodatabase de ArcSDE:


7/10/2012