SQL2008 공간 기능을 사용하면 Aggreation의 결과를 포함하는 다각형을 어떻게 생성 할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/1212297

문제

각각 이름, 위도, 경도 및 영역 코드를 가진 포인트 테이블이 있습니다. 내가하고 싶은 것은 집계를 수행하는 것입니다 (즉, "조항에 의한 그룹)과 특정 영역 코드의 모든 지점을 포함하는 다각형을 반환하는 것입니다.

지리 데이터 유형에 대한 집계가 내장되어 있는지 여부를 찾기 위해 조금 어려움을 겪고 있습니다.

논쟁을 위해, 나는 조금 비슷한 테이블을 가정합니다.

+---------+------+---------+---------+
| Name    | Area | Lat     | Long    |
+---------+------+---------+---------+
| Ipswich | A    | 52.053  |  1.156  |
| Luton   | A    | 51.8717 | -0.4246 |
| Melton  | A    | 52.1064 |  1.3322 |
| Didcot  | B    | 51.6024 | -1.2321 |
| Oxford  | B    | 51.7486 | -1.265  |
+---------+------+---------+---------+

(실제로 가장 작은 지역은 57 포인트, 가장 큰 626)

도움이 되었습니까?

해결책

이를위한 내장 방법은 없지만 SQL 공간 도구 코드 플렉스 패키지. 정확히 원하는 것에 따라 경계 박스 집계 또는 Union 골재를 사용하고 상자 대신 최소 다각형을 얻기 위해 ConvexHull을 호출하는 데 관심이있을 수 있습니다.

다른 팁

여기에 도착했고 당신이 얻는 코드를보고 싶은 사람 (The Awesome)의 이점 SQL 공간 도구:

DECLARE @points TABLE
(
 Name VARCHAR(50),
 Area CHAR(1),
 Point GEOGRAPHY
)

INSERT INTO @points VALUES ('Ipswich', 'A', geography::STGeomFromText('POINT( 1.156  52.053  )', 4326))
INSERT INTO @points VALUES ('Luton', 'A', geography::STGeomFromText('POINT(  -0.4246 51.8717 )', 4326))
INSERT INTO @points VALUES ('Melton', 'A', geography::STGeomFromText('POINT( 1.3322  52.1064 )', 4326))

INSERT INTO @points VALUES ('Didcot', 'B', geography::STGeomFromText('POINT( -1.2321 51.6024 )', 4326))
INSERT INTO @points VALUES ('Oxford', 'B', geography::STGeomFromText('POINT( -1.265  51.7486 )', 4326))

SELECT  dbo.ConvexHullGeography(dbo.GeographyUnionAggregate(point)), 'red' as color, 1 as thickness
FROM @points
GROUP BY Area

결과를 볼 수 있습니다 지오 퀴리 2008.

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