Suite

Joindre deux tables complètement sur la géométrie (postgis)


J'ai deux tables avec le même réseau routier que la géométrie (mais pas le même identifiant). Ce que je veux faire, c'est rejoindre tous les deux tables avec tous les attributs à un pour toutes les géométries qui se chevauchent exactement.

Malheureusement, ma requête ne me renvoie que des lignes vides. Je travaille avec la jointure gauche, mais toutes les autres jointures ne fonctionneront pas aussi bien.

SUPPRIMER LA TABLE SI EXISTE test ; CREATE TABLE test AS SELECT * FROM table1 RIGHT JOIN table2 ON ST_Equals(table1.the:geom, table2.the_geom);

Est-ce que quelqu'un connaît une réponse pour cela?


Je suis d'accord avec le commentaire de MarHoff. Je pense que la condition suivante fait l'affaire :

'la géométrie de table1 est complètement à l'intérieur d'un petit tampon autour de la géométrie de table2 ET la géométrie de table2 est complètement à l'intérieur d'un petit tampon autour de la géométrie de table1'.

SELECT * FROM table1 INNER JOIN table2 ON st_within(table1.the_geom, st_buffer(table2.the_geom, 0.1)) ET st_within(table2.the_geom, st_buffer(table1.the_geom, 0.1));

Ici 0,1 est le rayon du tampon en mètres / pieds / degrés / peu importe, en fonction de votre système de référence de coordonnées. Si votre SCR est en degrés (coordonnées GPS), vous devriez probablement utiliser une valeur inférieure à 0,1.

Cette solution peut prendre un certain temps de calcul si vos tables sont très volumineuses. Une autre solution serait d'utiliser st_snaptogrid afin de simplifier les deux géométries avant de les comparer.

J'espère que cela t'aides!


Voir la vidéo: Tietojen yhdistäminen INDEKSI ja VASTINE-funktioilla (Octobre 2021).