Tengo un script que realiza diversas funciones en los shapefiles, la mayoría de los cuales son polígono base. Sin embargo, algunos archivos son en base a puntos y tengo que especificar donde estos archivos están editando el script. Hay una técnica en python que permite que la secuencia de comandos para identificar cuales son los shapefiles de los polígonos, que son los puntos, y ejecutar las funciones necesarias. Me han proporcionado un fragmento (de pruebas) de mi script por debajo de la cual se concentra principalmente en el polígono shapefiles y me han comentado que la última línea de código que incluye la función que uso para el punto de shapefiles.
Algún consejo/orientación son más que bienvenidos como todavía estoy aprendiendo mi camino a través de python.
Estoy usando QGIS 2.6.0.
##Test=name
import os
import glob
from os.path import expanduser
home = expanduser("~")
# Folder path of the directory and the "Results" folder
path_dir = home + "\Desktop\Test\\"
path_res = path_dir + "Results\\"
def run():
# Set directory and search for all .shp files
os.chdir(path_dir + "Shapefiles\\")
for fname in glob.glob("*.shp"):
# Clip .shp files with the polygon shapefile "Grid.shp" and save files to Result folder (How to specify this for polygons only?)
polygon_output=processing.runalg("qgis:clip", path_dir + "Grid.shp", fname, path_res + "/"+ fname)
# (How to identify point shapefiles and run the following command?)
# point_output=processing.runalg("qgis:distancetonearesthub", path_dir + "Grid.shp", fname, 'HubName', 0, 0, path_res + "/"+ fname)
run()
EDITAR:
Gracias a la ayuda de todos, me las arreglé para conseguir un guión de trabajo (a pesar de que todo el código podría ser mejorado enormemente!).
##Test=name
import os
import glob
from qgis.core import *
from os.path import expanduser
home = expanduser("~")
# Folder path of the Results for shapefiles
path_dir = home + "\Desktop\Test\\"
path_res = path_dir + "Results\\"
def run():
# Set directory and search for all polygon .shp files
os.chdir(path_dir + "Shapefiles\\")
for fname in glob.glob("*.shp"):
shapefile = QgsVectorLayer( os.chdir(path_dir + "Shapefiles\\"), fname, "ogr" )
print shapefile.geometryType()
# Clip .shp files with the polygon shapefile "Grid.shp" and save files to Result folder
if shapefile.geometryType() == 3:
polygon_output=processing.runalg("qgis:clip", path_dir + "Grid.shp", fname, path_res + "/"+ fname)
# Use Distance to nearest hub function on point.shp files with the polygon shapefile "Grid.shp" as Hub layer and save files to Result folder
if shapefile.geometryType() == 3:
point_output=processing.runalg("qgis:distancetonearesthub", path_dir + "Grid.shp", fname, 'HubName', 0, 0, path_res + "/"+ fname)
run()