Я использую snappy, чтобы попытаться выяснить, каковы координаты x, y, чтобы обрезать изображение.
Я провел несколько тестов с использованием быстрых функций, но заметил, что с ними что-то не так. Я преобразовал X, Y из изображения в широту и долготу, а затем, используя эти координаты, попытался снова преобразовать их в X, Y, но не получил того же результата.
Идея или конечная цель состоит в том, чтобы получить координаты LatLong из geojson, прочитать их и, используя эти координаты, получить X, Y на изображении.
Обратите внимание, что путь относится к TIFF-файлу.
from snappy import ProductIO
from snappy import PixelPos, GeoPos
import numpy as np
path='/home/.../x.tiff'
###############################################################################
product = ProductIO.readProduct(path)
sg = product.getSceneGeoCoding()
def LatLon_from_XY(ProductSceneGeoCoding, x, y):
#From x,y position in satellite image (SAR), get the Latitude and Longitude
geopos = ProductSceneGeoCoding.getGeoPos(PixelPos(x, y), None)
latitude = geopos.getLat()
longitude = geopos.getLon()
return latitude, longitude
latitude, longitude = LatLon_from_XY(sg, 11048, 1365)
print('LatLong from PixelPosition')
print(latitude)
print(longitude)
### 38.3976151718
### -5.47978868123
###############################################################################
def getPixelPosFromLatLong(source, lat,lon):
if sg.canGetPixelPos() is not True:
raise Exception('Cant''t get Pixel Position from this source')
else:
pos = GeoPos(lat,lon)
pixpos = sg.getPixelPos(pos,None)
X = np.round(pixpos.getX())
Y = np.round(pixpos.getY())
return [X,Y]
[X,Y] = getPixelPosFromLatLong(path, 38.3976151718, -5.47978868123)
print('Pixel Position from LatLong')
print(X)
print(Y)
### 10715.0
### 1143.0
Есть ли другой способ получить пиксель X, Y из изображения, используя lat long?