banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#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

JF BEHM
Participant actif
Lieu: toulouse
Date d'inscription: 9 Aug 2013
Messages: 126
Site web

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@texte-a-enlever.idgeo.fr, formations@texte-a-enlever.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

 

Pied de page des forums

Powered by FluxBB