SQL Server 2008 geografia e geometria - qual usar?
-
18-09-2019 - |
Pergunta
Estou criando um mashup mapa Google e estou usando o SQL Server 2008.
Vou ter um grande número de pontos sobre a terra e vai querer realizar vários cálculos sobre eles em SQL -. Tais como selecionar todos os pontos contidos dentro de um polygone particular, ou selecione todos os pontos dentro de 10 km de XY
Eu nunca usei e recursos do SQL espacial antes. Devo usar o geography
ou o tipo de dados geometry
para isso?
Solução
Geografia é o tipo que é destinado para traçar pontos na terra.
Se você tem uma tabela que armazena Google Maps pontos como este:
CREATE TABLE geo_locations (
location_id uniqueidentifier NOT NULL,
position_point geography NOT NULL
);
então você poderia preencher pontos em que com este procedimento armazenado:
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
Então, se você quiser consulta para a latitude, longitude e altitude, basta usar o seguinte formato de 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;
Outras dicas
Você pode acompanhar a resposta dada em PostGIS FAQ
Estou toda confusa. Que armazenamento de dados que eu deveria usar geometria ou geografia?
Resposta curta: a geografia é uma nova dados digite que suportes de longo alcance medições distâncias. Se você usar geografia - você não precisa de aprender muito sobre planar sistemas de coordenadas. Geografia é geralmente melhor se tudo que você cuidar distâncias aproximadamente está medindo e comprimentos e você tem dados de todos pelo mundo. Geometria tipo de dados é um tipo de dados mais antigo que tem muitas funções de apoio que e goza grande apoio de ferramentas de terceiros. Sua melhor se você está bastante confortável com sistemas de referência espacial ou você a lidar com dados localizados onde todos os seus acessos de dados em um único espaço sistema de referência (SRID), ou você precisa para fazer um monte de processamento espacial. Consulte a Seção 8.8, “PostGIS Função Matriz de suporte”para ver o que é suportada atualmente eo que é Não.
Os tipos de geometria e geografia em ambas as bases de dados, PostGIS e SQL Server, seguem o mesmo conceito, então a resposta dada no PostGIS FAQ é aplicável ao seu problema.
O mais provável é que você quer o tipo de geografia, uma vez que contribui para a curvatura da Terra. A geometria é mais para uma visão "flat" de coisas. Confira este artigo para mais informações http://www.mssqltips.com/tip.asp?tip=1847