문제

(지리적으로 왜곡된) 지도에서 알려진 x/y 좌표에 매핑되는 여러 개의 위도/경도 쌍이 있습니다.

그런 다음 위도/경도 쌍이 하나 더 있습니다.가능한 한 최선을 다해 지도에 표시하고 싶습니다.이 작업을 수행하려면 어떻게 해야 합니까?

처음에 나는 가장 가까운 세 개의 위도/경도 지점에 대한 선형 방정식 시스템을 만들고 이들로부터 변환을 계산하기로 결정했지만 전혀 제대로 작동하지 않습니다.그것은 선형 시스템이기 때문에 더 가까운 지점을 사용할 수 없습니다.

북쪽이 위쪽에 있다고 가정할 수 없습니다.가지고 있는 것은 기존의 위도/경도->x/y 매핑뿐입니다.

편집하다:그것은 메르카토르 투영법이나 그와 유사한 것이 아닙니다.가독성을 위해 임의로 왜곡했습니다(지하철 노선도를 생각해보세요).지도의 다른 부분에 대한 왜곡이 계산하려는 매핑에 영향을 주지 않도록 가장 가까운 5~10개의 매핑만 사용하고 싶습니다.

또한 전체 지도는 ​​매우 작은 지리적 영역에 있으므로 지구에 대해 걱정할 필요가 없습니다. 평평한 지구 가정이면 충분합니다.

도움이 되었습니까?

해결책

왜곡의 종류에 대해 더 구체적인 내용이 있나요?예를 들어 위도와 경도가 메르카토르 투영을 사용하여 2D 지도에서 "왜곡"된 경우 변환 수학은 다음과 같습니다. 쉽게 이용 가능.

지도가 정말 임의로 왜곡된 경우 시도해 볼 수 있는 방법이 많이 있지만 가장 간단한 방법은 아마도 다음을 계산하는 것입니다. 가중 평균 기존 포인트 매핑에서.가중치는 새 지점에서 기존 지점 각각까지의 x/y 거리의 제곱의 역수일 수 있습니다.

일부 의사코드:

estimate-latitude-longitude (x, y)

    numerator-latitude := 0
    numerator-longitude := 0
    denominator := 0

    for each point,
        deltaX := x - point.x
        deltaY := y - point.y
        distSq := deltaX * deltaX + deltaY * deltaY
        weight := 1 / distSq

        numerator-latitude += weight * point.latitude
        numerator-longitude += weight * point.longitude
        denominator += weight

    return (numerator-latitude / denominator, numerator-longitude / denominator)

이 코드는 비교적 간단한 근사치를 제공합니다.투영이 지리적 좌표를 왜곡하는 방식을 더 정확하게 알 수 있다면 훨씬 더 나은 결과를 얻을 수 있을 것입니다.

다른 팁

괜찮은.이론적 관점에서 보면 왜곡이 "임의적"이고 어떤 솔루션이든 이 임의적 왜곡을 모델링해야 한다는 점을 고려하면 분명히 "답"을 얻을 수 없습니다.그러나 모든 해결책에는 상황의 현실을 반영할 수도 있고 반영하지 않을 수도 있는 일부 왜곡 모델을 (보통 암묵적으로) 부과하는 것이 포함됩니다.

왜곡 매핑의 일종의 지역적 연속성을 가정하는 모델에 가장 관심이 있는 것 같으므로 가장 확실한 선택은 이미 시도한 것입니다.가장 가까운 점 사이의 선형 보간.그 이상으로 나아가려면 보다 정교한 수학적, 수치해석 지식이 필요합니다.

그러나 이것을 더 많은 포인트로 확장할 수 없다고 가정하는 것은 잘못된 것입니다.최소 제곱 오류 접근 방식을 사용하면 가능합니다.다른 점의 오차를 최소화하는 선형 답을 찾습니다.이것은 아마도 가장 간단한 확장일 것입니다.즉, 가장 가까운 5개의 점을 선택하고 해당 점의 오류를 최소화하는 선형 근사치를 찾아보십시오.그리고 그것을 사용하십시오.다음에 이것을 시도해 보겠습니다.

이것이 작동하지 않으면 N 포인트 영역에 대한 선형성 가정이 깨집니다.이 시점에서는 2차 또는 3차 모델로 업그레이드해야 합니다.그 시점에서 수학은 바빠질 것입니다.

문제는 구가 여러 가지 방법으로 왜곡될 수 있으며 적도에 있는 모든 점을 알고 있으면 더 멀리 있는 점을 매핑하는 데 도움이 되지 않는다는 것입니다.

더 나은 '가까운' 점이 필요하면 이 세 점이 네 번째 점과 평면에 있다고 가정하고 보간을 수행할 수 있습니다. 경도 거리는 상수가 아니라 함수라는 것을 알 수 있습니다.

음.여기에 있는 질문에 대해 뭔가 빠졌을 수도 있지만 경도/위도 정보가 있는 경우 북쪽 방향도 알 수 있습니까?

측지선 좌표를 투영 좌표계에 매핑해야 하는 것 같습니다.예를 들어 osgb를 wgs84로 변경합니다.

관련된 수학은 사소하지 않지만 코드는 몇 줄만 나옵니다.시간이 더 있었다면 더 포스팅하고 싶지만 샤워가 필요해서 지루해서 링크를 걸어 놓겠습니다. 위키피디아 꽤 좋은 항목입니다.

메모:포스트 샤워가 편집되었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top