Script de conversió C.G. a C.P.

Script de conversió de coordenades geogràfiques a coordenades planes en la projecció "EPSG:25831 - ETRS89 / UTM zone 31N". Per Andrea Gómez i Òscar Navarro (2023)
mail@pastecode.io avatar
unknown
python
5 months ago
2.0 kB
2
Indexable
Never
# Importem els mòduls necessaris per a treballar:
from pyproj import Proj
import pandas as pd

# Generem un model de projecció, indicant el tipus de dades d'entrada i el tipus de dades de sortida:
myProj = Proj("+proj=utm +zone=31 +north +ellps=WGS84 +datum=WGS84 +units=m +no_defs")

# Eliminem una opció de seguretat del mòdul "pd" (pandas) que ens impedeix guardar contingut a cel·les
pd.options.mode.chained_assignment = None

# Definim la funció que rebrà la latitud (lat) i longitud (lon) de coordenades geogràfiques i que les convertirà al format desitjat
def convertir(lat, lon):
    UTMlat, UTMlon = myProj(lon, lat) # El model myProj retorna primer la latitud i després la longitud, és per això que invertim els camps de sortida
    UTMlat, UTMlon = int(round(UTMlat,0)), int(round(UTMlon,0))
    return(UTMlat, UTMlon) # Retornem les coordenades en format de coordenades planes en Universal Transversal Mercator

# Carreguem les dades de l'Excel Activitat_Sismica.xlsx
df = pd.read_excel(r"C:\Users\usuario\OneDrive\Projecte Mapa\Activitat_Sismica.xlsx")

# Definim les columnes (futurs atributs) UTMLAT per a la latitud i UTMLON per a la longitud en format de coordenades planes
df["UTMLAT"] = ''
df["UTMLON"] = ''

# Definim el marcador de la fila que estem editant a l'arxiu Excel, que inicia amb la fila 0
fila = 0

# Executem la funció "convertir()" per a cada valor de longitud i latitud de l'Excel mitjançant un bucle (for loop)
# És important actualitzar el valor del número de fila en cada iteració 
for lat, lon in zip(df["LAT"], df["LON"]):
    utmlon, utmlat = convertir(lat,lon)
    df["UTMLAT"][fila] = utmlat
    df["UTMLON"][fila] = utmlon
    fila +=1

# Exportem les dades en un nou Excel anomenat "Activitat_Sismica_UTM" per no reemplaçar l'anterior i evitar corrompre dades. 
df.to_excel(r"C:\Users\usuario\OneDrive\Projecte Mapa\Activitat_Sismica_UTM.xlsx") # Aquest serà convertit a csv per al seu ús en QGIS