为了账号安全,请及时绑定邮箱和手机立即绑定

在 Python 底图上镜像的 GeoTIFF 栅格

在 Python 底图上镜像的 GeoTIFF 栅格

达令说 2023-07-27 15:42:29
我正在尝试使用底图在地图上绘制 .tif 栅格。使用 QGIS,我看到了它应该是的栅格层: QGIS 图像然而,当使用 python 底图绘制时,颜色关闭,并且投影以某种方式旋转 180 度并进行镜像,在图表的左侧投影一条随机蓝线:有关 .tif 文件的一些信息(通过 rasterio 和 Earthpy 包获取):<osgeo.gdal.Dataset; proxy of <Swig Object of type 'GDALDatasetShadow *' at 0x7fcf9bdbef90> >{'driver': 'GTiff', 'dtype': 'float32', 'nodata': -3.4028234663852886e+38, 'width': 2760, 'height': 1350, 'count': 1, 'crs': CRS.from_epsg(4326), 'transform': Affine(0.01, 0.0, 3.7,       0.0, -0.01, 71.2)}EPSG:4326BoundingBox(left=3.7, bottom=57.7, right=31.3, top=71.2)+proj=longlat +datum=WGS84 +no_defs原始栅格数据在此处下载(森林恢复潜力)并使用 QGIS 裁剪到正确的纬度和经度。我究竟做错了什么?import gdalfrom numpy import linspacefrom numpy import meshgridimport matplotlib.pyplot as pltfrom mpl_toolkits.basemap import Basemaplowlong = 3.7 #lower left corner of longitudelowlat = 57.7 #lower left corner of latitudeupplong = 31.3 #upper right corner of longitudeupplat = 71.2 #upper right corner of latitudepathToRaster = r'~/Data/Shapefile/NorwayPotential.tif'raster = gdal.Open(pathToRaster,1)print(raster)geo = raster.GetGeoTransform()geo = raster.ReadAsArray()mp = Basemap(projection='merc',             llcrnrlon=lowlong,             llcrnrlat=lowlat,             urcrnrlon=upplong,             urcrnrlat=upplat,             resolution='i')mp.drawcoastlines()mp.drawcountries()x = linspace(0,mp.urcrnrx,geo.shape[1])y = linspace(0,mp.urcrnry,geo.shape[0])xx,yy = meshgrid(x,y)mp.pcolormesh(xx,yy,geo)plt.show()
查看完整描述

1 回答

?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

代码行之后:

geo = raster.ReadAsArray()

您可以通过以下方式翻转数据数组

geo =  geo[::-1,:]

并应该得到正确的结果。


查看完整回答
反对 回复 2023-07-27
  • 1 回答
  • 0 关注
  • 102 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信