PHP - Конвертировать широту и долготу в x и y без использования какой-либо библиотеки - PullRequest
0 голосов
/ 08 февраля 2012

Этот вопрос задавался много раз, но я хочу получить ответ, который я могу использовать в приложении php.

Самый близкий ответ, который я нашел, был такой:

int x =  (int) ((MAP_WIDTH/360.0) * (180 + lon));
int y =  (int) ((MAP_HEIGHT/180.0) * (90 - lat));

Я не знаюнужно показать карту или что-то.Мне просто нужно рассчитать его.

Какими должны быть MAP_WIDTH и MAP_HEIGTH, если я использую приведенную выше формулу?

1 Ответ

2 голосов
/ 08 февраля 2012

Нет такой вещи как x и y координаты для Земли. Самое большее, вы можете вычислить x, y и z. Обратите внимание, что евклидово расстояние будет тогда проходить через поверхность земли.

Также должно быть совершенно очевидно, что любая система на базе x-y будет давать совершенно неточные результаты вблизи полюсов и вблизи линии дат ...

Сохраняйте данные такими, какие они есть - по широте, долготе (и высоте, если доступны) - и вместо вычисления евклидова расстояния используйте расстояние по большому кругу. Если у вас нет подробной информации о фактической форме Земли, лучшее, что вы можете сделать, - это приближение общего большого круга со сферой. И на самом деле довольно прост в использовании.

http://en.wikipedia.org/wiki/Great-circle_distance

...