PDA

Voir la version complète : [MapInfo 6.x] Intersection de deux couches polygones



ErwanD
09/05/2005, 16h03
Salut,

Je dispose de deux couches de type polygones qui forme deux "pavages" différents de ma commune. Je voudrais créer un nouvelle couche où il y aurait un nouveau pavage plus fin, et sur lequel je désagrègerais mes données.

--------- .... -------- ...... --------
| 00|11| + |__2__| .--> | 2 | 3 |
| 00|11| .. | .. 3 ..| ...... | 3 | 4 |
--------- ... -------- ....... -----------

J'espère que le schéma est clair ..........:wink:

EDIT : argh... ca compresse les espaces, trop dur le ASCII Art sur le forum !

gil
09/05/2005, 18h16
Une solution si tu as Vertical Mapper serait peut être (si j'ai bien compris le problème...) de transformer chacune des deux couches en grid en prenant comme valeur de modélisation, la valeur que tu cherche à agréger puis à additionner ces deux grid pour en générer un seul et ensuite à retransformer ce grid en vecteur par agrégation de pixels identiques.

Est ce possible ??????????????

ErwanD
09/05/2005, 18h23
oui, je crois que tu as compris. Et effectivement, en passant en raster, ça fait ce que je veux. Mais j'aurais aimé rester en vecteur.

Ca va peut-être poser un pb de créer un grid, puis de revectoriser, il va peut-être y avoir des incohérences avec les tables d'origine. Bah, je verrais demain ou après-demain. Merci

gil
10/05/2005, 09h31
Bien une deuxième solution, intégralement vectorielle est la suivante (le mieux est de travailler sur des copies si tu veux conserver les couches initiales) :
1- tu découpes ta couche 1 par ta couche 2 : pour celà tu selectionnes l'ensemble des éléments de ta première couche que tu rends modifiable et tu fais objet/définir cible, la cible étant la sélection de l'ensemble des éléments de la deuxième couche. Ainsi tu obtiens le pavage souhaité.
2- Tu utilises la fonction table/mettre à jour colonne et tu récupères la valeur de l'attribut de la deuxième couche comme attribut temporaire dans la première couche avec une contrainte d'inclusion (il ne doit pas y avoir d'ambiguité puisqu'une couche a été découpée par l'autre)
3- Tu utilises à nouveau cette même fonction pour aditionner les deux valeurs d'attribut

Voilà ca doit marcher...

ErwanD
12/05/2005, 10h03
Je continue avec mon probleme façon SQL :

Les deux tables sont Union ( union de quartiers) et Tronçons. Il y a 23 unions identifiées par Id et qq centaines (milliers) de troncons appartenant à une typologie de 11 classes. Je souhaite avoir la surface de l'ensemble des polygones de chaque classe de troncons présents dans un union. La requête suivante me fournit bien un tableau de 23 lignes (mes 23 unions) avec deux colonnes : la première pour Id et la deuxième me donne la surface totale des tronçons de ype 1 inclus dans cette union.

Select Union.id , sum ( tronçons.surface )
from tronçons, Union
where Union.Obj contains tronçons.Obj
and tronçons.zones = 1
group by Union.id
order by 1
into selection

J'ai deux problèmes : je voudrais une requête sql qui me donne directement mes 11 colonnes (les 11 classes).
La table que j'obtient n'est pas liée à une carte. Dois-je réassocié le résultat à ma table Union d'origine pour pouvoir cartographier les résultats.

Ouaouh, ca fait longtemps que j'avais pas eu un pb aussi long....:roll:
Merci aux âmes de bonnes volontés.