Tipos espaciales de SQL Server y ArcGIS

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.

Utilice 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.
  • Desea almacenar valores z o m con la forma.

Utilice 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.
  • 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 los siguientes requisitos:

  • 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.
Nota:

Habilitar una geodatabase en una base de datos existente no registra automáticamente las tablas existentes en la geodatabase. Las tablas o clases de entidad que deban participar en la geodatabase se deben registrar en esta por separado.

Crear un índice espacial

SQL Server requiere que la tabla tenga una clave principal para poder crear un índice espacial en ella.

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 el cuadro de diálogo Propiedades de 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>
 )

ArcGIS agrega una columna para almacenar elementos geométricos adicionales.

Los tipos de geometría y geografía no pueden almacenar todos los tipos de elementos geométricos que las geodatabases deben admitir. Por lo tanto, al crear o registrar una clase de entidad que utiliza el tipo de almacenamiento de geometría o geografía con una geodatabase en SQL Server, ArcGIS agrega una columna a la tabla de negocios para almacenar estos elementos geométricos adicionales. La columna se denomina gdb_geomattr_data. Entre los elementos geométricos adicionales se incluyen los siguientes:

  • Objetos paramétricos como, por ejemplo, arcos circulares y curvas Bézier creadas con herramientas de edición avanzadas
  • PointIDs
  • Entidades multiparche
  • Parches de superficie de Extensión ArcGIS Spatial Analyst

Cuando ArcGIS detecta que la fuente de datos tiene estos elementos geométricos adicionales, se almacena una representación geométrica simple en la columna shape y los datos no modificados (incluidos los elementos adicionales) se almacenan en la columna gdb_geomattr_data.

Límites conocidos al utilizar geografía de SQL Server con ArcGIS

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; compruebe las unidades utilizadas con el valor EPSG asociado a los datos.