Convertir un Excel a un Shapefile de puntos con Python, Fiona y Pandas - Tutorial

fromExceltoShp.jpg

Hemos realizado un tutorial con un procedimiento alternativo en Python con Pandas y Fiona de un proceso común pero de varios pasos para crear shapefiles de puntos a partir de hojas de cálculo de Excel. El proceso implica algunas líneas de código para leer el archivo de Excel, definir la estructura del shapefile de salida y escribir los datos de puntos.

Código

Este es el código Python completo que se usa en este tutorial:

#import required packages
import fiona
import pandas as pd
from collections import OrderedDict
#open a total coliform table
totalColi = pd.read_excel('../tab/totalColiforms.xls', index_col=0)
totalColi.head()
X Y CF 4
ID
CAL-10 -77.211111 -12.063611 2.0
CAL-11 -77.167111 -12.052917 1.8
CAL-12 -77.193944 -12.063750 1.8
CAL-13 -77.175306 -12.063639 2.0
CAL-21 -77.189250 -12.100019 1.8
#check the data types
totalColi.dtypes
X       float64
Y       float64
CF 4    float64
dtype: object
#exporting resulting data as geopackage

#create schema and define crs
schema = {'properties': OrderedDict([('obsName', 'str'),('CF 4', 'float')]), 'geometry': 'Point'}
crs = {'init': 'epsg:4326'}

#open output shapefile
coliShp = fiona.open('../shps/totalColiforms.shp',mode='w',schema=schema,driver='ESRI Shapefile',crs=crs)

for index, line in totalColi.iterrows():
    feature = {
    'geometry':{'type':'Point','coordinates':(line.X,line.Y)},
    'properties':OrderedDict([('obsName',index),('CF 4',line['CF 4'])])
    }
    coliShp.write(feature)
coliShp.close()

Tutorial

Enjoy the videos and music you love, upload original content, and share it all with friends, family, and the world on YouTube.

Datos de entrada

Puede descargar los datos de entrada de este enlace.

 

Suscríbete a nuestro boletín electrónico

Suscríbase a nuestro boletín gratuito para recibir noticias, datos interesantes y fechas de nuestros cursos en recursos hídricos.

 

Posted on November 19, 2020 and filed under TutorialQGIS, TutorialPython.