3 votos

Intersección con distancia máxima

Estoy utilizando la herramienta de intersección (caja de herramientas de procesamiento) para intersecar polígonos. Tengo un gran número de pequeños polígonos para intersecar y se necesita mucho tiempo para hacerlo. Quizás se deba a la gran extensión de la forma del polígono. ¿Es posible establecer una distancia máxima que defina la distancia máxima entre los polígonos que serán intersecados? Me gustaría poner esta opción en un script python si es posible.

3voto

Yada Puntos 9489

He probado tu shapefile con el siguiente script, en la consola Python de QGIS, para producir una capa de memoria con todas las intersecciones (intersección de intersecciones; 57.401 características) del shapefile original (20.730 características).

import fiona
from shapely.geometry import shape, LineString
from shapely.ops import unary_union, polygonize
import time

c = fiona.open('/home/zeito/pyqgis_data/example/example_1.shp')

collection = []

start = time.time()

print "wait..."

for i,item in enumerate(c):
    geom = shape(item['geometry'])
    collection.append(geom)

rings = [ LineString(pol.exterior.coords) for pol in collection ]

union = unary_union(rings)

new_intersections = [geom.wkt for geom in polygonize(union)]

epsg = int(c.crs.values()[0].split(':')[1])

uri = "Polygon?crs=epsg:" + str(epsg) + "&field=id:integer""&index=yes"

mem_layer = QgsVectorLayer(uri,
                           'polygon',
                           'memory')

prov = mem_layer.dataProvider()

for i,feat in enumerate(new_intersections):
    feat = QgsFeature()
    feat.setAttributes([i])
    feat.setGeometry(QgsGeometry.fromWkt(new_intersections[i]))
    prov.addFeatures([feat])

QgsMapLayerRegistry.instance().addMapLayer(mem_layer)

end = time.time()

time_tot = end - start

print "total time = %.4f s" % time_tot 

En la primera imagen, he seleccionado una característica arbitraria en el shapefile original:

enter image description here

En la segunda imagen, donde la capa de memoria tiene un 50 % de transparencia, se puede observar que esta característica original tiene siete características en la nueva capa.

enter image description here

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X