2016-09-06 3 views
1

geoFences를 Sql geography 인스턴스로 변환 중입니다.이 문제는 현재 일부 인스턴스에 대한 것입니다. 지형은 매우 이상하고 정확하지 않습니다.Sql geography가있는 부정확 한 그림

첫 번째 (녹색 영역)는 유효한 지오 펜스이며 두 번째는 SQL에서 생성됩니다.

This is the valid geofence

This is the Sql geography instance

공동 좌표는 다음과 같습니다 : -

긴 위도

51.576004 24.125605, 51.580467 24.122041, 51.585875 24.119730, 51.591239 24.118751, 51.597633 24.120043, 51.603470 24.123843,,515,51.607161 24.126114, 51.609950 24.126976 100 미터의 편차 51.616087 24.127133 , 51.625915 24.125997 , 51.639776 24.119691 , 51.576004 24.125605

즉 버퍼.

SQL 코드는 : -

geography::STGeomFromText('POLYGON((51.576004 24.125605, 51.580467 24.122041,51.585875 24.11973,51.591239 24.118751,51.597633 24.120043,51.60347 24.123843,51.607161 24.126114,51.60995 24.126976,51.616087 24.127133,51.625915 24.125997,51.639776 24.119691,51.576004 24.125605))', 4120).MakeValid().STBuffer(100) 

답변

2

다각형은 폐쇄 루프이다. 이것은 울타리가 도로 주변의 고리이어야 함을 의미합니다. 이 경우, 도로 다음과 같은 라인을 가지고, 당신은 선 스트링이이

Linestring과 같은

geography::STGeomFromText('LINESTRING(51.576004 24.125605, 51.580467 24.122041,51.585875 24.11973,51.591239 24.118751,51.597633 24.120043,51.60347 24.123843,51.607161 24.126114,51.60995 24.126976,51.616087 24.127133,51.625915 24.125997,51.639776 24.119691,51.576004 24.125605)', 4120) 

로 변경할 경우 즉,

POLYGON((51.576004 24.125605, ... ,51.576004 24.125605)) 

을 첫 번째 점을 반복

마지막으로 얻고 자하는 모양을 설명해야합니다.

원하는 결과를 얻으려면 선 스트링으로 변환하고 마지막 점을 제거한 다음 버퍼를 적용하십시오.

geography::STGeomFromText('LINESTRING(51.576004 24.125605, 51.580467 24.122041,51.585875 24.11973,51.591239 24.118751,51.597633 24.120043,51.60347 24.123843,51.607161 24.126114,51.60995 24.126976,51.616087 24.127133,51.625915 24.125997,51.639776 24.119691)', 4120).STBuffer(100) 

Buffered Linestring