지리 데이터를 지오메트리로 변환하지 않으려 고하므로 STIntersect에서 true를 반환합니다. 여기 SQL 내부의 지리 정보가 STIntersect에서 true를 반환하지 않습니다 (그러나 Geometry를 사용하면 true를 반환합니다).
는 SQL의 코드입니다 :DECLARE @point GEOGRAPHY = GEOGRAPHY::Point(1, 1, 4326)
DECLARE @polygon GEOGRAPHY = GEOGRAPHY::STGeomFromText('POLYGON((0 0, 0 2, 2 2, 2 0, 0 0))', 4326)
SELECT @polygon.STIntersects(@point), @point.STIntersects(@polygon)
다음 false를 반환 (0), 내가 사용하지만 경우 :
DECLARE @point GEOMETRY = GEOMETRY::Point(1, 1, 4326)
DECLARE @polygon GEOMETRY = GEOMETRY::STGeomFromText('POLYGON((0 0, 0 2, 2 2, 2 0, 0 0))', 4326)
SELECT @polygon.STIntersects(@point), @point.STIntersects(@polygon)
그것은 true를 돌려, 내가 놓친 거지 뭔가가있다? 내가 알고있는 것은 지리학이 3D 평면이고 기하학이 평면지도이지만, 그 점이 다각형 안에 있으면 계산에 지구를 사용하고 있습니다.
PS : 그것은이 작동 마이크로 소프트 SQL 서버 2012
감사합니다. 나를 위해 일했습니다. – MilkTea027
이것은 _left-hand_ 규칙을 설명하는 멋진 블로그 항목입니다. http://danielwertheim.se/2012/12/03/sqlgeography-in-sql-server-2012-polygon-must-start-on-correct-position- no/ 예 : 점이 다각형의 모든 선의 _left_에 있으면 _ 다각형을 교차합니다. – bounav
왼쪽 위 규칙을 설명하는 블로그 게시물의 URL은 다음과 같아야합니다. http://danielwertheim.se/sqlgeography-in-sql-server-2012-polygon-must-start-on-correct-position-no/ – Daniel