es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Error de valor: las formas de entrada no se superponen con el ráster. Geopandas/Rasterio, posible error de CRS al enmascarar.

Estoy utilizando este conjunto de datos:
https://sedac.ciesin.columbia.edu/data/set/gpw-v4-population-density-rev11/data-download
(Densidad de población del mundo en cuadrícula)

Con este mapa:
https://data.humdata.org/dataset/uganda-administrative-boundaries-as-of-17-08-2018
(Shapefile de límites administrativos de Uganda)

He recortado el mapa de Uganda a la región que necesito, así:

shaperecords = uganda.shapeRecords()
desiredshapes = []

for s in shaperecords:
    for x in s.record:
        if 'FORT PORTAL' in str(x):
            desiredshapes.append(s)

Los he cargado en un solo marco de datos geoespaciales de Pandas:

forgpd=[]
for x in desiredshapes:
    forgpd.append(x.geointerface)

gdf = gpd.GeoDataFrame.from_features(forgpd, crs=4326)

Luego estoy leyendo el archivo .tif de población mundial con Rasterio.

gpw = rio.open(‘UgandaData/gpw_v4_population_density_rev11_2020_30_sec.tif’)
gpw_region = gpw.read(1, window=gpw.window(*box))

Y me gustaría recortarlo, usando esto:

from rasterio import mask as msk

regionmask, regionmasktf = msk.mask(dataset=gpw, shapes=gdf.geometry, alltouched=True, filled=True, crop=True) #error here
regionmask = np.where(regionmask < 0, 0, regionmask).squeeze()

Obtengo los siguientes errores:

WindowError: las ventanas no se intersectan
ValueError: Las formas de entrada no se superponen con el ráster.

Este es mi sistema de coordenadas de referencia (CRS):

Densidad de población mundial: CRS.fromepsg(4326)

Uganda (Fort Portal):
<geographic 2d="" crs:="" epsg:4326="">
Nombre: WGS 84
Información del eje [elipsoidal]:
- Lat [norte]: latitud geodésica (grado)
- Lon [este]: longitud geodésica (grado)
Área de uso:
- nombre: Mundo
- límites: (-180.0, -90.0, 180.0, 90.0)
Datum: Sistema Geodésico Mundial de 1984
- Elipsoide: WGS 84
- Primer meridiano: Greenwich

¿Podría ser que la diferencia sea que no he especificado WGS 84 para la población mundial en cuadrícula? Si es así, ¿cómo se especifica esto?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que el CRS de ambos conjuntos de datos es el mismo (EPSG:4326). Los errores WindowError y ValueError indican que los dos conjuntos de datos no se superponen. Es posible que deba reproyectar uno de los conjuntos de datos para que coincida con el otro. Puede utilizar el método .to_crs() en GeoPandas para reproyectar los datos. Por ejemplo:

    gdf = gdf.to_crs(gpw.crs)
    

    Una vez que los conjuntos de datos estén en el mismo CRS, debería poder recortar el ráster utilizando el método mask.

Comments are closed.