如何解决在Python底图上镜像的GeoTIFF栅格
我正在尝试在具有底图的地图上绘制一个.tif栅格。使用QGIS,我可以看到应该是的栅格图层: QGIS image
但是,当使用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.01,71.2)}
EPSG:4326
BoundingBox(left=3.7,bottom=57.7,right=31.3,top=71.2)
+proj=longlat +datum=WGS84 +no_defs
here已下载原始栅格数据(具有恢复森林的潜力),并使用QGIS将其裁剪为正确的纬度和经度。
我在做什么错了?
import gdal
from numpy import linspace
from numpy import meshgrid
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
lowlong = 3.7 #lower left corner of longitude
lowlat = 57.7 #lower left corner of latitude
upplong = 31.3 #upper right corner of longitude
upplat = 71.2 #upper right corner of latitude
pathToRaster = 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()
解决方法
代码行之后:
geo = raster.ReadAsArray()
您可以通过以下方式翻转数据数组
geo = geo[::-1,:]
并应获得正确的结果。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。