원 반경에 측지선 측정을 사용합니까?


15

현재 OpenLayers 매핑 사이트를 개발 중입니다. 선 도구와 영역 도구를 사용하여 측정 할 수 있습니다. 이 두 가지 모두 현재 OpenLayers API에 요약 된 측지 측정 을 계산하도록 설정되어 있습니다.

사용자 테스트 중에 사람들이 이미 알고있는 거리 (예 : 도시 간 운전)에 대한 도구의 측정에 의문을 제기 했기 때문에 평면 측정보다는 측지 측정을 사용합니다 .

사이트의 새로운 기능은 사용자가 설정된 반경의지도에 원을 그릴 수 있도록하는 것입니다. OpenLayers는 평면 거리를 사용하여 원을 그리는 것만 허용하므로 사용자가 측지 측정 도구를 사용하여 원을 측정 할 때 값이 일치하지 않습니다. 아래 이미지에서 원 평면 반경은 10km이지만 지름의 측지선 측정은 12km입니다.

분명히 이것은 사용자 (및 자신)가 어느 것이 올바른지 궁금하게 할 것입니다.

대체 텍스트

답변 을 보면 대부분의 데스크탑 GIS 시스템이이 문제를 "무시"하고 평면 측정 및 거리를 반환하는 것 같습니다. 그렇다면 평면 및 측지 측정을 처리하기위한 사용자 인터페이스 및 정확도 측면에서 가장 좋은 방법은 무엇입니까?

최신 정보

radii 및 Mercator 투영 문제를 보여주는이 Google 예제를 찾았습니다.

http://maps.forum.nu/gm_sensitive_circle2.html

원을 그리는 JavaScript 코드는 다음과 같습니다.

    var lat1 = (PI/180)* center.lat(); // radians
    var lng1 = (PI/180)* center.lng(); // radians

    for (var a = 0 ; a < 361 ; a++ ) {
        var tc = (PI/180)*a;
        var y = asin(sin(lat1)*cos(d)+cos(lat1)*sin(d)*cos(tc));
        var dlng = atan2(sin(tc)*sin(d)*cos(lat1),cos(d)-sin(lat1)*sin(y));
        var x = ((lng1-dlng+PI) % (2*PI)) - PI ; // MOD function
        var point = new GLatLng(parseFloat(y*(180/PI)),parseFloat(x*(180/PI)));
        circlePoints.push(point);
        bounds.extend(point);
    }

이 원은 지구의 곡률을 고려합니까?

최종 업데이트

http://geographika.co.uk/creating-a-geodesic-circle-in-openlayers에 게시 된 작업 코드


1
여기에 문제가 있어야합니다. 스페 로이드 다음 라인과 직선 사이의 짧은 거리에서 차이는 20 % 일 수 없습니다. somethig가 관련되어 있어야합니다.
Nicklas Avén

4
이 투영법은 적도에서 실제 척도 만있는 메르카토르 일 가능성이 매우 높습니다 (일반적으로 단일 위치에서 다른 곳에서 실제 척도로 메르카토르 투영법을 사용할 수 있지만 대부분의 전역 매개 변수화는 적도를 사용합니다). 그리고 실제 스케일 위도에서 북쪽 / 남쪽으로 향할 때 메르카토르의 스케일 오류는 실제로 매우 높습니다 (사실, 극점에서).
Paul Ramsey

측정 값은 북쪽 52도에서 측정되었으며 실제로 메르카토르 투영법으로 측정되었습니다. 그렇다면 이것은 적도 근처에 있지 않는 한 메르카토르에서 그려진 클라이언트 측 기능이 매우 부정확 한 영역과 길이를 반환한다는 것을 의미합니까?
geographika

1
그렇습니다. 미터 나 피트 단위로 로컬 그리드에 데이터를 투영하면 모든 것이 잘됩니다.
Ian Turton

2
@Paul Good 전화. 그러나이 데이터는 투영이 원통형임을 나타내며 그 중 메르카토르는 하나입니다. 실제 원통형 투영에서 수평 왜곡은 sec (위도)와 같습니다. 이 공식에 의해 20 / 12.13의 왜곡은 52.66 도의 위도로 작동합니다. 그건 정확히 리머 릭의 위도.
whuber

답변:


8

브라우저에서 직접 양조하는 경우 "원형"을 얻을 수 있습니다 (투영 때문에 화면에서 둥글 지 않고, 그리는 데 필요한 많은 점이있는 다각형으로 근사). 측지 계산의 직접적인 형태 : 주어진 점, 방향 (방위각), 그리고 결과 점을 제공하는 거리. 자세한 내용 : http://en.wikipedia.org/wiki/Vincenty%27s_formulae#Direct_Method

사람처럼 보인다는 이미 자바 스크립트로 번역을했다 : http://www.movable-type.co.uk/scripts/latlong-vincenty-direct.html . 운이 좋다!

마무리하기 :

  • 청크 (정점 #, n이라고 함)가 최종 결과를 어떻게 기꺼이 가질 것인지 결정하십시오.
  • 360도를 n 조각으로 나눕니다.
  • (범위 (n)에서 i의 경우 : polygon.add (vincenty_direct (start_point, i * 360 / n, 거리)))
  • 사실, 일부 투영 및 평탄화 자극을 수정하십시오.
    • 거의 확실하게 일반적인 웹 맵 투영을 사용하는 경우 결과 다각형이 극에 가까워지면 수직으로 크게 늘어납니다.
    • 마찬가지로 결과 다각형이 국제 날짜 줄을 지나면 실제로 질식됩니다.

건배!


1
Vincenty 메소드는 이미 utils 네임 스페이스 ( dev.openlayers.org/apidocs/files/OpenLayers/…) 의 OpenLayers에 추가 되었으며 이에 대한 설명, 특히 베어링 매개 변수를 사용하여이를 정리하십시오. 감사!
geographika

:) '자극'을 얼마나 자극하는지 알려주세요. 이상적으로 수정은 이미 OpenLayers의 일부일 뿐이며 제대로 작동하지만 확실하지 않습니다.
Dan S.

3

OpenLayers는 평면 거리를 사용하여 원을 그릴 수 있습니다

측지 원을 얻으려면 ESRI의 지오메트리 서비스에서 버퍼 작업을 사용할 수 있습니다 .

... 단위가 피트 또는 미터와 같은 선형 인 경우 측지 버퍼링이 수행됩니다.

자유롭게 접근 할 수있는 것이 여기에 있습니다 .


유용한 링크에 감사드립니다. 서비스를 호출하고 JavaScript에서 기능을 업데이트 할 수 있는지 확인하겠습니다. 저의 유일한 관심사는 언제든지 끌 수있는 웹 서비스에 의존하는 것입니다. 측지 버퍼링 포인트가 정확하고 실제 10km의 원이 될 것이라고 생각합니까?
geographika

원은 정확해야하지만 측정 도구를 사용하여 확인해야합니다. 지오메트리 서비스는 표준 arcgis 서버 설치의 일부라고 생각합니다. 따라서이 서비스가 폐기되면 선택할 수있는 웹이 더 많아 질 것입니다. google.com/…
Kirk Kuykendall
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.