2013-11-01 3 views
2

SQL Server 2012 및 Google지도 클라이언트 측을 사용 중이며 SRID 3785를 사용합니다.지도를 사용하는 mercator입니다. 위치를 저장하기 위해 기하 포인트 데이터 유형을 사용합니다. 지오메트리가 지리학보다 빠르다고 읽었습니다. 그러나 점 사이의 거리를 계산할 때 특히 STDistance를 사용할 때 거리를 구할 수 있습니다 ... 십진법으로 ... 어느 것이 좋습니다 ...하지만 사용자에게 표시하기 위해서는 미터가 필요합니다 ... SRID를 알고있을 때 지구상의 어느 위치가 정확히 타겟팅되었는지 알 때 십진수로 거리를 미터로 어떻게 변환 할 수 있습니까? 지리학 적 방법을 알고 계량 거리를 계산하는 방법은 무엇입니까? 지리 유형이 등장하기 전에 개발자들이 어떻게 행동했는지 궁금합니다. 감사합니다!Sql Server 공간 데이터 형식 Geometry, STDistance 및 units : 미터를 가져 옵니까?

+0

해당 SRID에 대한 확신이 있습니까? 내 로컬 2012 인스턴스의 sys.spatial_reference_systems를 쿼리 할 때 해당 ID가없는 것을 볼 수 있습니다. –

+0

@Ben Thul - 두 가지 이유 때문에 SRID를 찾을 수 없습니다 : 1.) 3857이어야하므로 3785 (http://alastaira.wordpress.com/2011/01/23/the-google-maps-bing-maps-spherical-mercator-projection/) 2.) sys.spatial_reference_systems 테이블은 측지 공간 참조 시스템 만 기록하기 때문에 - EPSG : 3857은 예상 참조 시스템입니다. –

답변

6

가 소리 :

첫째, Google지도 프로젝션의 올바른 EPSG 코드는 3785가 아니라 3857입니다. 코드 뒤에 다소 복잡한 병력에 대한 설명은 내 블로그 게시물 http://alastaira.wordpress.com/2011/01/23/the-google-maps-bing-maps-spherical-mercator-projection/을 참조하십시오.

둘째, 해당 SRS를 올바르게 사용하는 경우 좌표는 이미 미터 단위 여야합니다. 예를 들어 EPSG : 3857의 런던 빅 벤 좌표는 약 -13900, 6710330이어야합니다. 다음과 같은 좌표가있는 경우 (51.5, -0.12) WGS84 위도/경도이므로 SRID가 포함 된 지리 데이터 유형을 사용해야합니다. 4326

세 번째로 3857은 Google Maps에서 사용하는 좌표계입니다. 공간 데이터를 표시하지만 해당 API의 조작에는 표준 WGS84 (SRID 4326)가 사용되므로이를 사용하여 데이터를 저장하는 것이 좋습니다.

매우 간단합니다. 결과를 미터로 표시하려면도 단위로 입력 한 좌표가있는 지리 데이터 유형이나 미터 단위로 입력 된 좌표가있는 지오메트리 데이터 유형을 사용해야합니다.

1

Geography 데이터 유형의 목적은 번거 로움없이 이러한 유형의 계산을 수행 할 수 있도록하기위한 것입니다. 기하학 데이터 유형은 평평한 표면을 대상으로하기 때문에 수행하는 계산이 상당히 직선이므로 아마 약간 더 빠릅니다.

정확한 SRID가 주어지면 지리 데이터 유형이 지구 광고의 곡률을 고려하여 정확한 결과를 제공합니다. 두 개체 사이의 거리에 따라 곡률이 크게 달라질 수 있습니다.

좋은 설명이있는 MSDN 게시물을 발견했습니다. 사용자의 질문에 대한 두 번째 응답을보십시오. 이 당신이 미터 정도에서 STDistance 결과를 변환하는 데 사용할 수 계산에 "엄지 손가락의 규칙은"이지만, 그것은 정확하지 않습니다 여기에 몇 가지 문제를 가지고 같은

http://social.msdn.microsoft.com/Forums/en-US/4f4648ef-9ef3-4a5c-974a-f34c5a325971/huge-difference-between-geography-and-geometry-results?forum=sqlspatial