Los procesos geoespaciales están presentes en la mayoría de las actividades e investigación de las personas debido a lo cual es importante optimizar el tiempo involucrado por los especialistas y mejorar la calidad de los análisis espaciales. PyQGIS es la extensión de Python en QGIS, este marco de trabajo permite el manejo de las herramientas de QGIS junto con las funciones de Python e incluso paquetes externos de Python mejorando la velocidad y la calidad de nuestro geoproceso y representación espacial.
Este tutorial muestra el procedimiento espacial para determinar las áreas no superpuestas en una región de interés con respecto a 7 capas diferentes. Este tutorial cubre los siguientes puntos como scripts en Python:
- Añadido y representación de las capas y la región de interés
- Corte de todas las capas a la región de interés
- Corrección topológica con Grass GIS
- Disolver las capas cortadas
- Determinar las zonas no superpuestass
Tutorial
Código
El siguiente es el código usado por partes.
Parte 1
import os
mainLayerFolder = 'C:\Users\Saul\Documents\Ih_AnalisisdeAreasNoSuperpuestasporMultiplesCapasconQGISyPyQGIS\Shp'
listLayers = []
for item in os.listdir(mainLayerFolder + '/Layers/'):
if item[-3:]=='shp':
listLayers.append(item)
dictLayers = {}
for layer in listLayers:
dictLayers[layer[:-4]] = iface.addVectorLayer(mainLayerFolder + '\\Layers\\' + layer , layer[:-4] , "ogr")
areaOfInterest = iface.addVectorLayer(mainLayerFolder + '\\AreaofInterest\\AreaOfInterest.shp' ,'AreaOfInterest',"ogr")Parte 2
from processing.tools import *
dictLayersClip = {}
for layer in dictLayers.keys():
general.runalg("qgis:clip",\
dictLayers[layer],\
areaOfInterest,\
mainLayerFolder + '\\LayersClip\\'+layer+'_Clip.shp')
dictLayersClip[layer+'_Clip'] = iface.addVectorLayer(mainLayerFolder + '\\LayersClip\\'+layer+'_Clip.shp',layer+'_Clip',"ogr")Parte 3
from processing.tools import *
dictLayersClipClean = {}
for layer in dictLayersClip.keys():
if dictLayersClip[layer].featureCount() > 0:
extent = dictLayersClip[layer].extent()
xmin = extent.xMinimum()
xmax = extent.xMaximum()
ymin = extent.yMinimum()
ymax = extent.yMaximum()
outputLayer = mainLayerFolder + '\\LayersClipClean\\'+layer+'_Clean.shp'
general.runalg("grass7:v.clean",\
dictLayersClip[layer],\
0,\
0.1,\
"%f , %f, %f, %f "% (xmin , xmax , ymin , ymax),\
-1.0,\
0.0001,\
outputLayer,\
None\
)
dictLayersClipClean[layer+'_Clean'] = iface.addVectorLayer(outputLayer , layer+'_Clean', "ogr")Parte 4
from processing.tools import *
dictLayersClipCleanDiss = {}
for layer in dictLayersClipClean.keys():
outputLayer = mainLayerFolder + '\\LayersClipCleanDiss\\'+layer+'_Diss.shp'
print(outputLayer)
general.runalg("qgis:dissolve",\
#areaOfInterest,\
dictLayersClipClean[layer],\
True,\
None,
outputLayer)
dictLayersClipCleanDiss[layer+'_Diss'] = iface.addVectorLayer(outputLayer , layer+'_Diss' , "ogr")Parte 5
from processing.tools import *
dictInter = {}
layerList = dictLayersClipCleanDiss.keys()
for item in range(len(layerList)):
outputFolder = mainLayerFolder + '\\LayersClipCleanDissInter\\'
#outputLayer = outputFolder + 'Step' + str(item) + '_______' + layerList[item] + '_Inter.shp'
outputLayer = outputFolder + 'Step' + str(item) + '.shp'
print(outputLayer)
if item == 0:
general.runalg("qgis:difference",\
areaOfInterest,\
dictLayersClipCleanDiss[layerList[item]],\
True,\
outputLayer)
elif item > 0:
general.runalg("qgis:difference",\
dictInter['Step' + str(item-1)],\
dictLayersClipCleanDiss[layerList[item]],\
True,\
outputLayer)
dictInter['Step' + str(item)]=iface.addVectorLayer(outputLayer , 'Step' + str(item), "ogr")Datos de ingreso
Puede descargar los datos de entrada para este tutorial de este enlace:
https://www.hatarilabs.com/s/Ih_AnalisisdeAreasNoSuperpuestasporMultiplesCapasconQGISyPyQGIS-7bpf.rar

FloPy es la librerìa de Python que construye y ejecuta modelos MODFLOW; esta librería se ha mejorado para proporcionar un soporte completo de MODFLOW 6 y la mayor parte de su desarrollo está relacionado con la funcionalidad de MODFLOW 6, herramientas para usar datos espaciales vectoriales, rasters y funcionalidades comunes de ploteo y exportación.
Python es un lenguaje de programación sencillo y potente; su simplicidad es notable en comparación con otros lenguajes de programación y su potencia se basa en la cantidad de herramientas disponibles para las diferentes áreas de estudio.
Hemos desarrollado un programa completo en modelamiento de aguas subterráneas con MODFLOW y FloPy que abarca desde los temas esenciales en Python hasta casos aplicados de modelamiento regional e intrusión marina. El programa está diseñado para brindarle al estudiante un enfoque metodológico para aprender FloPy basado en una serie de ejemplos aplicados junto con las opiniones/experiencias del profesor y la revisión del software.