Прикрепляю
Файл shp
Коптер Phantom 4 pro, съемку проводим своими силами.
Перевод пикселей (X,Y) в координаты выполняю так, и это работает для меня (
ссылка на источник):
imageWidth = 1920
imageHeight = 1080
import numpy as np
def geoToList(latlon):
return np.array((latlon['lat'], latlon['lng']))
def listToGeo(latlon):
return {'lat': latlon[0], 'lng': latlon[1] }
def getGeoCoordinates(A, B, C, D, X, Y):
A, B, C, D = list(map(geoToList, [A, B, C, D]))
vBC = (C - B) / imageHeight
vAD = (D - A) / imageHeight
latlonPixel1 = vBC * (imageHeight - Y) + B
latlonPixel2 = vAD * (imageHeight - Y) + A
vM = (latlonPixel2 - latlonPixel1) / imageWidth
M = vM * X + latlonPixel1
return listToGeo(M)
Мне же нужно из координат получить пиксели.
Суть состоит в том, что бы показать на фото перекрытие фотографий, на которых проводилась работа.
Screenshot_1
Я нашел хороший пример для решения моей задачи (
ссылка на источник).
top_left_raw = GPS_COORD
bottom_right_raw = GPS_COORD
maprect = [0,0,400,500] # Picture of map's width and height
def translate(pos):
#rot = (pos[1], pos[0]*-1)
#reflect = (rot[0], rot[1]*-1)
#return reflect
return (pos[1], pos[0])
def gps_to_coord(pos):
pos1 = translate((pos[0]-top_left_raw[0], pos[1]-top_left_raw[1]))
pos2 = translate((bottom_right_raw[0] - top_left_raw[0], bottom_right_raw[1] - top_left_raw[1]))
x = (maprect[2]*pos1[0]) / pos2[0]
y = (maprect[3]*pos1[1]) / pos2[1]
return (x,y)
gps_to_coord(GPS_COORD)
Вот чего я добивался
Спасибо Всем! Задачка решена.