Преобразовать декартову (X, Y) в координаты GPS (широта и долгота) - PullRequest
0 голосов
/ 24 марта 2020

Мне нужно преобразовать координаты X, Y в Широту и Долготу. Я прочитал проекции карты Википедии, похожие форумы по стеку, применил свои собственные решения и все еще не работал.

Координаты, которые я получаю из моей формулы, неверны, Долгота приемлема, но Широта нет. Я не вижу, где мои искажающие данные неправильны.

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

public void mouseReleased(MouseEvent e) {               
    DM.setUpCoordinates(layeredPane.getComponent(index-1).getLocation());       
}

После этого я пытаюсь правильно рассчитать широту и долготу проекции. У меня есть следующие данные:

  1. X, координаты Y с карты
  2. Общая ширина и высота с карты
  3. Широта и долгота в центре карты

То, что я пробовал до сих пор:

Попытка Equirect angular проекция

public void setUpCoordinates(Point p) {     
    //Equirectangular projection: optimal for small streets 
    Long = ((p.getX())/(6371000*Math.cos(MG.getLati())))+MG.getLongi(); 
    Lat = (((p.getY())/6371000)+MG.getLati());
}

Я также попытался реализовать проекцию Меркатора с по этой ссылке с очень небольшим или безуспешным результатом.

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

любая помощь, как преобразовать из (x, y) в (широта, долгота)?

Спасибо,

1 Ответ

0 голосов
/ 24 марта 2020

Вам необходимо сместить координаты пикселя по центру, а также использовать масштаб карты - долготу и широту (я предполагаю, что коэффициент удлинения Math.cos(MG.getLati()) учитывается в масштабе долготы)

Long = (p.getX() - MapWidth/2)*LongitudeRange/MapWidth  +MG.getLongi(); 
Lat = (p.getY() - MapHeight/2)*LatitudeRange/MapHeight + MG.getLati());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...