Преобразование значений пикселей x, y в широту и долготу - PullRequest
0 голосов
/ 08 июля 2020

У меня есть широта, долгота и масштаб центра окна карты. У меня есть окно карты размеров. У меня также есть пиксельные позиции определенных c событий на карте (проекция меркатора -openstreetmap) в окне. Может ли кто-нибудь помочь мне преобразовать эти позиции пикселей в координаты широты и долготы или любую другую систему координат, которую я смогу визуализировать на другой карте позже? общий случай моей проблемы

1 Ответ

0 голосов
/ 09 июля 2020

Я нашел решение по этой формуле (https://en.wikipedia.org/wiki/Web_Mercator_projection) введите описание изображения здесь

  1. вычислите положение x, y моей центральной точки

  2. преобразовать систему координат окна в глобальную

  3. обратное преобразование

      def LatLontoXY(lat_center,lon_center,zoom):
         C =(256/(2*pi) )* 2**zoom
    
         x=C*(math.radians(lon_center)+pi)
         y=C*(pi-math.log( math.tan(  (pi/4) + math.radians(lat_center)/2    )  ))
    
         return x,y
    
     def xy2LatLon(lat_center,lon_center,zoom,width_internal,height_internal,pxX_internal,pxY_internal):
    
         xcenter,ycenter=LatLontoXY(lat_center,lon_center,zoom)
    
         xPoint=xcenter- (width_internal/2-pxX_internal)
         ypoint=ycenter -(height_internal/2-pxY_internal)
    
    
         C = (256 / (2 * pi)) * 2 ** zoom
         M = (xPoint/C)-pi
         N =-(ypoint/C) + pi
    
         lon_Point =math.degrees(M)
         lat_Point =math.degrees( (math.atan( math.e**N)-(pi/4))*2 )
    
         return lat_Point,lon_Point
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...