layers = QgsProject.instance().mapLayers().values()
for layer in layers:
if layer.name() == "Polygon":
polygon_layer = layer
if layer.name() == "point":
point_layer = layer
layer = polygon_layer
layer.selectByExpression('"Type"=\'Natural\'', QgsVectorLayer.SetSelection)
Natural = layer.selectedFeatures()
for polygons in polygon_layer.getFeatures():
for points in point_layer.getFeatures():
if Natural[0].geometry().intersects(points.geometry()):
with open(path_c, "a", newline= '') as file:
writer = csv.writer(file)
writer.writerow([points ["ID"], points ["Land Use"], points ["Land Cover"], points["x"], points ["y"]])
In the current piece of code above, I am using "Natural[0]"
but this is only calling the first element in the list which is only one polygon.
What do I need to do to call all the elements and loop through those?
Best Answer
what you want is the following:
PS : I don't know what you are trying to do but if you want to see if the points are inside of a polygon, you should use :
polygon.geometry().contains(point.geometry())
instead of intersects