Pregunta

Estoy creando un mapa mashup de Google y estoy usando SQL 2008.

voy a tener un gran número de puntos de la tierra y va a querer realizar diversos cálculos sobre ellos en SQL -. Tales como la selección de todos los puntos contenidos dentro de un polígono en particular, o seleccionar todos los puntos dentro de 10 km de XY

Nunca he utilizado y las características espaciales de SQL antes. Se debe utilizar el geography o el tipo de datos geometry para esto?

¿Fue útil?

Solución

Geografía es el tipo que está destinado para el trazado de puntos sobre la tierra.

Si usted tiene una tabla que almacena los puntos de mapas de Google como esto:

CREATE TABLE geo_locations (
    location_id       uniqueidentifier  NOT NULL,
    position_point    geography         NOT NULL
);

A continuación, usted podría llenar puntos en que con este procedimiento almacenado:

CREATE PROCEDURE proc_AddPoint
    @latitude     decimal(9,6),
    @longitude    decimal(9,6),
    @altitude     smallInt
AS

DECLARE @point     geography = NULL;

BEGIN

    SET NOCOUNT ON;

    SET @point = geography::STPointFromText('POINT(' + CONVERT(varchar(15), @longitude) + ' ' + 
                                                       CONVERT(varchar(15), @latitude) + ' ' + 
                                                       CONVERT(varchar(10), @altitude) + ')', 4326)

    INSERT INTO geo_locations
    (
        location_id, 
        position_point
    )
    VALUES 
    (
        NEWID(),
        @point
    );

END

A continuación, si desea una consulta de la latitud, longitud y altitud, basta con utilizar el formato siguiente consulta:

SELECT
    geo_locations.position_point.Lat  AS latitude,
    geo_locations.position_point.Long AS longitude,
    geo_locations.position_point.Z    AS altitude
FROM
    geo_locations;

Otros consejos

Puede seguir la respuesta dada en PostGIS FAQ

Estoy confundido. ¿Qué almacén de datos debería utilizar la geometría o la geografía?

  

Respuesta corta: la geografía es un nuevo dato   tipo que soporta de largo alcance   distancias medidas. Si utiliza   geografía - no es necesario para aprender   mucho de coordinar los sistemas plana.   La geografía es generalmente mejor si todo lo que   cuidar distancias sobre medición y se   longitudes y que tienen datos de todos   sobre el mundo. tipo de datos es la geometría   un tipo de dato más antiguo que tiene muchos   funciones de apoyo y disfruta   un gran apoyo de herramientas de terceros.   Su mejor si usted es bastante cómodo   con sistemas de referencia espacial o que   se trata de datos localizadas donde   todos sus datos cabe en una sola espacial   sistema de referencia (SRID), o si necesita   hacer una gran cantidad de procesamiento espacial.   Consulte la Sección 8.8, “PostGIS   Matriz de compatibilidad de funcionar”para ver qué   Actualmente se apoya y lo que es   no.

Los tipos de geometría y geografía en ambas bases de datos, PostGIS y SQL Server, siguen el mismo concepto, por lo que la respuesta dada en el FAQ PostGIS es aplicable a su problema.

Lo más probable es que desea que el tipo de geografía, ya que da cuenta de la curvatura de la tierra. La geometría es más por una visión "plana" de las cosas. Echa un vistazo a este artículo para obtener más información http://www.mssqltips.com/tip.asp?tip=1847

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top