#1 Sun 05 July 2015 12:57
- evaporite
- Participant actif
- Date d'inscription: 30 Mar 2012
- Messages: 54
comparer des géometry
Bonjour
Je travaille avec Map INfo et une base de données Postgis.
J'ai des "erreurs" dans ma base de données. J'ai des objets en double, qui se superposent. Mais j'ai commencé à saisir des données attributaires.
Donc par exemple je peux avoir plusieurs fois le même objets dans ma table, mais pour certains lignes j'ai déjà saisies de données.
Donc j'ai réfléchi à faire un select distinct on SP_GEOMETRY, mais le souci c'est que je voudrais qu'il me sélectionne de préférence une objet quand le champ nature n'est pas vide. mais je n'ai pas obligatoirement le champ nature de rempli ...
Je ne sais pas si je suis très clair.
Ensuite j'ai réflechi à "additionné" les objets. du SP_GEOMETRY ne changerait pas mais en additonnant un champ vide + un champ plein, on obtient un champ plein ....
Mais je ne sais pas comment faire ça ...
Je ne sais pas si j'étais très clair ...
Merci
Aurélie
Hors ligne
#2 Mon 06 July 2015 09:23
- guil31
- Participant actif
- Date d'inscription: 22 Jan 2013
- Messages: 79
Re: comparer des géometry
Bonjour,
Vous pouvez essayer ceci:
Code:
SELECT *, rank() OVER (PARTITION BY geom ORDER BY geom, nom_champ) as rang FROM nom_table where rang > 1
avec nom_champ qui correspond à votre champ partiellement renseigné et nom_table le nom de votre table.
Hors ligne
#3 Mon 06 July 2015 10:38
- Martin Bocquet
- Participant occasionnel
- Date d'inscription: 4 Mar 2015
- Messages: 22
Re: comparer des géometry
Bonjour,
La requête ci-dessus ne renvoi pas les objets géométriques pour lesquels il n'y a pas d'erreurs (leur id sera égal à 1...) .
Il y a deux solutions :
- dans le même ordre d'idée, en utilisant les windows fonctions :
Code:
SELECT *, rank() OVER (PARTITION BY geom ORDER BY geom, nom_champ DESC) as rang FROM nom_table where rang = 1
- ou alors avec des GROUP BY :
Code:
SELECT geom, max(coalesce(nom_champ, 'a')) FROM nom_table GROUP BY geom
A noter que ces deux codes ne fonctionnent que si les géométries sont strictement identiques.
Bonne journée,
Hors ligne
#4 Mon 06 July 2015 14:37
Re: comparer des géometry
Bonjour,
si vous pouvez le faire dans PostGIS, voici la requête a exécuter dans l'éditeur SQL (je l'ai fait avec la table des régions) :
Code:
DELETE FROM t_regions WHERE gid in( SELECT t_regions.gid FROM t_regions, t_regions r1 WHERE st_equals(t_regions.geom,r1.geom) and t_regions.nom_region is null);
Cordialement,
Jean-François Behm, formateur SIG, jf.behm@, idgeo.frformations@ idgeo.fr
IDGEO, www.idgeo.fr
Institut de Développement de la Géomatique 42, avenue de Général de Croutte - 31100 toulouse
Hors ligne