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 à 15 sur 15
  1. #1

    Date d'inscription
    décembre 2017
    Messages
    18

    Par défaut Jointure spatiale couches vectorielles de polygones différents

    Bonjour,

    J'ai 2 couches vectorielles de polygones (issues de 2 rasters). J'aimerais faire une jointure spatiale entre ces 2 couches.

    Problème sous QGIS, je suis obligé de prendre une couche de référence pour faire cette jointure spatiale, sauf qu'il n'y a aucun rapport entre les id/formes/tailles des différents polygones des 2 couches shapefile.

    Une couche a 9149 polygones et l'autre en a 11586.

    Dois-je mettre en place une grille de polygones vides qui sera la couche de référence et de faire une jointure avec ces 2 couches ? Ou est-ce possible de faire une jointure autrement (ne pas prendre un shapefile pour la forme de référence) ?

    Si vous avez la solution en requête PostGIS, je suis également preneur. (Faire une jointure spatiale entre 2 couches vectorielles de polygones)

    La description de mes 2 tables:

    -table n°1 : colonnes gid / value / geom (9149 lignes)

    -table n°2 : colonnes gid / value / geom (11586 lignes)

    Merci pour votre aide.

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

    Par défaut Re : Jointure spatiale couches vectorielles de polygones différents

    Sous PostGis, jointure stricte (mais voir plus bas mes commentaires, je doute que le résultat soit ce que tu cherches) :

    Code:
    SELECT table1.*,
    table2.*
    FROM table1, table2
    WHERE ST_INTERSECTS(table1.geom, table2.geom)
    Si tu souhaites faire une nouvelle couche, à toi de sélectionner la géométrie souhaitée dans la sélection (table1.geom ou table2.geom).

    Pour QGIS, il faudrait nous en dire un peu plus sur le résultat souhaité.
    Car soit tu peux sélectionner les enregistrements de la table1 qui intersectent la table2, sans récupérer les attributs de la table2.

    Comme tu parles de grille, et que les tables vectorielles sont issues de raster, tu souhaites peut-être associer chaque pixel de la table1 à chaque pixel de la table2 ... et avoir une table3 avec la valeur 1 et 2 ?
    C'est un peu flou, donc à préciser pour moi.

  3. #3
    Modérateur
    Date d'inscription
    novembre 2012
    Localisation
    Angers
    Messages
    669

    Par défaut Re : Jointure spatiale couches vectorielles de polygones différents

    Bonjour,
    Problème sous QGIS, je suis obligé de prendre une couche de référence pour faire cette jointure spatiale
    Et si possible, si tu pouvais un peu plus clarifier ce passage? Merci. J'ai pas trop saisi le rôle de la couche de référence.
    "Les maisons sont proches pour qu'on puisse aller chercher du feu." Proverbe Moba
    Avant de poster, lire au moins une fois : De la bonne manière de poser les questions

  4. #4

    Date d'inscription
    décembre 2017
    Messages
    18

    Par défaut Re : Jointure spatiale couches vectorielles de polygones différents

    Merci pour vos réponses.

    C'est exactement ce que je cherche SKAL --> Associer chaque pixel de la table1 à chaque pixel de la table2 pour avoir une table3 avec la valeur 1 et 2 (+ la nouvelle géométrie correspondante).
    Au niveau de la géométrie, si j'ai 2 polygones (avec leurs valeurs correspondantes) qui se superpose partiellement, je voudrais qu'en résultat j'ai 3 polygones (la partie superposée + le reste du polygone 1 + le reste du polygone 2). Pour les valeurs des pixels, je voudrais conserver dans ma table résultat mes valeurs de pixels de ma table 1 et de ma table 2 dans 2 colonnes différentes.
    J'ai testé ta requete SQL mais j'ai un message d'erreur --> out of memory for query result.

    J'ai essayé avec "Join attributes by location" sous QGIS, mais il faut que je sélectionne un vecteur target et un autre vecteur pour la jointure ce qui entraîne que mon résultat à la géométrie de mon vecteur target ... alors que je veux que la géométrie de mon résultat soit le mix entre la géométrie de ma table 1 et la géométrie de la table 2.

    Santanna, ce que j'appelle couche de référence, c'est mon vecteur target. Désolé pour l’imprécision.
    Dernière modification par jerem_abroad ; 16/01/2018 à 03h01.

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

    Par défaut Re : Jointure spatiale couches vectorielles de polygones différents

    Ce que tu cherches à faire pour moi s'appelle une union. Dans le menu 'Vecteur' > 'Outils de géotraitement' > 'Union...'.

  6. #6

    Date d'inscription
    décembre 2017
    Messages
    18

    Par défaut Re : Jointure spatiale couches vectorielles de polygones différents

    Merci je suis en train d'essayer cette solution. Est ce normal que ce soit très lent ?? J'en suis à 14% au bout de 20min ....

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

    Par défaut Re : Jointure spatiale couches vectorielles de polygones différents

    Ça dépend de la taille de tes fichiers vecteurs, ça dépend de la complexité des géométries ...
    Je te conseille de nettoyer au maximum tes deux couches :
    - Morceau unique vers morceaux multiples : simplification des géométries évitant d'énormes entités complexes avec des trous, sur une large étendue ;
    - puis faire un buffer à 0 m : corrige la géométrie, principalement celles en croissant (écrites à l'origine avec un trou (donut), corrigées en polygones banane dont les deux extrémités se touchent).

  8. #8

    Date d'inscription
    décembre 2017
    Messages
    18

    Par défaut Re : Jointure spatiale couches vectorielles de polygones différents

    J'ai mis 2 heures sans nettoyer mes couches ... et même en nettoyant, je suis pas sûre que ce soit très rapide ce qui n'est pas concevable pour mon application.
    En requête SQL sous PostGIS, je pense que ça sera plus rapide. Peut être avec cette requête :

    Select value1, value2, st_union(table1.geom,table2.geom) from table1, table2;

    Ça vous parait correct ? (Je demande parce que j'ai lancé la requête sous PostgreSQL mais pour l'instant ça s'execute et j'ai pas de résultat ...)

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

    Par défaut Re : Jointure spatiale couches vectorielles de polygones différents


  10. #10

    Date d'inscription
    décembre 2017
    Messages
    18

    Par défaut Re : Jointure spatiale couches vectorielles de polygones différents

    Pourrais tu être plus explicite sur le pourquoi ma requête n'est pas bonne ?
    J'ai consulté ton lien et celui là https://postgis.net/docs/ST_Union.html, mais je vois pas ...

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

    Par défaut Re : Jointure spatiale couches vectorielles de polygones différents

    Regarde le résultat de postgis, résultat = 1 entité :


    Et sous QGIS, résultat = 3 entités :

  12. #12

    Date d'inscription
    décembre 2017
    Messages
    18

    Par défaut Re : Jointure spatiale couches vectorielles de polygones différents

    ok je vois le problème, du coup c'est faisable en requete SQL ?

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

    Par défaut Re : Jointure spatiale couches vectorielles de polygones différents

    Schématiquement :

    SELECT [...]
    ST_INTERSECTION(table1.geom, table2.geom)
    FROM table1, table2
    WHERE ST_INTERSECTS(table1.geom, table2.geom)
    [...]
    UNION ALL
    SELECT [...]
    ST_DIFFERENCE(table1.geom, table2.geom)
    FROM table1, table2
    WHERE ST_INTERSECTS(table1.geom, table2.geom)
    [...]
    UNION ALL
    SELECT [...]
    ST_DIFFERENCE(table2.geom, table1.geom)
    FROM table1, table2
    WHERE ST_INTERSECTS(table1.geom, table2.geom)
    [...]
    UNION ALL
    SELECT [...]
    table1.geom
    FROM table1
    WHERE NOT ST_INTERSECTS(table1.geom, table2.geom)
    [...]
    UNION ALL
    SELECT [...]
    table2.geom
    FROM table2
    WHERE NOT ST_INTERSECTS(table1.geom, table2.geom)
    [...]
    ;

    ou

    SELECT [...]
    ST_INTERSECTION(table1.geom, table2.geom)
    FROM table1, table2
    WHERE ST_INTERSECTS(table1.geom, table2.geom)
    [...]
    UNION ALL
    SELECT [...]
    ST_DIFFERENCE(table1.geom, table2.geom)
    FROM table1, table2
    [...]
    UNION ALL
    SELECT [...]
    ST_DIFFERENCE(table2.geom, table1.geom)
    FROM table1, table2
    [...]
    ;

    (si quelqu'un a mieux ...)

  14. #14
    Modérateur et rédacteur Supporter(rice)


    Date d'inscription
    octobre 2005
    Localisation
    Louvain-la-neuve
    Emploi
    Géologue
    Organisme
    Université Catholique de Louvain - Région Wallonne
    Messages
    2 652

    Par défaut Re : Jointure spatiale couches vectorielles de polygones différents

    Vous comparez 2 prédicats spatiaux différents et qui sont malheureusement mal nommés dans QGIS.

    1) Ce que vous montrez pour QGIS n'est pas une "union spatiale" mais une simple "fusion" de 2 géométries (un "merge" en anglais, simple liste de géométries). Il y a toujours 2 géométries dans le résultat (3 dans le cas de la commande Union de QGIS avec l'intersection, 2 avec la commande Combine/Merge Layer du plugin MMQGIS)

    Cliquez sur l'image pour la voir en taille réelle 

Nom : 		merge.png 
Affichages :	36 
Taille :		80,5 Ko 
ID : 			8992



    2) alors que dans l'exemple avec PostGIS, c'est bien d'une union qu'il s'agit ("union", "dissolve" en anglais). Il n' y a qu'une géométrie

    Cliquez sur l'image pour la voir en taille réelle 

Nom : 		unary_union.png 
Affichages :	33 
Taille :		68,2 Ko 
ID : 			8993

    Et il y a bien moyen de réaliser les 2 opérations avec QGIS sans SQL.
    Dernière modification par gene ; 16/01/2018 à 18h16.
    "Caminante, no hay camino, el camino se hace al andar" A. Machado

  15. #15

    Date d'inscription
    décembre 2017
    Messages
    18

    Par défaut Re : Jointure spatiale couches vectorielles de polygones différents

    Merci à vous pour vos explications

 

 

Discussions similaires

  1. [QGIS 2.x] Fusion de couches vectorielles
    Par Chercheur Alpha dans le forum Assistance et Programmation
    Réponses: 2
    Dernier message: 10/04/2017, 08h29
  2. [QGIS 2.x] Souci de reprojection de couches vectorielles
    Par Ibiscus dans le forum Assistance et Programmation
    Réponses: 2
    Dernier message: 07/03/2016, 12h54
  3. [ArcGIS 9.x] Jointure spatiale entre deux couches polylignes
    Par Tytie dans le forum Assistance Technique
    Réponses: 2
    Dernier message: 26/11/2012, 17h37
  4. [MapInfo 9.x] Convertion de couches vectorielles
    Par rhodos dans le forum Assistance Technique
    Réponses: 4
    Dernier message: 26/11/2009, 15h12
  5. [ArcGIS 8.x] Jointure spatiale de polygones depuis table Access
    Par matai dans le forum Assistance Technique
    Réponses: 6
    Dernier message: 30/03/2008, 18h38

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
  •