SQL 2008 Geography & Geometry- 무엇을 사용해야합니까?
-
18-09-2019 - |
문제
Google지도 매시업을 만들고 있으며 SQL 2008을 사용하고 있습니다.
지구상에 많은 포인트가 있으며 SQL에서 다양한 계산을 수행하려고합니다. 예를 들어 특정 폴리 단 손에 포함 된 모든 지점을 선택하거나 XY의 10km 이내에 모든 지점을 선택합니다.
나는 전에 사용한 적이없고 SQL 공간 기능을 사용하지 않았습니다. 내가 사용해야할까요 geography
아니면 그 geometry
이것에 대한 데이터 유형?
해결책
지리는 지구의 지점을 플로팅하기위한 유형입니다.
Google지도 포인트를 저장하는 테이블이있는 경우 다음과 같은 것입니다.
CREATE TABLE geo_locations (
location_id uniqueidentifier NOT NULL,
position_point geography NOT NULL
);
그런 다음이 저장된 절차로 포인트를 채울 수 있습니다.
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
그런 다음 위도, 경도 및 고도를 쿼리하려면 다음 쿼리 형식을 사용하기 만하면됩니다.
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;
다른 팁
주어진 답변을 따를 수 있습니다 Postgis 자주하는 질문
나는 모두 혼란 스럽다. 지오메트리 또는 지리를 사용해야하는 데이터 스토어는 무엇입니까?
짧은 답변 : 지리학은 장거리 거리 측정을 지원하는 새로운 데이터 유형입니다. 지리를 사용하는 경우 평면 좌표 시스템에 대해 많이 배울 필요가 없습니다. 지리는 일반적으로 당신이 관심있는 모든 것이 거리와 길이를 측정하고 전 세계의 데이터를 가지고 있다면 가장 좋습니다. Geometry DataType은 많은 기능을 지원하는 오래된 데이터 유형이며 타사 도구에서 큰 지원을 즐깁니다. 공간 참조 시스템에 꽤 편안하거나 단일 공간 참조 시스템 (SRID)에서 모든 데이터가 적합한 현지화 된 데이터를 처리하거나 많은 공간 처리를 수행 해야하는 경우 최고입니다. 8.8 절,“PostGIS Function Support Matrix”를 참조하여 현재 지원되는 내용과 그렇지 않은 내용을 확인하십시오.
데이터베이스, PostGIS 및 SQL Server의 지오메트리 및 지리 유형은 동일한 개념을 따르므로 PostGIS FAQ에 제공된 답변은 문제에 적용됩니다.
지구의 곡률을 설명하기 때문에 지리 유형을 원할 것입니다. 기하학은 사물의 "평평한"보기에 더 가깝습니다. 자세한 내용은이 기사를 확인하십시오http://www.mssqltips.com/tip.asp?tip=1847