Estoy tratando de trazar un mapa ráster con Pyhton. La imagen no se está guardando, aunque aparece. Además, los píxeles no aparecen en el lugar exacto. Estoy obteniendo la imagen como se muestra a continuación (que es INCORRECTO, sin embargo, el etiquetado lat-lon es correcto).
A continuación se muestra la orientación correcta, que he exportado desde ArcGIS.
Hay algún error al colocar el píxel en la ubicación correcta, pero no puedo obtenerlo. ¿Cómo corregirlo?
Aquí está mi guión.
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
lugar depcolormesh
? Toma una esquina diferente como origen de la imagen por defecto.pcolormesh
conimshow
él dice NameError: el nombre 'imshow' no está definido ¿Cómo usar 'imshow' aquí? @countrymanRespuestas:
Resolví este problema.
Estaba leyendo el archivo ráster en fila de arriba a abajo, y dibujándolo en fila de abajo hacia arriba.
Como no puedo hacer nada tramando, volteé la matriz y funcionó.
A continuación se muestra la modificación que hice,
fuente