Вопрос

У меня есть геокоординаты (лоскюмированные и долготы) некоторых городов и хотели бы получить координаты x, y, которые могут построить их на карту.

Карта - это стандартная, как http://www.wordtravels.com/images/map/spain/fuerteventura_map.jpg. Например.

Я попробовал несколько формулярных я нашел, но никто не работает :(. Простой код JavaScript или Ruby был бы лучшим :)

Это было полезно?

Решение

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

Другие советы

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

Если вы знаете, что ваша карта имеет сорт проекции Mercator, то координаты Lat / Long могут быть обработаны как X / Y, масштабированные и переведены соответствующим образом. То есть вы найдете простой AX + B и Cy + D, которые выполняют работу.

Если ваша карта не заставляет Mercator-projection (так как она, вероятно, не так ли, не пытается получить масштаб, поскольку этот кажется, что это кажется), то ваша лучшая ставка состоит в том, чтобы предположить, что это «земная тангенская» проекция. (Это работает нормально для небольших наземных бассейн.) В этом случае вам необходимо сначала проектировать LAT / LAND в трехмерную систему координат.

z=sin(lat)
x=cos(lat)*sin(long)
y=cos(lat)*cos(long)

Позитив Z указывает на северный полюс. Положительные y указывают на 0, 0, и положительные x указывает на lat 0 90 (восток) и положительные латы / длинные - север и восток. Конечно, вы должны сначала преобразовать в радианы.

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

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

После этого вы сделали это, вам нужно только повернуть глобус вперед, пока ваша оригинальная карта не будет лицевой стороной. Сделайте это с 2-D вращением в оси YZ. Использовать http://en.wikipedia.org/wiki/coordine_rotations_and_reflections. чтобы понять эту часть.

Наконец, ваши координаты X, Z собираются довольно хорошо выстроиться с координатами вашей карты X, Y для соответствующих масштабов / переводчиков, как описано ранее.

Возможно, это поможет, я сделал реализацию для США, используя только JavaScript.

Демо / код: http://the55.net/_11/sketch/us_map.

Используйте API Google Maps, вы можете наложить свой JPG на карте и правильно позиционировать.

Вот примерhttp://code.google.com/apis/maps/documentation/javascript/examples/overlay-hideshow.html.

А вот страница API о накладкахhttp://code.google.com/apis/maps/documentation/javascript/overlays.html.

Вам не будет легко, если вы не работаете в очень маленьком масштабе (и рядом с экватором). Википедия Географическая система координат Это хорошее начало ...

Более легкий путь можно использовать что-то вроде веб-отображение И придерживайтесь своими широтами и продольными.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top