#python #image #maps #latitude-longitude #mercator
Вопрос:
Я создаю программу, которая на данной карте находит города по широте и долготе Вот карта: Карта Казахстана, 2312 x 1331
Я уже использовал формулу Меркатора, однако она показала мне только местоположение города на этой карте:Карта мира, и когда я пытаюсь использовать карту Казахстана, она показывает неправильное положение
import eel
import cv2
import math
import numpy as np
# Find IMAGE width and length to ues in function
img = cv2.imread('web/map.jpg')
height, width, channel = img.shape
print(img.shape)
#Almaty city lat 43.2500, lng 76.9000
#Nur-Sultan city lat 51.169392, lng 71.449074
def map_pixels(lat, lng):
FE = 180
radius = width / (2 * math.pi)
latRad = lat * math.pi / 180
lngRad = (lng FE) * math.pi / 180
x = (lngRad * radius)
yFromEquator = radius * math.log(math.tan(math.pi / 4 latRad /2))
y = (height / 2 - yFromEquator)
print(x,y)
return x, y
x, y = map_pixels(51.169392, 71.449074)
# Drawing CIRCLES on the MAP
def drawing(x, y):
cv2.circle(img, (x, y), 10, (0,0,255), cv2.FILLED)
cv2.imshow('Map with dots', img)
cv2.waitKey(0)
drawing(int(x), int(y))
Долгота и широта, которые я ввожу, чтобы найти правильные координаты только для карты мира, однако, когда я пытаюсь найти карту Казахстана, она показывает неправильные данные. Я уже понял, что эти две карты разные, но как я могу изменить формулу или код, чтобы все отображалось правильно
Комментарии:
1. Вам нужно будет знать проекцию карты, которая здесь, по-видимому, не является проекцией Меркатора.