1 [QGIS 2.x] Problème d'intersection
Bienvenue! Inscrivez-vous et rejoignez notre communauté :)
  • Login:

Bienvenue sur Forum SIG - Systèmes d'Information Géographique et Géomatique.

Bienvenue sur le forumSIG. S'il s'agit de votre première visite, assurez vous de faire une recherche préalable dans les FAQ SIG. Vous devez vous inscrire avant de pouvoir poster.

Affichage des résultats 1 à 8 sur 8
  1. #1

    Date d'inscription
    mars 2016
    Messages
    15

    Question Problème d'intersection

    Bonsoir,

    Tout d'abord, meilleurs vœux à vous tous pour 2018.

    je travaille avec QGis 2.16.0.
    Je dispose d'une couche correspondant aux parcelles d'une agglomération. J'ai également téléchargé sur le site data.gouv.fr la couche correspondant aux contours des QPV (quartiers prioritaires de la politique de la ville).
    Ce que je voudrais c'est pouvoir savoir pour chaque parcelle si elle se situe dans un QPV et si oui son nom. J'ai besoin de cette information car je travaille en parallèle sur une base de données à la parcelle sur un fichier Excel.

    Il me semble que pour cela, il faut faire une intersection avec comme couche d'entrée celle des parcelles et comme couche d'intersection celle des contours des QPV. Je précise que mes 2 couches ont bien le même SRC.

    Cependant lorsque j'exécute l'intersection, je vois que la barre progresse jusqu'au environ des 2/3 puis s'arrête avec comme message d'erreur :
    "'NoneType' object has no attribute 'difference' See log for more details"

    Qu'en pensez-vous ? Est-ce la bonne méthode ou y en a-t-il une meilleure ?

  2. #2
    Chasseur de Bots
    Date d'inscription
    août 2011
    Localisation
    Paris > Strasbourg
    Emploi
    Chargé de mission SIG
    Âge
    34
    Messages
    1 431

    Par défaut Re : Problème d'intersection

    Et dans le cas d'une parcelle qui est sur plusieurs QPV, dans le cas où c'est possible, que souhaites-tu comme résultat ?

    Je partirai de mon côté sur une requête SQL :
    Code:
    SELECT parcelle.id AS id_parcelle,
    qpv.id AS id_qpv
    FROM parcelle, qpv
    WHERE ST_INTERSECTS(parcelle.geometry, qpv.geometry)
    UNION ALL
    SELECT parcelle.id AS id_parcelle,
    NULL AS id_qpv
    FROM parcelle, qpv
    WHERE NOT ST_INTERSECTS(parcelle.geometry, qpv.geometry)

  3. #3

    Date d'inscription
    mars 2016
    Messages
    15

    Par défaut Re : Problème d'intersection

    Je ne sais pas si cela est possible mais dans mon cas je ne pense pas que ce soit le cas.

    Par contre, je ne fais jamais de requête SQL. Mes couches sont en sur mon disque dure et non sur un serveur.
    Cela change-t-il quelques chose? Est-ce que je peux tout de même faire des requêtes SQL dans mon cas et si oui comment dois-je procéder ?

  4. #4
    Chasseur de Bots
    Date d'inscription
    août 2011
    Localisation
    Paris > Strasbourg
    Emploi
    Chargé de mission SIG
    Âge
    34
    Messages
    1 431

    Par défaut Re : Problème d'intersection

    Avec des shapefiles en dur rien n'empêche de faire des requêtes.
    Sous QGIS, c'est grâce à Virtual Layers :

    Menu 'Base de données' > 'Gestionnaire de base de données' > 'Gestionnaire de base de données'
    Développer 'Virtual Layers', développer 'QGIS Layers'
    Sélectionner 'QGIS Layers' et cliquer sur le 2ème bouton avec une clé à molette 'Fenêtre SQL'.

    Saisir le code SQL directement dans la zone de texte haute ou s'aider de l'interface Mapinfo-esque grâce au tout petit bouton 'SQL' en haut à gauche de l'éditeur.
    Pour tester la requête, cliquer sur le bouton 'Exécuter'.

    On peut ensuite charger la couche en cochant la case en bas 'Charger en tant que nouvelle couche' et saisir les informations nécessaires.

    Lorsque l'on utilise une couche dont le nom de la couche ou le nom des champs contiennent des espaces, encadrer le nom avec des guillemets :
    [...]
    FROM "ma couche"."mon champ"
    [...]

    Une fois la couche 'Virtual Layers' chargée, il ne faut ni renommer, ni fermer les couches qui ont servi à sa création tant qu'elle n'est pas sauvegardée.
    L'avantage est que si les données se modifient dans les couches d'origine, la couche 'Virtual Layers' se mettra à jour.

  5. #5

    Date d'inscription
    mars 2016
    Messages
    15

    Par défaut Re : Problème d'intersection

    Merci pour ce premier éclairage. Je ne connaissais pas du tout !
    Cela dit je butte un peu sur la syntaxe à écrire.

    Voici la structure des tables de mes deux couches .shp :

    - parcelle avec un unique champs appelé "codeident"

    - QP_METROPOLE_LB93 avec 3 champs "CODE_QP", "NOM_QP" et "COMMUNE_QP".

    J'aimerai donc que pour chacune de mes parcelles qui est située sur un des QPV, je puisse avoir le code et le nom du qpv (le 3ème champs m'intéresse moins). Dans le cas, d'une parcelle qui n'est pas située sur un QPV, j'aimerai que ces champs restent vides.

  6. #6
    Chasseur de Bots
    Date d'inscription
    août 2011
    Localisation
    Paris > Strasbourg
    Emploi
    Chargé de mission SIG
    Âge
    34
    Messages
    1 431

    Par défaut Re : Problème d'intersection

    À tester, je l'écrirai comme ceci :

    Code:
    SELECT p.codeident,
    qpv.CODE_QP,
    qpv.NOM_QP
    FROM parcelle p, QP_METROPOLE_LB93 qpv
    WHERE ST_INTERSECTS(p.geometry, qpv.geometry)
    UNION ALL
    SELECT p.codeident,
    NULL AS CODE_QP,
    NULL AS NOM_QP
    FROM parcelle p, QP_METROPOLE_LB93 qpv
    WHERE NOT ST_INTERSECTS(p.geometry, qpv.geometry)

  7. #7

    Date d'inscription
    mars 2016
    Messages
    15

    Par défaut Re : Problème d'intersection

    A mon avis, avec ces lignes de codes ça devait fonctionner car après avoir lancer l'exécution, l'ordinateur a commencé à mouliner mais après j'ai l'impression qu'il a planté... Ma couche parcelles est très lourde même malgré le fait que je n'ai qu'un champs. Il y a en tout près de 740000 parcelles.

    Du coup, j'ai recherché un autre moyen et je suis parvenu à ce que je souhaitais. J'ai été dans "Vecteur" puis "Outils de gestion de données" et enfin dans "Joindre les attributs par localisation".
    Dans "couche vecteur cible", j'ai mis celle des parcelles et dans "couche vecteur à joindre" celle des QPV.
    J'ai sélectionné le prédicat géométrique "Intersecte".
    J'ai laissé "Prendre les attributs de la première entitée localisée" dans "Résumé de l'attribut".
    Puisque je n'avais pas besoin de statistiques, j'ai effacé "sum,mean,min,max,median"
    Et dans "Table jointe", j'ai mis "Conserver tous les enregistrements (...)"

    En tout cas merci à toi pour m'avoir éclairé sur les possibilités avec une requête SQL.
    Dernière modification par FMDCC ; 19/01/2018 à 14h06.

  8. #8
    Chasseur de Bots
    Date d'inscription
    août 2011
    Localisation
    Paris > Strasbourg
    Emploi
    Chargé de mission SIG
    Âge
    34
    Messages
    1 431

    Par défaut Re : Problème d'intersection

    Merci pour le retour également.

    Je pense qu'avec des tables volumineuses, il sera très judicieux d'utiliser les index spatiaux pour filtrer à chaque intersection les objets de l'autre couche se situant aux alentours plutôt que d'effectuer le test d'intersection sur tous les objets de la couche.

 

 

Discussions similaires

  1. [QGIS 2.x] Intersection polygones
    Par doudel dans le forum Assistance et Programmation
    Réponses: 3
    Dernier message: 16/09/2016, 11h52
  2. [QGIS 2.x] Intersection incomplète
    Par hugonme dans le forum Assistance et Programmation
    Réponses: 1
    Dernier message: 22/08/2016, 15h57
  3. [ArcGIS 9.x] Problème d'intersection
    Par laureh1 dans le forum Programmation
    Réponses: 1
    Dernier message: 22/09/2010, 15h33
  4. [PostGIS 1.x] Problème intersection multilinestring et polygone
    Par Xapatan dans le forum Assistance et Programmation
    Réponses: 2
    Dernier message: 25/06/2010, 09h20
  5. [ArcGIS 9.x] Problème d'intersection via IBasicGeoprocessor
    Par BleuBurrus dans le forum Programmation
    Réponses: 0
    Dernier message: 01/02/2007, 08h25

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •