我想把卫星图像数据放在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)
投影是
^{pr2}$然后我策划了这个阴谋
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关键字上,但我不知道如何解决它。在
transform参数的值应该是您正在打印的数据所用的坐标系。它与你想要可视化的投影无关。您使用OSM坐标系作为图像数据的转换,这是错误的。您应该使用通过epsg代码为图像定义的投影。在
相关问题 更多 >
编程相关推荐