AME*_*AME 5 python geocoding geospatial proj satellite-image
我有一个3712x3712像素大小的地球静止eumetsat卫星图像.地球周围有一些黑色,因此图像看起来像这样:

对于地球的每个像素,我想得到它的荒芜和经度.我知道有pyproj,我能够像这样实例化一个投影:
sat = pyproj.Proj('+proj=geos +lon_0 +h=035785831.0 +x_0=0 +y_0=0')
Run Code Online (Sandbox Code Playgroud)
但歌厅像素的latlon(使用sat(x,y,inverse=True)这里x和y在图像中的像素点坐标),显然是不可能的,因为投影不知道我的图像尺寸(3712x3712).
我错过了什么?
我认为您正在使用正确的投影库和设置。
eumetsat 网站上报告了典型的像素分辨率(每像素公里), 报告称每像素约为 3 公里。
您可以通过在子午线上将 lon/lat 转换为 x,y 并将其除以像素数(-81 度,81 度是最大范围,请参阅 eumetsat 站点以获取参考信息,http://www.eumetsat.org/)来检查它。 eumetsat.int/):
import pyproj
sat = pyproj.Proj('+proj=geos +lon_0 +h=035785831.0 +x_0=0 +y_0=0')
x,y = sat( 81.299, 0, radians = False, errcheck = True)
print (x * 2.0 / 3712.0 ) / 1000.0
Run Code Online (Sandbox Code Playgroud)
将为您提供 2.927 的值,该值符合 eumetsat 提供的信息。
接下来,您可以通过定义地图上的一组众所周知的点(例如沿海特征)、确定它们的 x/y 位置并在线查找它们的纬度/经度坐标来进一步校准。您可以尝试使用一系列像素分辨率并检查哪一个最适合或使用更复杂的例程。
分辨率可能取决于您距离赤道的距离,请参阅此处)。因此,您可能需要在多个纬度上使用上述例程。