문제

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top