#1 Wed 08 March 2006 08:51
- sarah67
- Participant occasionnel
- Lieu: Strasbourg
- Date d'inscription: 8 Feb 2006
- Messages: 28
créer une couche intersection
Bonjour,
je dois créer une couche qui représente l'intersection d'un couloir (un buffer autour d'une rivière) avec un certain nombre de parcelles, traversées par cette rivière.
J'ai effectué une sélection
Code:
buffer5m.Obj Contains n_rpg_067_2005_producteurs.Obj
, où n_rpg_067_2005_producteurs sont les parcelles. J'obtiens bien une sélection des parcelles traversées, mais j'aimerais connaitre la superficie concernée pour chaque parcelle concernée.
Comment faire?
Merci.
Dernière modification par sarah67 (Wed 08 March 2006 08:55)
Hors ligne
#2 Wed 08 March 2006 09:47
Re: créer une couche intersection
B'jour,
tu veux connaître la superficie de la parcelle à l'intérieur du buffer, c'est bien cela ? je ne voix malheureusement qu'une solution : découpe toutes les parcelles par ton buffer et ensuite demandé par une requête la superficie du polygone à l'intérieur du buffer.
Mais peut-être d'autres auront un solution plus simple.
Cordialement,
alex
J'arrête le combat pour le SVG !! et je ne fais plus que de l'information.
SVG : Scalable Vector Graphic ou comment mettre de la vie sur votre site Internet.
www.ode43.fr
Hors ligne
#3 Wed 08 March 2006 10:07
Re: créer une couche intersection
Hello,
En regardant du côté de Areaoverlap et des fonctions de requêtes géog. peut être ?
Document sur le site de Jacques Paris pour des détails sur ces fonctions.
Bonne journée,
Rob.
Hors ligne
#4 Wed 08 March 2006 12:18
- Laurent Frilleux
- Participant actif
- Lieu: Aniane
- Date d'inscription: 8 Sep 2005
- Messages: 83
Re: créer une couche intersection
Bonjour
vous pouvez utiliser areaoverlap(buffer.obj,parcelles.obj) et même
proportionoverlap(buffer.obj,parcelles.obj)
bonne journée
Laurent FRILLEUX
Laurent Frilleux
Immergis - Montpellier
Hors ligne
#5 Wed 08 March 2006 12:18
- AxEor
- Participant occasionnel
- Date d'inscription: 5 Sep 2005
- Messages: 18
Re: créer une couche intersection
Bonjour,
une requete avec areaoverlap (couche1,Couche2) semble plus rapide que le
découpage.
faites une requete SQL avec un select areaoverlap(couche1,Couche2) from
couche1, couche2 where couche 1 intersect couche2.
attention vous obtiendrez une surface pour chaque polygone. faites un
groupBy avec un sum() pour obtenir les recouvrements par type de polygone.
faites ensuite une jointure entre le resultat et la couche de référence.
cordialement
Hors ligne
#6 Wed 08 March 2006 12:19
- Sébastien VERNIER
- Juste Inscrit !
- Date d'inscription: 7 Sep 2005
- Messages: 8
Re: créer une couche intersection
Bonjour,
Vous pouvez également insérer dans la liste de vos champs à récupérer :
CartesianArea(Overlap(n_rpg_067_2005_producteurs.Obj,buffer5m.Obj),"hectare")
pour une surface en hectares
Bonne journée,
Sébastien
Hors ligne
#7 Wed 08 March 2006 14:16
- sarah67
- Participant occasionnel
- Lieu: Strasbourg
- Date d'inscription: 8 Feb 2006
- Messages: 28
Re: créer une couche intersection
ces différentes solutions me paraissent intéressantes, mais je n'arrive pas à placer correctement le code dans MapBasic...je ne sais pas trop me servir de MBasic. A chaque fois que j'essaye d'exécuter un des codes, j'ai un message d'erreur.
Pour le dernier,
Code:
CartesianArea(Overlap(n_rpg_067_2005_producteurs.Obj,buffer5m.Obj),"hectare")
j'ai "Trouvé [,] pendant la recherche de [)]"
Hors ligne
#8 Wed 08 March 2006 15:10
- sarah67
- Participant occasionnel
- Lieu: Strasbourg
- Date d'inscription: 8 Feb 2006
- Messages: 28
Re: créer une couche intersection
en copiant le code directement dans la fenêtre "requête SQL", la requête est exécuté et dans MapBasic apparait le code complet, que j'avais oublié de mettre
Code:
Select * from buffer5m, n_rpg_067_2005_producteurs where proportionoverlap(buffer5m.obj,n_rpg_067_2005_producteurs.obj) into Selection
Seulement, maintenant, il me dit qu'il n'y a pas de jointure ente les tables dont je cherche les recoupements. Effectivement, il n'y a pas de colonne identique aux deux, mais c'est normal, d'un côté j'ai des parcelles, de l'autre, j'ai un buffer autour d'un cours d'eau..je ne vois pas comment je pourrais avoir une jointure entre les deux?
Je suis un peu perdue, là..
J'ai réussi à trouver les données que je voulais, en découpant mes parcelles, et ce n'était pas bien long..mais j'aimerais quand même savoir comment procéder avec vos codes, ne serait-ce que pour utiliser MapBasic que je viens de découvrir
Je vais m'arrêter pour aujourd'hui,peut-ête que demain ça ira mieux : la nuit porte conseil,parait-il?!
Dernière modification par sarah67 (Wed 08 March 2006 15:34)
Hors ligne
#9 Wed 08 March 2006 16:21
Re: créer une couche intersection
et oui parfois la méthode de base est peut-être un peu plus longue mais on maîtrise tellement mieux ce que l'on fait !!!!!!!!!!
mais je suis sur qu'avec du code mapbasic ca doit marché, pour sur une bonne nuit de repos et hop c'est bon c'est repartie.
bonne nuit qui te portera conseil
alex
J'arrête le combat pour le SVG !! et je ne fais plus que de l'information.
SVG : Scalable Vector Graphic ou comment mettre de la vie sur votre site Internet.
www.ode43.fr
Hors ligne
#10 Thu 09 March 2006 08:35
- sarah67
- Participant occasionnel
- Lieu: Strasbourg
- Date d'inscription: 8 Feb 2006
- Messages: 28
Re: créer une couche intersection
j'ai réussi à réaliser une requête Area (je passe par la fenêtre "requête SQL", et je regarde ce qu'il fait dans MapBasic), sur des données de base Je me suis rendue compte que lorsque j'applique Area à mon buffer,je n'ai pas de réponse...l'aire indiquée est de 0. Alors, c'est sur que AreaOverlap ne peut pas fonctionner. Pourtant, lorsque j'affiche ses propriétés, il m'indique une surface et un périmètre...
Je vais voir comment je peux donner du corps à mon buffer, pour qu'il soit reconnu comme une surface, et qu'il ait une aire avec Area.
Si vous avez une idée, elle sera la bienvenue!
Dernière modification par sarah67 (Thu 09 March 2006 08:39)
Hors ligne
#11 Mon 13 March 2006 12:02
- FERNANE
- Participant actif
- Date d'inscription: 14 Sep 2005
- Messages: 139
Re: créer une couche intersection
Bonjour,
Supposons que je dispose d'une couche d'objets avec des surfaces d'intersection. Cela revient à dire que j'ai des recouvrements. Je peux facilement créer une couche des surfaces de ces recouvrements.
Pour cela, sélectionner tous les objets de la couche. Rendre la couche "dessin" modifiable, et, utiliser l'outil de vérification des régions inclus dans les versions récentes de MAPINFO. Cocher la case "vérification des régions" et décocher les autres. Des polygones de couleur jaune se créent dans la couche "dessin". Enregistrez-la. Il n'y a pas de problème pour les surfaces.
Autrement la fonction cartesianarea(overlap(........ fonctionne sur deux tables voir ci-dessous :
Select Sans_nom.id, Sans_nom2.id, CartesianArea(overlap(Sans_nom.obj, Sans_nom2.obj), "hectare") from Sans_nom, Sans_nom2 where Sans_nom.Obj Intersects Sans_nom2.Obj into Selection
Browse * From Selection
cordialement
Béatrice FERNANE
Tél : 03.81.61.53.57
Courriel : beatrice.fernane@ franche-comte.ecologie.gouv.fr
DIREN de Franche-Comté
5, rue du Général Sarrail
B.P. 137
25014 Besançon cédex
Tél. 03 81 61 53 33
Fax 03 81 81 24 96
Hors ligne