PDA

Voir la version complète : [MapInfo 7.x] Calcul de pourcentage de recouvrement



MacGeol
07/07/2005, 18h05
Bonjour,

Et oui c'est encore moi, décidément en ce moment je bosse.... :pcpassion

Bon en fait voilà un discussion qui pourrait faire suite au calcul de surface... pour faire encore plus fort je voudrait savoir si il est possible sur MapInfo de caluler le toux de recouvrement de polygones entre eux et si possible entre couche différentes?
Et ce si possible sans passer par un découpage des polygones par les autres puis sélection contains ni mélange des couches puis polygones de recouvrement...

C'est juste pour savoir comme ça... En fait se serait pour connaître le taux de boisement, culture, prairies des fonds de vallées avec une couche fonds de vallées et une couches occupation du sol. Puis ensuite pour passer ça sur un GRID avec des carré de 9ha.

Merci d'avance

MacGeol
08/07/2005, 17h21
Et béh là on dirait que je vous laisse tous sans voix....

Cyco
13/07/2005, 13h14
Bonjour,

Ce genre de calcul est possible en utilisant la fonction proportionOverlap(objet1,objet2). On peut l'intégrer dans une requete sql ou l'utiliser dans la fenetre Mapbasic.
Elle renvoie la proportion de recouvrement entre deux objets de couches différentes.

Dans le même ordre d'idée, il existe la fonction Areaovelap (objet1,objet2) qui calcule la surface de recouvrement de 2 objets.

En espérant avoir répondu à ta question.

MacGeol
20/07/2005, 20h52
Eh bien enfin une réponse!

Merci beaucoup très cher Cyco!

Cependant, pourrait tu si possible un peu plus détaillé la manip' car quand je le fait il me renvoie une erreur comme quoi il n'existe pas de jointure entre les tables choisie et don qu'il y a une erreur dans la close WHERE (alors que d'ailleurs il n'y a pas de where...).

Voilà ma requête : "Areaoverlap (S_FddeVallees_PCB.Obj,Communes_PCB.Obj)"

Est-tu donc sûr que la manipulation est possible entre objet de 2 tables différentes et si oui comment?

Merci beaucoup d'avance!

Cyco
21/07/2005, 08h37
Bonjour,

Je vais essayer d'être plus clair.

1°) Afficher la fenetre Mapbasic. Taper la commande suivante : Set area units "sq km".
L'unité de surface par défaut dans Mapinfo est le miles carré, ce qui n'est pas forcément très pratique. Cette commande permet de paramétrer l'unité de surface en Km2

2°) Executer une requete sql
Dans les critères, indique la condition de jointure. Exemple : Table1.obj intersects Table2.obj
Dans les colonnes, reprends les colonnes qui t'intéresse, plus ton calcul areaoverlap. Exemple : Areaoverlap(Table1.obj,table2.obj)

Voilà, pas plus compliqué que ça.

Il suffit de remplacer areaoverlap par proportionoverlap pour obtenir un pourcentage de recouvrement.

Bon courage

Typhaine
21/07/2005, 08h47
moi aussi, ça m'interresse!!

Je suis confrontée au même pb. Je veux calculer le poucentage de recouvrement entre deux couches sans avoir à découper. J'ai essayé l'outils "overlay" qui créé une table polygones correspondant aux recouvrements entre 2 tables et comme données le contenu des champs des 2 tables.
Le problème c'est que j'ai l'impression que cette opération est encore plus longue que le découpage et dans mon cas, le découpage dure près d'1h donc ce détail compte.

J'avais pensé utiliser cet outil puis faire un ratio dans un nouveau champ entre le polygone créé et ses polygones d'origine, mais je ne suis pas allée + loin pr l'instant. Je reste sur mon découpage. Je fait des copies des tables au préalable pour ne découper qu'une table de "travail" donc ce découpage ne me gène pas.

Peut-être que ça peut t'aider MacGeol (du fin fond de la bretagne)?
Cyco, sais-tu quel traitement est le plus rapide pour mon cas?

A+

sandrine
03/02/2008, 17h08
Bonjour,
Vos échanges sont très intéressants (j'ai pas mal galéré toute seule avant de voir ces discussions pour l'histoire du changement d'unités avec l'utilisation de la fonction AreaOverlap).
J'ai un autre problème du même genre avec l'utilisation de AreaOverlap, il s'agit du changement du mode de calcul des surfaces. En effet, je travaille sur des sites Natura 2000 et la méthode de calcul officielle des surfaces est la méthode cartésienne et non sphérique (la sphérique étant la méthode par défaut il me semble). Je n'arrive pas à forcer MapBasic à me donner un résultat de surface de recouvrement qui corresponde à la méthode cartésienne. J'ai essayé d'écrire "Set Distance Type Cartesian" dans la fenêtre de MapBasic mais ça créé un message d'erreurs. Comme je ne connais pas bien le langage MapBasic, je me tourne vers vous : auriez-vous la solution ?
Merci d'avance,
Cordialement,

Maurice Nadal
03/02/2008, 18h15
Bonjour
Deux lignes importantes à taper dans la fenêtre MapBasic (puis 'enter' sur la ligne):
- Set CoordSys Table ma_table, pour forcer les calculs à se faire dans la projection de ma_table
- Set Map Distance Type Cartesian, pour forcer le mode cartésien

sandrine
07/02/2008, 00h05
Bonjour,
Merci pour vos conseils. J'ai inscrit ces deux lignes dans la fenêtre de Mapbasic mais il reste toujours une erreur (qui va jusqu'à 20-30 ha, ce n'est pas négligeable !) dans le calcul donné par la requête automatique (j'ai par ailleurs fait les manipulations de découpage pour comparer). Franchement, je ne sais pas d'où ça peut venir : une fois qu'on a défini le système de projection, le mode de calcul cartésien et les unités, qu'est-ce qui pourrait changer ? SI vous avez encore une idée....
merci

Maurice Nadal
07/02/2008, 09h10
Est ce que la requête avec areaoverlap comporte un group by ??
Parce qu'il peut y avoir des "bouts" séparés...