Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#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

alex
Participant actif
Lieu: le puy en velay
Date d'inscription: 15 Nov 2005
Messages: 125
Site web

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

Robin
GeoRezo forever
Lieu: France
Date d'inscription: 31 Aug 2005
Messages: 13614
Site web

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

alex
Participant actif
Lieu: le puy en velay
Date d'inscription: 15 Nov 2005
Messages: 125
Site web

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@texte-a-enlever.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

 

Pied de page des forums

Powered by FluxBB