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)
Cuando lo reemplazo
—
Mario
pcolormesh
con imshow
él dice NameError: el nombre 'imshow' no está definido ¿Cómo usar 'imshow' aquí? @countryman
Aquí hay algunos ejemplos realmente buenos: matplotlib.org/basemap/users/examples.html
—
countryman
se voltea hacia arriba si se volteó el origen del ráster que puede estar en la parte inferior izquierda o superior izquierda en algunas aplicaciones
@DanPatterson No tengo idea, por favor, eche un vistazo a mi script para encontrar dónde lo estoy metiendo.
—
Mario
imshow
lugar depcolormesh
? Toma una esquina diferente como origen de la imagen por defecto.