我正试图在OSM磁贴上覆盖一些卫星图像数据。
我可以单独绘制它们,但似乎不能过度绘图,我认为这取决于预测。
我加载数据并获取投影信息
ds = gdal.Open(fname)
data = ds.ReadAsArray()
gt = ds.GetGeoTransform()
proj = ds.GetProjection()
data=data.astype(np.float64)
projcs = inproj.GetAuthorityCode('PROJCS')
projection = ccrs.epsg(projcs)
投影是
_EPSGProjection(32611)
然后我设置了情节
subplot_kw = dict(projection=projection)
fig, ax = plt.subplots(figsize=(12, 6), subplot_kw=subplot_kw)
然后获取OSM磁贴,设置轴并添加
imagery = OSM()
ax = plt.axes(projection=imagery.crs)
ax.add_image(imagery, 14)
最后,我设置了图像数据的范围,并使用imshow
添加它extent = (gt[0], gt[0] + ds.RasterXSize * gt[1],
gt[3] + ds.RasterYSize * gt[5], gt[3])
img=ax.imshow(data, extent=extent, origin='upper', cmap='jet', vmin=1, vmax=1.3, alpha=0.1, transform=imagery.crs)
这根本不显示图像数据,只显示OSM图块。
我认为问题在于transform关键字,但我不知道如何修复它。
答案 0 :(得分:1)
transform参数的值应该是您正在绘制的数据所表示的坐标系。它与您想要显示的投影无关。您使用OSM坐标系作为图像数据的变换,这是错误的。您应该使用通过epsg代码为图像定义的投影。