¿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
Lea en los datos csv a Python. Puedes hacerlo con numposo o pandas, por ejemplo.
weather_stations = pd.read_csv('path_to_file.csv')
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 enanotransform
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
ymatplotlib
, 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