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.

Superponer mapas con diferentes ejes.

Soy nuevo en Python, intentando crear un mapa utilizando geopandas con dos capas. Una capa es un archivo de forma de los vecindarios de la ciudad de Portland, y la otra es un conjunto de datos con latitudes y longitudes en Portland que quiero marcar.

Cada una se muestra bien por separado (es decir, he llegado hasta ahí), pero la superposición de capas no funciona porque las coordenadas utilizadas para el mapa de la ciudad de Portland no están en forma de latitud y longitud. Hay instrucciones en el sitio web de datos abiertos de Portland sobre cómo usar QGIS para convertir un archivo de forma a un geoJSON, y al hacerlo se establece el CRS en EPSG:4269, pero no sé cómo hacerlo en Python con el archivo de forma.

Las imágenes muestran cada una funcionando bien hasta que intento representarlas juntas, ten en cuenta los ejes…

fig, ax = plt.subplots(figsize=(15,15))
street_map.plot(ax=ax, alpha=.4, color='grey')

Portland shapefile

fig, ax = plt.subplots(figsize=(15,15))
street_map.plot(ax=ax, alpha=.4, color='grey')
geo_df[geo_df['price']>250].plot(ax=ax, markersize=20, color='blue', marker="o")

Pines sin fronteras

fig, ax = plt.subplots(figsize=(15,15))
street_map.plot(ax=ax, alpha=.4, color='grey')
geo_df[geo_df['price']>250].plot(ax=ax, markersize=20, color='blue', marker="o")

Fallo en la superposición porque los ejes no coinciden

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para resolver este problema, debes asegurarte de que ambas capas tengan el mismo CRS. Puedes usar el módulo geopandas.crs para convertir el archivo de formas al CRS deseado antes de trazarlo. En tu caso, debes convertir el CRS del archivo de formas a EPSG:4269. Aquí tienes un ejemplo de fragmento de código que puedes modificar según las rutas de tus archivos y los nombres de las capas:

    import geopandas as gpd
    import matplotlib.pyplot as plt
    
    # leer el archivo de formas
    neighborhoods = gpd.read_file('ruta/al/archivo_de_formas.shp')
    
    # convertir el CRS a EPSG:4269
    neighborhoods = neighborhoods.to_crs(epsg=4269)
    
    # leer el conjunto de datos con latitudes y longitudes
    points = gpd.read_file('ruta/a/puntos.shp')
    
    # crear un gráfico con ambas capas
    fig, ax = plt.subplots(figsize=(15, 15))
    neighborhoods.plot(ax=ax, alpha=.4, color='grey')
    points[points['price'] > 250].plot(ax=ax, markersize=20, color='blue', marker="o")
    

    Al convertir el CRS del archivo de formas a EPSG:4269, deberías poder trazar ambas capas con ejes coincidentes.

Comments are closed.