x 및 y 필드에서 지리 / 형상 열 만들기-SQL Server 2008


26

SQL Server 2008의 새로운 기능이며 내 질문 / 필요를 이해하기를 바랍니다.

따라서 데이터베이스 (공간)에 3 개의 필드 (이름, 위도 및 경도)가 포함 된 테이블이 있습니다. 해당 필드 (Lat 및 Long)를 기반으로 지오메트리 / 지리 열을 만들려고하지만 불행히도 성공하지 못했습니다.

내 질문은 : 어떻게 관리 할 수 ​​있습니까?


답변:


36

이와 같이 계산 열을 추가 할 수 있습니다

alter table yourTable add geographyColumn as geography::STGeomFromText('POINT('+convert(varchar(20),Long)+' '+convert(varchar(20),Lat)+')',4326)

Long 및 Lats를 숫자로 저장하기 때문에 lng 또는 lat에서 변환을 추가했습니다.


3
UPDATE yourdatabase 세트 geometry_column = 기하학 :: 포인트 ([ColX], [ColY, SRID) : 귀하의 답변 주셔서 감사합니다, 나는이 줄을 사용하여 내 문제를 해결하기 위해 관리
튜더

3
이것에 대한 트리거를 만들 수 있습니까? 필드 (열 X 및 Y)를 정보로 채울 때와 마찬가지로 위에서 언급 한 스크립트가 실행됩니다.
Tudor

10

STGeomFromText()또는 STPointFromText()SQL 메소드 를 원하는 것 같습니다.

DECLARE @g geography;
SET @g = geography::STGeomFromText('POINT(-122.34900 47.65100)', 4326);
SELECT @g.ToString();

또는

DECLARE @g geography;
SET @g = geography::STPointFromText('POINT(-122.34900 47.65100)', 4326);
SELECT @g.ToString();

당신의 작성 Geometry또는 Geography필드를, 당신의 위도 / 경도 값을 사용하여 해당 필드를 채우는 데 SQL을 사용합니다.


다음 방법을 사용하는 것의 차이점은 무엇입니까?DECLARE @g geometry; SET @g = geometry::STPointFromText('POINT (100 100)', 0);
awesomo

@awesomo-네, 원한다면 실제로 사용할 수 있습니다.
채드 쿠퍼


1

CONVERT(VARCHAR,명령문을 사용할 때 원래 Long / Lat 값의 반올림이 발생하는 경우

다음을 사용하십시오.

GeoData = geometry:: STGeomFromText('POINT(' + CAST(CAST(X AS decimal(13, 2)) AS varchar) + ' '  + CAST(CAST(Y AS decimal(13, 2)) AS varchar) + ')', 4326)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.