Mehr

Wählen Sie mit pyqgis . Polygon-Features aus, die ein Linien-Feature schneiden

Wählen Sie mit pyqgis . Polygon-Features aus, die ein Linien-Feature schneiden


Wie wähle ich alle Features in einem Polygon-Layer aus, die ein Linien-Feature schneiden (überlappen)?

Ich muss das implementieren in Python mit QGIS, also pyqgis. Dieser Code veranschaulicht, wonach ich suche (Zeile 10 ist eine Art Pseudocode, d. h. wonach ich suche):

1 area_layer_file = "./Areas.shp" 2 line_layer_file = "./Lines.shp" 3 4 area_layer = QgsVectorLayer(area_layer_file, "Areas", "ogr") 5 line_layer = QgsVectorLayer(line_layer_file, "Lines", "ogr" ) 6 7 Flächen = [] 8 für line_feature in line_layer.getFeatures(): 9 request = QgsFeatureRequest(QgsExpression( 10 area_feature.geometry().intersects(line_feature.geometry()) 11 )) 12 Flächen = [Fläche für Fläche in area_layer.getFeatures(Anfrage)]

Dieses Bild veranschaulicht meine Frage: Die rote Linie schneidet die gelben ausgewählten Bereiche.


area = [] für line_feature in line_layer.getFeatures(): cands = area_layer.getFeatures(QgsFeatureRequest().setFilterRect(line_feature.geometry().boundingBox())) für area_feature in cands: if line_feature.geometry().intersects( area_feature.geometry()): area.append(area_feature.id()) area_layer.select(areas)

QGIS 3 können Sie wie oben beschrieben ausführen, jedoch ohne QgsFeatureRequest().

area = [] für line_feature in line_layer.getFeatures(): für area_feature in area_layer.getFeatures(): if line_feature.geometry().intersects(area_feature.geometry()): area.append(area_feature.id()) area_layer. auswählen(Bereiche)

Schau das Video: QGIS Python PyQGIS - Get raster band data with GDAL