Как отобразить широту/долготу на искаженную карту?

Динамический 2D-массив в основном представляет собой массив указателей для массивов . Вы можете инициализировать его с помощью цикла, например:

int** a = new int*[rowCount];
for(int i = 0; i < rowCount; ++i)
    a[i] = new int[colCount];

Вышеупомянутые для colCount= 5 и rowCount = 4 приведут к следующему:

enter image description here [/g1]

23
задан j0k 11 September 2013 в 11:47
поделиться

4 ответа

Есть ли еще определенные детали о виде искажения? Если, например, Ваши широты и долготы "искажены" на Вашу 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)

Этот код даст относительно простое приближение. Если можно быть более точными о способе, которым проекция искажает географические координаты, можно, вероятно, сделать намного лучше.

8
ответ дан fastcall 29 November 2019 в 03:10
поделиться

Хорошо. С теоретической точки зрения, учитывая, что искажение "произвольно", и любое решение, требует, чтобы Вы смоделировали это произвольное искажение, Вы, очевидно, не можете получить "ответ". Однако любое решение собирается включить наложение (обычно неявно) некоторая модель искажения, которое может или не может отразить действительность ситуации.

, Так как Вы, кажется, больше всего интересуетесь моделями, которые предполагают своего рода локальную непрерывность отображения искажения, наиболее очевидным выбором является тот, который Вы уже попробовали: линейная интерполяция между самыми близкими точками. Движение кроме того собирается потребовать более сложного математического и числового аналитического знания.

Вы являетесь неправильными, однако, в предположении, что Вы не можете развернуть это до большего количества точек. Вы можете при помощи наименьшего - ошибочный подход в квадрате. Найдите линейный ответ, который минимизирует ошибку других точек. Это - вероятно, самое простое расширение. Другими словами, возьмите 5 самых близких точек и попытайтесь придумать линейную аппроксимацию, которая минимизирует ошибку тех точек. И используйте это. Я попробовал бы это затем.

, Если это не работает, то предположение о линейности по области точек N повреждается. В той точке необходимо будет обновить или до квадратичной или до кубической модели. Математика собирается стать беспокойной в той точке.

2
ответ дан Louis Brandy 29 November 2019 в 03:10
поделиться

проблема состоит в том, что сфера может быть искажена, много путей, и знающий все те точки на экваторе, позволяют, говорят, справка привычки, Вы отображаете точки еще дальше.

Вам нужны лучшие 'близкие' точки, тогда можно предположить, что эти три точки находятся на плоскости с четвертым и делают интерполяцию - знающий, что расстояние долгот является функцией, не константой.

0
ответ дан nlucaroni 29 November 2019 в 03:10
поделиться

Ummm. Возможно, я пропускаю что-то о вопросе здесь, но если у Вас есть long/lat информация, у Вас также есть направление севера?

кажется, что необходимо отобразить геодезические координаты на спроектированную систему координат. Например, osgb к wgs84.

включенная математика нетривиальна, но код выходит единственное несколько строк. Если бы у меня было больше времени, то я отправил бы больше, но мне нужен душ, таким образом, я буду скучным и свяжусь с Википедия запись, которая довольно хороша.

Примечание: душ Сообщения отредактирован.

0
ответ дан graham.reeds 29 November 2019 в 03:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: