在 Python 底图上镜像的 GeoTIFF 栅格

我正在尝试使用底图在地图上绘制 .tif 栅格。使用 QGIS,我看到了它应该是的栅格层: QGIS 图像

然而,当使用 python 底图绘制时,颜色关闭,并且投影以某种方式旋转 180 度并进行镜像,在图表的左侧投影一条随机蓝线:

http://img4.sycdn.imooc.com/64c21ffe0001405a06540754.jpg

有关 .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:4326

BoundingBox(left=3.7, bottom=57.7, right=31.3, top=71.2)

+proj=longlat +datum=WGS84 +no_defs

原始栅格数据在此处下载(森林恢复潜力)并使用 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()


达令说
浏览 110回答 1
1回答

宝慕林4294392

代码行之后:geo&nbsp;=&nbsp;raster.ReadAsArray()您可以通过以下方式翻转数据数组geo&nbsp;=&nbsp;&nbsp;geo[::-1,:]并应该得到正确的结果。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python