, 나는 당신이 당신의 latitude 및 longitude 반전 생각. 경도는 X, 위도는 Y로 측정합니다.
남북으로 쉽게 갈 수 있습니다. 우리는 360 도가 극을 통해 지구 주위의 완전한 원형임을 알고 있으며 that distance is 40008000 meters입니다. 지구가 완벽하게 구형이 아니기 때문에 오류를 설명 할 필요가없는 한 수식은 deltaLatitude * 40008000/360
입니다.
의심스러운 부분은 경도를 X로 변환하는 것입니다. 위도에 따라 다르므로 사용하려는 위도를 결정해야합니다. 출발지의 위도, 목적지의 위도 또는 중간의 임의의 지점을 선택할 수 있습니다. 적도에서 원주 (위도 0)는 40075160 미터입니다. 주어진 위도에서 원의 원주는 코사인에 비례하므로 수식은 deltaLongitude * 40075160 * cos(latitude)/360
이됩니다.
편집 : 귀하의 의견은 경도 공식에 문제가 있음을 나타냅니다. cos
에 대한 호출에서 라디안 대신도를 사용했을 수 있습니다. 이는 신참적인 실수입니다. 모호성을 없애기 위해 여기 파이썬에서 작동하는 코드가 있습니다.
def asRadians(degrees):
return degrees * pi/180
def getXYpos(relativeNullPoint, p):
""" Calculates X and Y distances in meters.
"""
deltaLatitude = p.latitude - relativeNullPoint.latitude
deltaLongitude = p.longitude - relativeNullPoint.longitude
latitudeCircumference = 40075160 * cos(asRadians(relativeNullPoint.latitude))
resultX = deltaLongitude * latitudeCircumference/360
resultY = deltaLatitude * 40008000/360
return resultX, resultY
은 내가 X 계산을위한 relativeNullPoint 위도를 사용하기로 결정했습니다. 동일한 경도를 가진 여러 점을 변환하면 동일한 X 값을 갖게된다는 이점이 있습니다. 남북 선은 수직입니다.
다시 편집 : 나는 이것이 매우 간단한 수식이며 그 한계를 알아야한다고 지적 했어야합니다. 분명히 지구는 평면이 아니므로 XY 좌표로 매핑하려는 시도는 약간의 타협을 수반 할 것입니다. 위에서 구한 수식은 변환하려는 영역이 평면적 인 것으로 간주 할 수있을만큼 작고 남북 회선의 미세한 곡률 및 비평 행성을 무시할 수있을 때 가장 효과적입니다. 투영법을지도하는 전체 과학이 있습니다. 몇 가지 가능성을보고 싶다면 Wikipedia을 시작하는 것이 좋습니다. 이 특정 투영은 the Equirectangular projection으로 알려져 있으며 일부 확장 기능이 추가되었습니다.
괜찮아요, 위도 계산이 매우 정확합니다 :)하지만 위도 - 미터 값은 항상 위도가 im 테스트에 큰 1.3 요소입니다. 지구 위도가 현재의 위도에 상대적으로 계산되어야하는지, 아마 다른 위도에 따라 다를 것이기 때문에이 요소로 나누는 것이 좋은 아이디어가 아닌 것 같습니까? –
@ 스폰서, 업데이트를 확인하십시오. –
정말 고마워요! 위대한 작품 :) –