Tôi đang cố gắng vẽ sơ đồ raster bằng Pyhton. Hình ảnh không được lưu, mặc dù nó xuất hiện. Hơn nữa, pixel không xuất hiện ở vị trí chính xác. Tôi đang nhận được hình ảnh như hình bên dưới (đó là SAI, tuy nhiên, ghi nhãn lat-lon là chính xác.)
Dưới đây là định hướng chính xác, mà tôi đã xuất từ ArcGIS.
Có một số sai lầm trong việc đặt pixel vào đúng vị trí, nhưng tôi không nhận được nó. Làm thế nào để sửa nó?
Đây là kịch bản của tôi.
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
from osgeo import gdal
from numpy import linspace
from numpy import meshgrid
import numpy as
#################################################################################
ds = gdal.Open('Path\\To\\Raster.tif')
data = ds.ReadAsArray()
gt = ds.GetGeoTransform()
proj = ds.GetProjection()
#################################################################################
xres = gt[1]
yres = gt[5]
xmin = gt[0] + xres * 0.5
xmax = gt[0] + (xres * ds.RasterXSize) - xres * 0.5
ymin = gt[3] + (yres * ds.RasterYSize) + yres * 0.5
ymax = gt[3] - yres * 0.5
x_center=(xmin+xmax)/2
y_center=(ymin+ymax)/2
#################################################################################
fig = plt.figure(figsize=(18, 10))
ax = fig.add_subplot(111, axisbg='w', frame_on=True)
m = Basemap(llcrnrlon=xmin,llcrnrlat=ymin,urcrnrlon=xmax,urcrnrlat=ymax,
projection='tmerc', lat_0 = y_center, lon_0 = x_center)
parallels = np.arange(15.,30.,0.25)
m.drawparallels(parallels,labels=[1,0,0,0],fontsize=12, linewidth=0.4)
meridians = np.arange(70.,90.,0.25)
m.drawmeridians(meridians,labels=[0,0,0,1],fontsize=12, linewidth=0.4)
x = linspace(0, m.urcrnrx, data.shape[1])
y = linspace(0, m.urcrnry, data.shape[0])
xx, yy = meshgrid(x, y)
m.pcolormesh(xx, yy, data, cmap=plt.cm.jet)
plt.show()
plt.savefig('Path\\To\\Save_Image.png', bbox_inches='tight', pad_inches=.2, dpi=600)
Khi tôi thay thế
—
Mario
pcolormesh
bằng tên imshow
đó là NameError: tên 'imshow' không được xác định Làm thế nào để sử dụng 'imshow' ở đây? @countryman
Dưới đây là một số ví dụ thực sự hay: matplotlib.org/basemap/users/examples.html
—
người đồng hương
nó được lật xuống nếu bạn lật nguồn gốc của raster có thể ở dưới cùng bên trái hoặc trên cùng bên trái trong một số ứng dụng
@DanPatterson Tôi không có ý kiến gì, xin vui lòng xem kịch bản của tôi để tìm nơi tôi đang làm hỏng nó.
—
Mario
imshow
thay vìpcolormesh
? Nó lấy một góc khác làm nguồn gốc hình ảnh theo mặc định.