¿Cómo trazo coordenadas en csv en el mapa desde 'natural_earth' usando cartopy y matplotlib?

He creado con éxito un mapa (frontera del país y costa) del sitio natural de la tierra, pero estoy encontrando difícil trazar las coordenadas de longitud y latitud del tiempo algunas estaciones al mapa. Las coordenadas longitud y latitud son el archivo CSV adjunto.

A continuación se recopila el código hasta ahora y el mapa generado:

import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import cartopy.feature as feature
import cartopy.io.shapereader as shapereader

[enter image description here] [1]

countries = shapereader.natural_earth(resolution='10m',
                                      category='cultural',
                                      name='admin_0_countries')

# Find the Nigeria boundary polygon.
for country in shapereader.Reader(countries).records():
    if country.attributes['SU_A3'] == 'NGA':
        nigeria = country.geometry
        break
else:
    raise ValueError('Unable to find the NGA boundary.')

plt.figure(figsize=(10, 5))
ax_map = plt.axes(projection=ccrs.PlateCarree())

ax_map.set_extent([-1, 19, -1, 17], ccrs.PlateCarree())

ax_map.add_feature(feature.COASTLINE, linewidth=.5)

ax_map.add_geometries([nigeria], ccrs.Geodetic(), edgecolor='0.8',
                  facecolor='none')

grid_lines = ax_map.gridlines(draw_labels=True)

plt.show()

¿Cómo trazo las coordenadas en el archivo CSV en el mapa generado, por favor? Gracias.

Descripción de la imagen: [https://i.stack.imgur.com/07vzp.png]

enlace con el archivo CSV: [https://drive.google.com/file/d/152UTebTc_sDbyKDXV3g52jYiVG4n6LEx/view?usp=sharing]

Pregunta hecha hace 3 años, 4 meses, 26 días - Por syntaxsavvy


3 Respuestas:

  • Esto requiere dos pasos

    1. Lea en los datos csv a Python. Puedes hacerlo con numposo o pandas, por ejemplo. weather_stations = pd.read_csv('path_to_file.csv')

    2. Utilice la función matplotlib scatter en sus geoaxias ax_map. Necesita decirle a los geoaxies el sistema de referencia de sus datos de entrada. Parece lons y lats, este es el sistema de referencia de coordenadas Plate Carree. Pasas esto con el enano transform

    Tomando los datos que importamos en el paso 1:

    ax_map.scatter(weather_stations['LONG'], weather_stations['LAT'], transform=ccrs.PlateCarree())

    Respondida el Dec 19, 2020 a las 12:22 - por binarybard1cc8

    Votos positivos: 0 | Votos negativos: 0

  • Para agregar las coordenadas del archivo CSV al mapa generado usando Cartopy y Matplotlib, primero debes leer el archivo CSV que contiene las coordenadas de latitud y longitud. Luego, puedes trazar esas coordenadas en el mapa. Aquí te muestro cómo podrías hacerlo:

    python
    import matplotlib.pyplot as plt
    import cartopy.crs as ccrs
    import cartopy.feature as feature
    import cartopy.io.shapereader as shapereader
    import pandas as pd
    import numpy as np
    
    

    Lee el archivo CSV con las coordenadas

    url = "https://drive.google.com/uc?id=152UTebTc_sDbyKDXV3g52jYiVG4n6LEx" df = pd.read_csv(url)

    Crea el mapa y agrega las características base

    plt.figure(figsize=(10, 5)) ax_map = plt.axes(projection=ccrs.PlateCarree()) ax_map.set_extent([-1, 19, -1, 17], ccrs.PlateCarree()) ax_map.add_feature(feature.COASTLINE, linewidth=.5) ax_map.add_geometries([nigeria], ccrs.Geodetic(), edgecolor='0.8', facecolor='none') grid_lines = ax_map.gridlines(draw_labels=True)

    Agrega las coordenadas del archivo CSV al mapa

    ax_map.scatter(df['longitud'], df['latitud'], color='red', transform=ccrs.PlateCarree(), label='Estaciones')

    Etiqueta las coordenadas

    for i, row in df.iterrows(): plt.text(row['longitud'], row['latitud'], f'Estación {i+1}', fontsize=8, transform=ccrs.PlateCarree())

    Muestra el mapa

    plt.legend() plt.show()

    Este código lee el archivo CSV desde la URL proporcionada, agrega las estaciones representadas por las coordenadas en el mapa y etiqueta cada estación con un número. Puedes ajustar el tamaño y el color de los puntos según tus necesidades.

    Asegúrate de instalar la librería pandas para leer el archivo CSV, y numpy para el manejo de los datos. Puedes instalarlas utilizando pip:

    bash
    pip install pandas numpy
    

    Prueba este código con tu archivo CSV y deberías poder visualizar las estaciones en el mapa generado anteriormente. ¡Espero que esta solución te sea útil!

    Respondida el Dec 20, 2020 a las 12:20 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Para trazar coordenadas en un mapa desde un archivo CSV utilizando cartopy y matplotlib, puedes seguir estos pasos:

    python
    import matplotlib.pyplot as plt
    import cartopy.crs as ccrs
    import cartopy.feature as feature
    import cartopy.io.shapereader as shapereader
    import pandas as pd
    
    

    Leer las coordenadas del archivo CSV

    df = pd.read_csv("coordenadas.csv")

    Crear una figura y un eje

    fig, ax = plt.subplots(figsize=(10, 5))

    Agregar mapa base

    ax.set_global() ax.add_feature(feature.COASTLINE, linewidth=.5)

    Trazar las coordenadas

    ax.scatter(df["longitud"], df["latitud"], transform=ccrs.PlateCarree(), s=10, color='red')

    Mostrar el mapa

    plt.show()

    Explicación del código:

    • Importamos las bibliotecas necesarias.
    • Usamos `pandas` para leer las coordenadas del archivo CSV.
    • Creamos una figura y un eje de mapa.
    • Agregamos un mapa base usando `feature.COASTLINE`.
    • Trazamos las coordenadas como puntos dispersos utilizando `ax.scatter()`.
    • Transformamos las coordenadas a la proyección `PlateCarree` para que coincidan con el mapa base.
    • Mostramos el mapa.

    Nota:

    Asegúrate de que el archivo CSV tenga columnas llamadas "longitud" y "latitud". Ajusta el tamaño de los puntos y el color según tus preferencias.

    Respondida el Dec 20, 2020 a las 12:26 - por Gemini

    Votos positivos: 0 | Votos negativos: 0