Tipos de datos espaciales
Hay dos tipos de datos espaciales. El tipo de datos geometry admite datos planos o euclidianos (de tierra plana). El tipo de datos geometry se ajusta a las características simples de Geospatial Consortium (OGC) para especificación SQL versión 1.1.0.
Además, SQL Server admite el tipo de datos geography, que almacena datos elípticos (tierra redonda), como coordenadas de latitud y longitud GPS.
Los tipos de datos geography y geometry admiten once objetos de datos espaciales o tipos de instancia. Sin embargo, solo de siete de estos tipos de instancia se pueden crear instancias; puede crear y trabajar con estas instancias (o crear instancias de las mismas) en una base de datos. Estas instancias obtienen determinadas propiedades de sus tipos de datos primarios que los distinguen como Points, LineStrings, Polygons o como varias instancias de geometry o geography en una GeometryCollection.
La figura siguiente describe la jerarquía de geometry en la que se basan los tipos de datos geography y geometry. Los tipos a partir de los que pueden crearse instancias de geometry y geography se indican en azul.
Como la figura indica, los siete tipos a partir de los que pueden crearse instancias de los tipos de datos geometry y geography son Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon y GeometryCollection. Los tipos geometry y geography pueden reconocer una instancia concreta siempre y cuando se trate de una instancia bien formada, aunque no se haya definido explícitamente. Por ejemplo, si define una instancia Point usando explícitamente el método STPointFromText(), geometry y geography reconocen la instancia como Point, con tal de que la entrada de método esté bien formada. Si define la misma instancia mediante el método STGeomFromText(), los tipos de datos geometry y geography reconocen la instancia como Point.
Para obtener más información sobre estas instancias, vea los temas siguientes:
Diferencias entre los dos tipos de datos
Los dos tipos de datos espaciales se comportan a menudo de manera bastante similar pero hay algunas diferencias clave en la manera en la que los datos se almacenan y se manipulan.
Definir bordes de conexión
Los datos de definición para los tipos Polygon y LineString son solo los vértices. El borde de conexión entre dos vértices en un tipo de geometría es una línea recta. Sin embargo, el borde de conexión entre dos vértices en un tipo de geografía es un arco elíptico grande corto entre los dos vértices. Una elipse grande es la intersección del elipsoide con un plano por su centro y un arco elíptico grande es un segmento de arco de la elipse grande.
Medidas en tipos de datos espaciales
En el sistema plano, o de tierra plana, las medidas de distancias y las áreas se proporcionan en la misma unidad de medida que las coordenadas. Usando el tipo de datos geometry, la distancia entre (2, 2) y (5, 6) es 5 unidades, independientemente de las unidades usadas.
En el sistema elíptico o de tierra redonda, las coordenadas se proporcionan en grados de latitud y longitud. Sin embargo, las longitudes y las áreas normalmente se miden en metros y metros cuadrados, aunque la medida puede depender del identificador de referencia espacial (SRID) de la instancia de geography. La unidad de medida más común para el tipo de datos geography es el metro.
Orientación de datos espaciales
En el sistema plano, la orientación del anillo de un polígono no es un factor importante. Por ejemplo, un polígono descrito por ((0, 0), (10, 0), (0, 20), (0, 0)) es igual que un polígono descrito por ((0, 0), (0, 20), (10, 0), (0, 0)). Las características simples de OGC para la especificación de SQL no dictan una ordenación de anillos y SQL Server no exige la ordenación de anillos.
En un sistema elíptico, un polígono no tiene ningún significado, o es ambiguo, sin una orientación. Por ejemplo, ¿un anillo alrededor del ecuador describe el hemisferio norte o el hemisferio sur? Si usamos el tipo de datos geography para almacenar la instancia espacial, debemos especificar la orientación del anillo y describir con precisión la ubicación de la instancia.
SQL Server 2008 coloca las restricciones siguientes al usar el tipo de datos geography:
Cada instancia de geography debe ajustarse dentro de un hemisferio único. No se puede almacenar ningún objeto espacial mayor que un hemisferio.
Cualquier instancia de geography de una representación Open Geospatial Consortium (OGC) Well-Known Text (WKT) o Well-Known Binary (WKB) que genera un objeto mayor que un hemisferio inicia una ArgumentException.
Los métodos de tipo de datos geography que requieren la entrada de dos instancias de geography, como STIntersection(), STUnion(), STDifference(), and STSymDifference(), devolverán null si los resultados de los métodos no se ajustan dentro de un hemisferio único. STBuffer() también devolverá null si la salida supera un hemisferio único.
Anillos externos e internos no importantes en el tipo de datos de geography
Las características simples de OGC para especificación de SQL tratan de los anillos externos y de los anillos internos, pero esta distinción tiene poco sentido para el tipo de datos SQL Servergeography: se puede tomar cualquier anillo de un polígono como el anillo externo.
Para obtener más información acerca de las especificaciones de OGC, vea lo siguiente:
Especificaciones de OGC, Acceso a características simples, Parte 1 - Arquitectura común
Especificaciones de OGC; Acceso a características simples, Parte 2 - Opciones de SQL