위도 및 경도 쌍과 직교 좌표계 (x, y)로 미터 단위의 벡터 변환이 주어지면 새로운 좌표를 줄 알고리즘을 찾고 있습니다. 역 Haversine과 같습니다. 나는 또한 거리와 표제 변환으로 작업 할 수 있지만 아마도 느리고 정확하지 않을 것입니다. 이상적으로는 임베디드 시스템에서 작업 할 때 알고리즘이 빠릅니다. 정확도는 중요하지 않으며 10 미터 이내에 있으면 좋습니다.
위도 및 경도 쌍과 직교 좌표계 (x, y)로 미터 단위의 벡터 변환이 주어지면 새로운 좌표를 줄 알고리즘을 찾고 있습니다. 역 Haversine과 같습니다. 나는 또한 거리와 표제 변환으로 작업 할 수 있지만 아마도 느리고 정확하지 않을 것입니다. 이상적으로는 임베디드 시스템에서 작업 할 때 알고리즘이 빠릅니다. 정확도는 중요하지 않으며 10 미터 이내에 있으면 좋습니다.
답변:
변위가 너무 크지 않고 (몇 킬로미터 미만) 극에 맞지 않으면 y 방향의 111,111 미터 (111.111 km)가 위도 1 도인 빠르고 더러운 추정치를 사용하십시오. 111,111 * x 방향의 cos (latitude) 미터는 1도 (경도)입니다.
Liedman이 그의 답변에서 Williams의 항공 공식은 귀중한 원천이며, 최대 1km의 변위에 대해 10 미터 이내의 정확도를 유지하려면 아마도 더 복잡한 것을 사용해야 할 것입니다.
그러나 약 200m 이상의 포인트 오프셋에 대해 10m 이상의 오류를 기꺼이 받아들이려면 단순화 된 평지 계산을 사용할 수 있습니다. 최대 1km의 오프셋에서 오류가 여전히 50m 미만이라고 생각합니다.
//Position, decimal degrees
lat = 51.0
lon = 0.0
//Earth’s radius, sphere
R=6378137
//offsets in meters
dn = 100
de = 100
//Coordinate offsets in radians
dLat = dn/R
dLon = de/(R*Cos(Pi*lat/180))
//OffsetPosition, decimal degrees
latO = lat + dLat * 180/Pi
lonO = lon + dLon * 180/Pi
이것은 다음을 반환해야합니다.
latO = 51,00089832
lonO = 0,001427437
포인트를 먼저 투영하는 것이 좋습니다. 이 의사 코드와 같은 것을 만들 수 있습니다.
falt_coordinate = latlon_to_utm(original_koordinate)
new_flat_coordinate = flat_coordinate + (x,y)
result_coordinate = utm_to_latlon(new_flat_coordinate)
여기서 (x, y)는 원하는 오프셋입니다.
귀하의 지역에 적합한 평면 좌표계 인 utm을 사용할 필요는 없습니다.
어떤 소프트웨어를 사용하고 있습니까?
Google지도에서 허용 된 답변 (1/111111 == 1 미터)에서 언급 한 추정 알고리즘을 보여주는 간단한 맞춤지도를 만들었습니다. 여기에서보고 놀아주십시오.
https://drive.google.com/open?id=1XWlZ8BM00PIZ4qk43DieoJjcXjK4z7xe&usp=sharing