我在底图中绘制了一个带有形状文件的地图,基于此,我想在地图中添加DEM数据(.tif)。我在SRTM网站上下载了一段.tif数据(经度和纬度真的在shapefile的范围内),但最后当我运行程序时,它没有在地图的特定位置显示栅格数据< / p>
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.patches import Polygon
from osgeo import gdal
from numpy import linspace
from numpy import meshgrid
fig = plt.figure(figsize=(8,6), dpi=80)
ax1 = fig.add_axes([0.1,0.1,1.0,1.0])
map = Basemap(llcrnrlon=114.7,
llcrnrlat=29.3,
urcrnrlon=120,
urcrnrlat=34.6,
resolution='h', projection='tmerc', lat_0 =31.5,lon_0=116.5,ax=ax1)
shp_info = map.readshapefile("bou2_4l",'state',color='k',linewidth='1',drawbounds=True)
ds = gdal.Open("srtm_60_06.tif")
data = ds.ReadAsArray()
loc3=[30,35]
lat3=[115,120]
x1,y1 = map(loc3,lat3)
x = linspace(x1[0],x1[1], data.shape[1])
y = linspace(y1[0],y1[1], data.shape[0])
xx, yy = meshgrid(x, y)
map.pcolormesh(xx, yy, data)
plt.show()
答案 0 :(得分:0)
如果你在gis.stackexchange上提出这个问题,你可能会得到一个更简洁的答案。
无论如何,这对我来说似乎是投影错误。我有待纠正,但STRM tiff是GeoTiff,所以他们在标题中有投影信息。
当SRTM数据使用地理坐标系时,看起来您正在使用Transverse Mercator。
尝试重新投影你的TIFF,我认为gdal.Warp应该这样做:
gdal.Warp(output_raster,input_raster,dstSRS='EPSG:your_basemap_projection')