• Координаты (широта и долгота) в x и y?

    @Oihoo Автор вопроса
    Прикрепляю Файл 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)


    Вот чего я добивался
    Спасибо Всем! Задачка решена.
    Ответ написан
    Комментировать