Bonjour, n'ayant pas obtenu de réponse sur un autre forum: QGIS : probleme avec code python intersection, je viens ici pour exposer mon problème. En effet il s'agit juste d'un simple code python dans qgis qui a pour but de selectionner dans une premiere couche adresse2015 (à jour) toutes les adresses qui ont comme type d'occupation 'Logement', ensuite récupérer cette selection faire l'intersection avec une couche ADRESSE_RIL. j'ai ensuite constater que l'intersection ne pouvait se faire car les entités (points) ne possedent pas les mêmes géométries (distante de quelques dizaines de cm). Vu que les géométries des mes deux couches ne s'intersectent pas; l'idée est de faire un BUFFER à partir de la même sélection (type d'occupation=logement) et ensuite:
-Récupérer dans un fichier 1 (csv ou excel si possible) les entités intersectées par le buffer et dont ID_RIL=ID_buffer
-Récupérer dans un fichier 2 (csv ou excel si possible) les entités intersectées par le buffer et dont ID_RIL DIFFERENT ID_buffer
-Récupérer dans un fichier 3 (csv ou excel si possible) les entités qui ne sont PAS intersectées et dont ID_RIL EXISTE dans ID_buffer
-Récupérer dans un fichier 4 (csv ou excel si possible) les entités qui ne sont NI intersectées et dont dont ID_RIL N'EXISTE PAS dans ID_buffer.
J'arrive pas à récupérer ma selection (type_occupation_logement) dans une couche temporaire et faire le buffer dessus.
et lorsque j’exécute le script dans la console python, la couche intersection en sortie est vide.
Voici mon début de code (j'avoue qu'il n'est pas vraiment terrible):
-Récupérer dans un fichier 1 (csv ou excel si possible) les entités intersectées par le buffer et dont ID_RIL=ID_buffer
-Récupérer dans un fichier 2 (csv ou excel si possible) les entités intersectées par le buffer et dont ID_RIL DIFFERENT ID_buffer
-Récupérer dans un fichier 3 (csv ou excel si possible) les entités qui ne sont PAS intersectées et dont ID_RIL EXISTE dans ID_buffer
-Récupérer dans un fichier 4 (csv ou excel si possible) les entités qui ne sont NI intersectées et dont dont ID_RIL N'EXISTE PAS dans ID_buffer.
J'arrive pas à récupérer ma selection (type_occupation_logement) dans une couche temporaire et faire le buffer dessus.
et lorsque j’exécute le script dans la console python, la couche intersection en sortie est vide.
Voici mon début de code (j'avoue qu'il n'est pas vraiment terrible):
# -*-coding: utf8-*-
#importer la librairie os
import os
#importer la librairie du systeme (sys)
import sys
# importer la librairie ogr
from osgeo import ogr
import processing #importer l'ensemble des algorithmes
from qgis.core import *
from qgis.gui import *
#from qgis.analysis import * #importe les deux libraires d'analyse de couche et de geometry
#on charge la couche adresse à jour
layer1 = iface.addVectorLayer("H:\SIG\Bases adresses\Shapefiles/adresse20150201.shp", "adresse2015", "ogr")
layer1.setSelectedFeatures([]) # pour s'assurer d'avoir une sélection vide au départ
for feature in layer1.getFeatures(): # chaque entité de la couche
if feature['TYPE_D_OCC']<> NULL:
if 'Logement' in feature['TYPE_D_OCC'] : # dont le champ occupation contient 'Logement'
layer1.select(feature.id()) # est ajoutée à la sélection from qgis.analysis
#import QgsGeometryAnalyzer
QgsGeometryAnalyzer().buffer(layer1, "H:\SIG\Bases adresses\Shapefiles/output.shp", 0.08, False, False, -1)
layer2 = iface.addVectorLayer("H:\SIG\Bases adresses\Shapefiles/output.shp", "buffer", "ogr")# on ajoute le buffer
#on charge la couche RIL avec laquelle on va faire l'intersection
layer3= iface.addVectorLayer("H:\SIG\Bases adresses\Shapefiles/ADRESSE_RIL_2015.shp", "ADRESSE_RIL_2015", "ogr")
#from qgis.analysis import * #importe les deux libraires d'analyse de couche et de geometry
from qgis.analysis import QgsOverlayAnalyzer
overlayAnalyzer = QgsOverlayAnalyzer()
overlayAnalyzer.intersection(layer2, layer3, r"H:\SIG\Bases adresses\Shapefiles\intersection.shp")
layer3= iface.addVectorLayer("H:\SIG\Bases adresses\Shapefiles/intersection.shp", "intersection", "ogr")