#1 Mon 25 January 2010 10:40
- schnesschne
- Participant occasionnel
- Date d'inscription: 13 Mar 2007
- Messages: 21
Selection SQL intersect multi criteres
Bonjour,
Je galère sur une selection SQL qui doit me permettre d'identifier des bâtis (polygones) par rapports a des hauteurs d'eau (polygones)
J'utilise la commande intersect qui me donne un premier resultat mais en y regardant de plus pres, la selection me copie des batiments lorsque celles-ci sont à cheval sur plusieurs hauteurs d'eau.
QUESTION : comment demander a mapinfo qu'il ne me prenne en considération que les valeurs les plus hautes dans mon champs d'hauteurs d'eau ???
Merci
Hors ligne
#2 Mon 25 January 2010 10:48
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: Selection SQL intersect multi criteres
Salut,
As tu essayé avec d'autres critères comme Within ou entierly within?
A+
Joël
Hors ligne
#3 Mon 25 January 2010 10:58
- schnesschne
- Participant occasionnel
- Date d'inscription: 13 Mar 2007
- Messages: 21
Re: Selection SQL intersect multi criteres
oui j'ai bien essayé mais le souci est d'affecter le bati à la valeur la plus haute de mes polygones d'hauteurs d'eau, certains bâtis etant sur 2-3 polygones differents
Pour info j'ai un champ lower et upper correspondant aux classes de hauteurs
@+
Hors ligne
#4 Mon 25 January 2010 12:41
- benulti
- Participant assidu
- Lieu: là-bas
- Date d'inscription: 5 Sep 2005
- Messages: 332
Re: Selection SQL intersect multi criteres
Bonjour,
après cette requête utilisez la fonction "group by" sur l'identifiant de bati ainsi que la fonction d'aggrégation "max" sur la valeur upper de hauteurs d'eau afin de récuperer la valeur la plus élevée pour chaque bati.
Attention cette requête donne un résultat strictement attributaire.
Cordialement
PS : la différence entre intersects et within ne concerne que des problèmes de centroides de sélection.
Hors ligne
#5 Mon 25 January 2010 15:26
- schnesschne
- Participant occasionnel
- Date d'inscription: 13 Mar 2007
- Messages: 21
Re: Selection SQL intersect multi criteres
Arf, pas facile
J'ai bien utiliser la fonction groupby en passant par "fusion d'objet" identifian mais pour l'agragation de la valeur max je n'y arrive pas
la fenetre me propose, valeur, somme, moyenne
dans valeur j'ai bien essayé de mettre lower=max(lower) mais je n'ai que des 0 en rendu
Je suis dans le flou artistique
Hors ligne
#6 Mon 25 January 2010 15:34
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: Selection SQL intersect multi criteres
En passant par un "order By" "desc" --> avec tes hauteurs aprés le group by
A+
Joël
Dernière modification par Spacejo (Mon 25 January 2010 15:36)
Hors ligne
#7 Mon 25 January 2010 15:36
- Daniel
- Membre
- Lieu: Victoriaville, Québec
- Date d'inscription: 6 Sep 2005
- Messages: 2028
Re: Selection SQL intersect multi criteres
Salut
Est-ce que votre colonne Upper ou lower est dans votre section COLONNE, en hautre de votre requête SQL?
Daniel
De retour à la géomatique
Hors ligne
#8 Mon 25 January 2010 16:33
- schnesschne
- Participant occasionnel
- Date d'inscription: 13 Mar 2007
- Messages: 21
Re: Selection SQL intersect multi criteres
Bon j'ai trouvé une solution, c'est peut etre un peu bidouillique mais ça marche
On est d'accord que je pars d'une couche bâti que j'ai intersecté avec mes hauteurs d'eau donc il y a des doublons de bâtis avec des hauteurs d'eau differentes (lower) :
1 - je fais une fusion par champ ID dans une nouvelle table en gardant la meme strucure sans agreger de valeurs
j'obtiens donc un seul bâti, reste a lui affecter la valeur max de mon lower
2 - je fais une mise a jour de ma nouvelle table avec une jointure par les id communs en allant rechercher la valeur max du lower de la table non compilée
et là, miracle !!!
Merci de m'avoir ouvert la voie
Je vais pouvoir reprendre une activité normale et aller prendre du paracétamol
Quoique je dois faire une trentaine de carte avec plus de 1 000 batis a chaque fois
Dernière modification par schnesschne (Mon 25 January 2010 16:41)
Hors ligne