Message posté par : arnaudp
----------------------------------------
Bonjour,
J'essaie de me former en python pour QGIS, alors j'ai trouvé l'exercice
intéressant.
J'ai fait le script suivant qui permet de sélectionner les paires de parcelles dont la
surface est égale à la valeur surface±tolerance (ici 800±20m^2).
Nous pouvons probablement optimiser ce script. Je dois avouer que je ne suis pas encore
familier des QgsSpatialIndex.
Je suis curieux de toute remarque sur ce script.
-----------------
Code :
# Inspiration : :
https://stackoverflow.com/questions/43608917/find-neighbouring-polygons-in-…
print('Debut du script.')
surface = 800.0
tolerance= 20.0
selection = []
layer = iface.activeLayer()
features = layer.getFeatures()
index = QgsSpatialIndex()
index.addFeatures(layer.getFeatures())
feature_dict = {f.id(): f for f in layer.getFeatures()}
for feature in features:
surface1 = feature.geometry().area()
#print('surface = ' + str(surface1))
parcellesProches = index.intersects(feature.geometry().boundingBox())
for parcelleProche in parcellesProches:
surface2 = feature_dict[parcelleProche].geometry().area()
#print('surface2 = ' + str(surface2))
if(surface1+surface2 <= surface + tolerance
and surface1+surface2 >= surface-tolerance
and not feature_dict[parcelleProche].geometry().disjoint(feature.geometry())
and parcelleProche != feature.id()):
print('somme surface = '+str(surface1+surface2))
selection.append(feature.id())
selection.append(parcelleProche)
print(feature.id())
print(parcelleProche)
layer.select(selection)
print('Fin du script')
-----------------
Je vous remercie.
Meilleures salutations.
----------------------------------------
Ce message est accompagné de fichiers, pour les télécharger, suivre le lien ci-dessous.
----------------------------------------
Le message est situé
https://georezo.net/forum/viewtopic.php?pid=357847#p357847
Pour y répondre : qgis_fr(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net