Las geodatabases 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; no requieren una instalación independiente para utilizarlos. También puede usar ArcGIS para tener acceso a las tablas de base de datos que contienen columnas de geometría o geografía.
Puede usar el tipo de almacenamiento de geometría con ArcGIS si se da alguna de las siguientes condiciones:
- El sistema de coordenadas que se va a usar no es un sistema de coordenadas geográficas o no está definido en el diccionario de datos de SQL Server.
- Está usando SQL Server 2008 o 2008 R2 y desea almacenar valores z o m con la forma.
Puede usar el tipo de almacenamiento de geografía con ArcGIS si se da cualquiera de las siguientes condiciones:
- El sistema de coordenadas que desea utilizar está definido en el diccionario de datos de SQL Server.
- Está usando SQL Server 2008 o 2008 R2 y no necesita almacenar valores z o m para las entidades.
- Usa SQL Server 2012, en el que los valores z y m se admiten con ArcGIS.
- Los datos cubren extensiones espaciales grandes y necesita usar cálculos de área y de longitud de SQL.
Los cálculos de área y de longitud de SQL que usan la interpolación de línea de tipo Elíptico grande pueden variar mucho con respecto a la interpolación de línea plana en extensiones espaciales grandes.
- Puede usar la interpolación de línea Elíptico grande para las consultas espaciales de SQL.
Utilizar palabras clave de configuración para especificar tipos espaciales
De forma predeterminada, las geodatabases en SQL Server utilizan el tipo de geometría. Si desea utilizar el tipo de geografía para el almacenamiento en geodatabases en SQL Server, debe realizar una de las siguientes acciones:
- Cambie el parámetro de configuración GEOMETRY_STORAGE en la palabra clave de configuración DEFAULTS por GEOGRAPHY. Solo debe modificar el parámetro GEOMETRY_STORAGE bajo la palabra clave DEFAULTS si la mayoría de sus usuarios utilizarán la geografía para sus datos la mayoría del tiempo.
- Especifique una palabra clave de configuración que designe un parámetro de configuración GEOMETRY_STORAGE de GEOGRAPHY al crear clases de entidad. Si solo se almacenarán algunos de sus datos en el tipo de geografía, designe una palabra clave por separado al crear la clase de entidad. Se proporciona una palabra clave, GEOGRAPHY, pero puede crear su propia palabra clave personalizada.
Cuando cree clases de entidad en una base de datos de SQL Server (no en una geodatabase), elija la palabra clave de geometría o de geografía.
Registrar una tabla espacial existente con la geodatabase
Si ha usado una aplicación de otro fabricante o de SQL para crear tablas que contienen columnas de tipo espacial de SQL Server en la geodatabase, puede registrar estas tablas con la geodatabase para aprovechar las funciones de la geodatabase, como clases de relación, topología, redes geométricas y estructuras de la parcela, o tener subtipos, valores predeterminados, dominios o reglas de validación. Para este fin, las tablas deben cumplir determinados requisitos previos:
- La tabla debe ser propiedad del usuario que la está registrando.
- La tabla debe tener una columna espacial única de tipo de geometría o geografía.
- Todas las formas de la columna deben ser del mismo tipo espacial, ya sean puntos, líneas, polígonos, multipuntos, multicadenas y multipolígonos.
La adición de formas de tipo diferente al de la columna en la que se utiliza SQL después de registrar la tabla con la geodatabase no es compatible y tendrá como resultado un comportamiento impredecible de la clase de entidad.
- Todas las formas de la columna deben utilizar el mismo identificador de referencia espacial (SRID).
- El SRID especificado en el momento del registro debe existir en la tabla del sistema SDE_spatial_references. En caso contrario, debe definirse la proyección al comienzo del registro.
- Si la tabla contiene una clave principal, debe agruparse.
Consulte Registrar una tabla con la geodatabase para obtener instrucciones.
Crear un índice espacial
SQL Server requiere que la tabla tenga una clave principal para poder crear un índice espacial.
En ArcGIS
Cuando utiliza ArcGIS para crear una clase de entidad con una columna de geometría o geografía, ArcGIS crea una clave principal agrupada en la columna ObjectID de la tabla de negocios de forma predeterminada. A continuación, ArcGIS crea un índice espacial con los valores predeterminados de SQL Server. Cuando la clase de entidad se registra como versionada, se crea una clave primaria agrupada en las columnas ObjectID e id de estado de la tabla de adiciones, y se crea el índice espacial.
ArcGIS calcula la caja de límite de la clase de entidad con una columna de geometría o geografía espacial como la extensión de los datos que deben indexarse. Las entidades que quedan fuera de este rango no se indexan pero aparecerán en las consultas espaciales. Si no se determina la clase de entidad, el rango máximo de coordenadas del sistema de referencia espacial de la clase de entidad se utilizará para la caja de límite. Puede definir o recalcular una extensión de clase de entidad en la pestaña Extensión de entidad del cuadro de diálogo Propiedades de la clase de entidad. Si la clase de entidad está en una geodatabase, la caja de límite se ajusta con la última extensión siempre que el índice espacial se elimine y se vuelva a crear.
Fuera de ArcGIS
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 necesaria para crear un índice espacial en una tabla que contiene una columna de tipo geometrí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>
)
La siguiente sintaxis crea un índice espacial en una columna de geografía:
CREATE SPATIAL INDEX <index_name>
ON <table> (<spatial column>)
USING GEOGRAPHY_GRID
WITH (
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>
)
Límites conocidos al utilizar geografía de SQL Server con ArcGIS
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 corporativa:
- Si usa SQL Server 2008 o 2008 R2, ArcGIS no puede almacenar valores z o m en el tipo de datos de geografía. Por tanto, al llevar datos existentes a la geodatabase, como un shapefile o una clase de entidad de otra geodatabase, y deben almacenarse con el tipo de datos de geografía, el dataset de entrada no puede tener atributos 3D (z) o de medida (m).
Es necesario deshabilitar los atributos z y m antes de importar los datos en una geodatabase en SQL Server 2008 o 2008 R2. También se pueden importar datos con atributos 3D o de medidas en clases de entidad que utilicen geometría o el tipo de almacenamiento binario comprimido, o en geodatabases de SQL Server 2012.
- Las mediciones de datos de geografía se realizan en metros en su gran mayoría. La unidad de medida se indica en sys.spatial_ref_system; marque las unidades utilizadas con el valor EPSG asociado a los datos.
- Al aplicar el zoom a la extensión global en una clase de entidad de geografía en SQL Server 2008, se puede generar un filtro espacial que infringe la regla del hemisferio o que tiene coordenadas situadas fuera de la extensión de geografía válida, en cuyo caso la creación del filtro de forma no funcionará correctamente y la consulta no devolverá ningún resultado.