Широтно-долгосрочное преобразование в координаты х / у - PullRequest
1 голос
/ 18 августа 2010

У меня есть изображение openstreetmap.левый верхний угол - широта: 80 лон: -169, а правый нижний угол - широта: -56 лон: 190 - изображение имеет ширину: 2618 и высоту: 1513

. Как преобразовать данные широта / долгота-координаты к фотографиям x / y-координаты?

Я попробовал это сам, но не мог понять, как преобразовать координаты.

Я надеюсь, что кто-то может ответить на мой вопрос.

Ответы [ 3 ]

4 голосов
/ 07 сентября 2010

Вопрос, как его спросили, почти бессмысленный.Запрашиваемая площадь охватывает почти весь земной шар, от 80N 169W до 56S 190E.Это означает, что полоса от полюса до полюса составляет от 170 до 169 Вт, диск вокруг северного полюса к северу от 80N и более крупный диск вокруг южного полюса к югу от 56S.Нет единой лучшей проекции из этой большой области земного шара на экран.См. Вики на географические координаты и картографические проекции в качестве отправных точек для общего фона.

Тем не менее, это разумный вопрос, если входные данные разумны.

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

Гораздо лучшая проекция будет отображать широту на Y, но масштабировать долготуна cos(latitude), чтобы получить X. Для достаточно маленьких областей масштаб почти постоянен по всей фигуре и может быть вычислен один раз и остается постоянным.

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

2 голосов
/ 07 сентября 2010

В вики есть пример кода для преобразования системы листов OpenStreetMap в lat / long и обратно:

http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames

Удачи!

2 голосов
/ 07 сентября 2010

Для более общего преобразования в и из проекций есть оболочки Perl и Python для PROJ.4 . Это позволит вам решить любую такую ​​проблему.

...