2017-11-10 13 views
0

경계 아웃 :위도 구글 맵에서 경계에서 데이터를 얻을 수 엔티티 프레임 워크를 사용할 때 예외를 다음 얻을

FormatException을 : 24201 : 위도 값은 -90에서 90도 사이 여야합니다.

POLYGON((81.9882716924738 140.187434563007,21.5587046599696 140.187434563007,21.5587046599696 -40.1641279369925,81.9882716924738 -40.1641279369925,81.9882716924738 140.187434563007)) 

나는 다른 사람도 같은 문제가 있다는 것을 알 수 있지만,이 문제를 해결할만한 것을 찾지 못했습니다. 포인트의 첫 번째 좌표는 위도이고 두 번째 좌표는 경도입니다. 그리고 아무도 90 이상이 아닙니다. 왜이 오류가 발생합니까? 나는 lat와 lng를 바꿔 치기를 시도했지만 같은 문제가있다. 데미안으로

var poly = FindByBoundingBox(northEastLat, northEastLng, southWestLat, southWestLng); 
DbGeography polygon = DbGeography.FromText(poly, 4326); 

var parksWithinPolygon = dbCtx.SiteList.Where(p => 
    p.PolygonCenter.Intersects(polygon)).Select(p=>p.SiteName).ToList(); 

가 첫 번째 문제는 SQL Server가 경도를 먼저 다음 lattitude을 기대하고 있다는 것입니다 상태 :

은 실패 라인입니다. 그러면 또 다른 오류가 발생하여 다른 문제로 리디렉션됩니다.

"인스턴스가 유효하지 않아이 작업을 완료 할 수 없습니다."

최선의 방법은 다각형을 만드는 방법/순서입니다. 누구든지 SQL 서버의 다각형에 Google 경계를 매핑하는 데 성공 했습니까? 간단히 말해 Google지도 경계 내에서 데이터 (데이터에 포인트 열이 있음)를 가져 오려고합니다. 그것을 냈

public string FindByBoundingBox(double northEastLat, double northEastLng, double southWestLat, double southWestLng) 
{ //Create poylgon of bounding box 
    System.Globalization.CultureInfo customCulture = (System.Globalization.CultureInfo)System.Threading.Thread.CurrentThread.CurrentCulture.Clone(); 
    customCulture.NumberFormat.NumberDecimalSeparator = "."; 

    System.Threading.Thread.CurrentThread.CurrentCulture = customCulture; 
    var bboxWKT = string.Format("POLYGON(({1} {0},{1} {2},{3} {2},{3} {0},{1} {0}))", northEastLat, northEastLng, southWestLat, southWestLng); 

    return bboxWKT; 
} 
+0

"나는 lat와 lng를 교환했지만 같은 문제가 있습니다." SQL'GEOGRAPHY' WKT 표현은'long long'이 아닌'long lat'를 사용합니다. –

+0

나는 그 일을 시도했다. 그렇지만 나는 얻는다 :이 작업은 인스턴스가 유효하지 않기 때문에 완료 될 수 없다. MakeValid를 사용하여 인스턴스를 유효한 인스턴스로 변환합니다. MakeValid가 기하학 인스턴스의 포인트를 약간 이동시킬 수 있습니다. –

+0

POLYGON ((180 89.8489730732467,180 -80.2507546123243, -180 -80.2507546123243, -180 89.8489730732467,180 89.8489730732467)) –

답변

0

OK :

다각형을 계산하는 기능은 아래에 나열된다. Damien이 좌표의 순서가 google의 oppesite다는 것을 진술하는 때. SQL에서는 오래 걸릴 필요가 있습니다. 다음 것은 "왼손 규칙"입니다. 왼쪽 하단 모서리부터 시작하여 다각형을 작성한 다음 카운터 시계를 현명하게 작성해야합니다.