나는 WGS84 위도 / 경도로 포인트를 가지고 있으며 그들 사이의 "작은"(5km 미만) 거리를 측정하고 싶습니다.
http://www.movable-type.co.uk/scripts/latlong.html 에서 haversine 공식을 사용할 수 있으며 매우 잘 작동합니다.
그래도 Python Shapely 라이브러리를 사용하고 싶습니다. 따라서 거리보다 더 많은 작업을 수행 할 수 있으며 작업하는 규모에서 평평한 지구는 충분히 근사합니다. 지리 좌표를 직교 좌표로 안정적으로 투영하기 위해 Python을 사용 proj4
하고 있지만 원하는 것보다 더 큰 오류가 발생하는 것 같습니다.
로컬 UTM 영역을 사용하면 몇 미터의 허세 인 사이에 차이가 생깁니다. 그러나 UTM 영역을 해결하고 싶지는 않지만 (전 세계적으로 포인트가 될 수 있음) "구형 메르카토르"를 사용해 보았지만 이제는 거리와 투사 거리의 차이가 100 % 이상입니다. 구형 메르카토르에게 정말 맞습니까? 내가 정말로 원하는 것은 전 세계 어디에서나 서로 5km 이내에있는 두 지점에 대해 실행 가능한 직교 투영입니다.
from shapely.geometry import Point
from pyproj import Proj
proj = Proj(proj='utm',zone=27,ellps='WGS84')
#proj = Proj(init="epsg:3785") # spherical mercator, should work anywhere...
point1_geo = (-21.9309694, 64.1455718)
point2_geo = (-21.9372481, 64.1478206)
point1 = proj(point1_geo[0], point1_geo[1])
point2 = proj(point2_geo[0], point2_geo[1])
point1_cart = Point(point1)
point2_cart = Point(point2)
print "p1-p2 (haversine)", hdistance(point1_geo, point2_geo)
print "p1-p2 (cartesian)", point1_cart.distance(point2_cart)
이 시점에서 이들 사이의 소르 신 거리는 394m이며 utm zone 27, 395m를 사용합니다. 그러나 구형 메르카토르를 사용하면 데카르트 거리는 904m입니다.