J'essaie de tracer une carte raster en utilisant Pyhton. L'image n'est pas enregistrée, bien qu'elle apparaisse. De plus, les pixels n'apparaissent pas à l'endroit exact. Je reçois l'image comme indiqué ci-dessous (ce qui est faux, cependant, l'étiquetage lat-lon est correct.)
Vous trouverez ci-dessous l'orientation correcte, que j'ai exportée depuis ArcGIS.
Il y a une erreur en plaçant le pixel au bon endroit, mais je ne l'obtiens pas. Comment le corriger?
Voici mon script.
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)
imshow
au lieu depcolormesh
? Il prend un coin différent comme origine de l'image par défaut.pcolormesh
avecimshow
elle dit NameError: nom « imshow » est pas défini Comment utiliser `imshow ici? @countrymanRéponses:
J'ai résolu ce problème.
Je lisais le fichier raster en ligne de haut en bas et je le traçais en ligne de bas en haut.
Depuis, je ne peux rien faire avec le traçage, j'ai inversé le tableau, et cela a fonctionné.
Voici la modification que j'ai apportée,
la source