Преобразование географических координат (long, lat) в положение пикселей (x,y) для изображения SAR Sentinel-1
Как я могу получить (x, y) положение пикселя из географических координат на спутниковом изображении Sentinel-1 Synthetic Aperture Radar (SAR)?
Я могу получить доступ к загруженной информации об изображении sg как
from snappy import ProductIO
path='path_name'
product = ProductIO.readProduct(path)
sg = product.getSceneGeoCoding()
Но как я могу получить (x, y) позицию пикселя для желаемой широты и долготы, используя механизм привязки ESA в Python?
1 ответ
Используя приведенную ниже пользовательскую функцию, мы можем легко преобразовать любую (широту, долготу) в ее (x, y) позицию на изображении, при условии, что широта и долгота находятся в пределах нашего продукта.
from snappy import GeoPos
def XY_from_LatLon(ProductSceneGeoCoding, latitude, longitude):
#From Latitude, Longitude satellite image (SAR), get the x, y position in image
pixelPos = ProductSceneGeoCoding.getPixelPos(GeoPos(latitude, longitude), None)
x = pixelPos.getX()
y = pixelPos.getY()
if str(x)=='nan':
raise ValueError('Latitude or Longitude out of this product')
else:
return x, y
Например, для данного продукта ниже (как мы видим в scihub, это продукт на юге Греции), мы можем получить (x, y) положение на изображении координат Афин (широта =37,9838, долгота =23,7275) как
имя продукта: S1A_IW_GRDH_1SDV_20170821T162310_20170821T162335_018024_01E414_C88B
path='path to S1A_IW_GRDH_1SDV_20170821T162310_20170821T162335_018024_01E414_C88B.SAFE'
product = ProductIO.readProduct(path)
sg = product.getSceneGeoCoding()
x, y = XY_from_LatLon(sg, 37.9838, 23.7275)
x, y
# (13705.242822312131, 14957.933651457932)