Я пытаюсь отобразить широту и долготу землетрясений на карте мира, аналогично этому видео - https://www.youtube.com/watch?v=ZiYdOwOrGyc, и я пытаюсь реализовать ее в Python Tkinter, а не в JS.Проблема возникает, когда я пытаюсь преобразовать широту и долготу в координаты x и y на холсте tkinter.Я использовал формулы из вики-страницы web mercator https://en.wikipedia.org/wiki/Web_Mercator_projection, и мне не повезло, он либо слишком далеко или слишком далеко от карты.
В соответствии с формулами наЯ попытался изменить размер изображения карты мира до определенной ширины и высоты от (2000, 1546) до (1024, 512) или (512, 512), чтобы увидеть, что это что-то сделало, но это ставит точку слишком далекоили где-то еще целиком.После этого я попытался увидеть, если бы, среди прочего, я преобразовал широту / долготу в радианы для формул, но безопасно сказать, что я совсем не хорош в математике, так что это за мной.
Этокласс для круга, который будет помещен на карту мира, и он включает методы для преобразования широты и долготы в x и y:
class MyOval(object):
def __init__(self, lat, long):
#self.lat=math.radians(lat)
#self.long=math.radians(long)
self.lat=lat
self.long=long
self.x=None
self.y=None
self.oval_obj = None
def mercX(self, long):
long = math.radians(long)
a = ((256)/(2*math.pi)) * pow(2, 1)
b = long + math.pi
return a*b
def mercY(self, lat):
lat = math.radians(lat)
a = ((256)/(2*math.pi)) * pow(2, 1)
b = math.tan((math.pi/4) + (lat/2))
c = math.pi - math.log(b)
return a*c
def redraw_coords(self):
self.x = self.mercX(self.long)
self.y = self.mercY(self.lat)
, чтобы увеличить масштаб и прокрутить карту, я использовал для этого код python tkinter изздесь: Tkinter canvas zoom + move / pan
В качестве примера я использовал координаты широты / долготы (33.863, -117.4973333), это место в Калифорнии, и когда я запускаю свойзапрограммируйте, что все это на север, около Аляски.Снимок экрана Google Maps против моего места размещения: https://ibb.co/J77gwn4
РЕДАКТИРОВАТЬ: Вот ссылка на мой полный код + изображение карты мира все в zip: https://ufile.io/5b50flpa