Intro
A Xunta ofrece datos sobre a localización e as características dos eólicos (aeroxeradores) en Galicia. No que respecta a este post, simplemente vou usar estes datos para crear visualizacións dos propios eólicos.
Os datos
Para descargar os datos, debes seguir a ligazón que aparece na imaxe, pero basicamente: botón de capas > Afeccións > Enerxía > Eólica.
O camiño para descargar estes datos
Isto descarga un arquivo .zip que contén varios formatos, o cal é útil dependendo do teu obxectivo específico. Para as visualizacións deste artigo, usei o formato .shp (Shapefile), aínda que os outros ficheiros poden conter datos diferentes ou máis detallados. En concreto, o .shp ten as seguintes columnas: 'OBJECTID', 'INFRAEST', 'NOME', 'ETRS89_X', 'ETRS89_Y', 'DIAM', 'ALT', 'NUM_ESTADO', 'SITUACION', 'geometry'. Un exemplo sería:
OBJECTID 2
INFRAEST AEROXERADOR
NOME PAXAREIRAS I
ETRS89_X 494628
ETRS89_Y 4.74572e+06
DIAM 44
ALT 40
NUM_ESTADO 5
SITUACION FUNCIONANDO, AUTORIZADO, EN OBRAS
geometry POINT (494628.4946999181 4745723.399695537)
Como podes ver e probablemente imaxinar ao observar os datos, o campo SITUACION non vale para nada, xa que todos teñen os mesmos valores. Porén, o resto da información pode ser útil.
A visualización
Como o obxectivo é simplemente a visualización, quixen probar kepler.gl. Para que os datos se rendericen correctamente alí, é necesario reproxectalos. Os datos da Xunta veñen en CRS 29N (a zona UTM de Galicia), pero Kepler require WGS 84 (EPSG:4326), que é o estándar global. Como a precisión milimétrica non é unha prioridade nestas visualizacións, podemos facer a conversión de xeito sinxelo con geopandas.
import geopandas as gpd
eolicos_gdf = gpd.read_file("your_path.shp")
eolicos_wgs84 = eolicos_gdf.to_crs("EPSG:4326")
eolicos_wgs84.to_file("your_output_file.geojson", driver="GeoJSON")
Ademais, para lograr unha visualización máis interesante, quixen aproveitar os datos contidos no .shp. Deste xeito, ao ler tanto a altura (ALT) como o diámetro (DIAM), podemos crear unha visualización en 3D máis informativa. Para iso, no que respecta aos cambios no ficheiro de saída, só precisamos obter o radio a partir do diámetro e incorporalo ao .geojson. Para conseguilo, cambiamos a xeometría de puntos individuais a polígonos (círculos):
import geopandas as gpd
eolicos_gdf = gpd.read_file("your_path.shp")
eolicos_gdf['geometry'] = eolicos_gdf.geometry.buffer(radii)
eolicos_wgs84 = eolicos_gdf.to_crs("EPSG:4326")
eolicos_wgs84.to_file("your_output_file.geojson", driver="GeoJSON")
A continuación, podemos subir o ficheiro a kepler.gl e seleccionar o campo de altura, asociándoo ao campo ALT do geojson. Iso debería xerar un resultado semellante a:
Mapa interactivo 3D: Altura e diámetro dos eólicos.
Ademais, usando o .geojson orixinal, tamén creei outra visualización de tipo heatmap para mostrar onde se concentran máis eólicos (ademáis, a intensidade da cor vén determinada pola altura, utilizándoa como proxy da potencia dos eólicos).
Mapa interactivo 2D: heatmap de eólicos.