두 개의 Geography 변수를 선언 한 SQL 쿼리가 있는데 값이 할당 된 후 다각형의 중심점을 찾으려고합니다. 변수.Geography 변수에서 EnvelopeCenter를 사용하면 SQL Server에서 올바른 값을 반환하지 않습니다.
DECLARE @g1 GEOGRAPHY;
DECLARE @g2 GEOGRAPHY;
SET @g1 = geography::STGeomFromText('POLYGON((-90.06875038146973 35.512324341620996,-90.06767749786377 35.51504904492378,-90.06407260894775 35.51499664765537,-90.06381511688232 35.512219543493465,-90.06875038146973 35.512324341620996))',4326);
SET @g2 = geography::STGeomFromText('POLYGON ((-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))',4326);
SELECT @g1 AS 'G1' ,
@g2 AS 'G2';
SELECT 'G1' AS 'Polygon' ,
@g1.EnvelopeCenter().Lat AS 'Lat' ,
@g1.EnvelopeCenter().Long AS 'Long'
UNION ALL
SELECT 'G2' AS 'Polygon' ,
@g2.EnvelopeCenter().Lat AS 'Lat' ,
@g2.EnvelopeCenter().Long AS 'Long'
지금, 두 번째 다각형, 그것은 47.6545001086162, -122.352999904254로 정확하게 중심 위도/경도 값을 반환합니다 :
이 내 코드입니다. 그러나 첫 번째 경우에는 90, 0의 값을 반환합니다.
첫 번째 다각형의 중심점이 올바르게 표시되지 않는 이유는 무엇입니까? 어떤 이유로이 방법이 가능하지 않다면 주어진 WKT 문자열의 중심점을 찾을 수있는 다른 방법이 있습니까?
완벽합니다. 35.513, -90.066이 내가 기대했던 것입니다. 하지만 일반적으로 입력 된 점의 순서를 제어하지는 못하고 일부 다각형에는 구멍이 있습니다. 값이 90, 0이면 공간을 반전시킬 수있는 방법이 있습니까? 수작업으로 포인트 시퀀스를 변경하면 특히 다각형에 구멍이있는 경우 지저분해질 수 있습니다. – Raj
가능하지 않다면 괜찮습니다. 나는 STCentroid() 메소드를 사용하여 비슷한 값을 얻는 것이 가능하다는 것을 발견했다. 대신에 'geometry'변수의 중심을 반환한다. (나는 단지 근사값이 필요하다.) 그리고 그 순서는 중요하지 않습니다. 그러나 그것이 가능한지 궁금합니다. 두 경우 모두 내 문제를 해결해 주셔서 감사합니다. – Raj
@Raj - 'STArea'를 사용하여 온 전성 체크를 추가 할 수 있으며, 다소 큰 것처럼 보이면 현재 지리와 'FullGlobe'사이에 'STDifference'를 사용할 수 있습니까? –