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é ?

#1 Fri 07 May 2010 09:22

ally35
Participant occasionnel
Date d'inscription: 29 Apr 2010
Messages: 19

calcul de surface de recouvrement d'une couche par une autre

Bonjour,

J'ai deux tables composés chacune de plusieurs polygones et je voudrais dans une des 2 tables faire apparaitre pour chaque polygone la surface qui est recouverte par les polygones de l'autre table.

Je ne vois pas comment faire, pouvez vous m'aider?

Merci

Alison

Hors ligne

 

#2 Fri 07 May 2010 09:26

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: calcul de surface de recouvrement d'une couche par une autre

Salut,

Dans une requète SQL --> "AreaOverlap"

Code:

Select AreaOverlap(Table1.obj, Table2.obj) from Table1, Table2 where Table1.obj intersects Table2.obj into Resultat

A+
Joël

Dernière modification par Spacejo (Fri 07 May 2010 09:29)

Hors ligne

 

#3 Fri 07 May 2010 09:34

ally35
Participant occasionnel
Date d'inscription: 29 Apr 2010
Messages: 19

Re: calcul de surface de recouvrement d'une couche par une autre

Ok sa marche sauf que après j'aimerais intégrer dans la table la surface représenté par ces polygones.

Alison

Hors ligne

 

#4 Fri 07 May 2010 09:43

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: calcul de surface de recouvrement d'une couche par une autre

Dans la clause "select" tu peux choisir ce que tu désires voir afficher dans la table "Resultat".

Hors ligne

 

#5 Fri 07 May 2010 10:05

ally35
Participant occasionnel
Date d'inscription: 29 Apr 2010
Messages: 19

Re: calcul de surface de recouvrement d'une couche par une autre

ok
dans la fenêtre mapbasic j'ai inscrit ce code:

Code:

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

Il a l'air de marcher mais après je voudrais intégrer le champs nouvellement créé dans ma table "sans_nom2", et la je bloque.

Alison

Hors ligne

 

#6 Fri 07 May 2010 10:32

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: calcul de surface de recouvrement d'une couche par une autre

Essaye voir ceci:

Code:

INSERT INTO Sans_Nom2 (liste_colonnes)
SELECT liste_colonnes FROM Selection

A+
Joël

Hors ligne

 

#7 Fri 07 May 2010 11:34

ally35
Participant occasionnel
Date d'inscription: 29 Apr 2010
Messages: 19

Re: calcul de surface de recouvrement d'une couche par une autre

A vrai dire je bloque! dur dur un vendredi en plus!

J'apporte quelques précisions:

Ma 1ere table "parcelle" se compose des champs suivants:
-Id
-surface_totale

Ma 2e table "ruissellement" se compose des champs suivants:
-Id
-surface
-type-bordure
-protection

Je veux simplement que dans ma table "parcelle" apparaisse le champs "surface" de la table "ruissellement". Sa m'a lair assez simple à faire mais je crois que je me complique.
Je précise que les ID sont deux Id différents.

Alison

Hors ligne

 

#8 Fri 07 May 2010 11:42

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: calcul de surface de recouvrement d'une couche par une autre

Les objets de ta table ruissellement intersectent la table parcelle mais existe t'il des parcelles non intersectées par des ruissellements et plusieurs ruissellements intersectant une seule parcelle.
Là est le problème car lors de la jointure spatiale dans la table "Resultat" ou "Selection" comme elle est indiquée aprés le into, les enregistrements non intersectés ne seront pas pris en compte.
Je ne sais pas si je suis clair là?

Dernière modification par Spacejo (Fri 07 May 2010 12:05)

Hors ligne

 

#9 Fri 07 May 2010 11:58

ally35
Participant occasionnel
Date d'inscription: 29 Apr 2010
Messages: 19

Re: calcul de surface de recouvrement d'une couche par une autre

Voila exactement le soucis que j'ai repéré!!

La table parcelle n'est pas forcément intersecté par la table ruissellement.

Hors ligne

 

#10 Fri 07 May 2010 12:28

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: calcul de surface de recouvrement d'une couche par une autre

Peut être en travaillant en boucle, je m'explique:
Si tu traites les parcelles une à une celà peut marcher: si parcelle non intersectée alors champs surface --> nulle
Par contre existe t'il des parcelles intersectées par plus d'un ruissellement

Hors ligne

 

#11 Fri 07 May 2010 12:34

ally35
Participant occasionnel
Date d'inscription: 29 Apr 2010
Messages: 19

Re: calcul de surface de recouvrement d'une couche par une autre

Non une parcelle n'est intersecté que par un ruissellement, pour une parcelle on n'a qu'une seule surface de ruissellement.
Je vois bien ce que tu veux faire mais comment on peut affecter une valeur zero au champs non intersecté?

Hors ligne

 

#12 Fri 07 May 2010 12:37

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: calcul de surface de recouvrement d'une couche par une autre

Peut être avec un nombre ridicule comme 0.0000001

Hors ligne

 

#13 Mon 10 May 2010 10:29

ally35
Participant occasionnel
Date d'inscription: 29 Apr 2010
Messages: 19

Re: calcul de surface de recouvrement d'une couche par une autre

Bonjour,

Il y a juste un petit truc que je ne comprend pas quand tu dis de tourner en boucle et de traiter les parcelles une à une?
Peut-tu m'expliquer ta façon de faire?
Merci

Alison

Hors ligne

 

#14 Mon 10 May 2010 10:39

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: calcul de surface de recouvrement d'une couche par une autre

Salut,

Le raisonnement est le suivant:
La FMB permets de traiter une parcelle grâce à une requète, si on génére autant de requète que de parcelle --> le problème est résolu.
Pour ceci il faut utiliser un générateur de script qui va te créer toutes les requètes pour chaque parcelle.
Lorsque tu as toutes ces requètes --> tu les colles dans la FMB et elle va traiter les unes aprés les autres toutes tes parcelles.
Sinon il y a aussi la possibilité de créer un programme en Mapbasic.
Voilà un exemple récent de résolution de problème avec l'utilisation de ce petit éxécutable.
---> http://georezo.net/forum/viewtopic.php?id=66735
A+
Joël

Dernière modification par Spacejo (Mon 10 May 2010 10:42)

Hors ligne

 

#15 Mon 10 May 2010 10:43

ally35
Participant occasionnel
Date d'inscription: 29 Apr 2010
Messages: 19

Re: calcul de surface de recouvrement d'une couche par une autre

Olala peut-tu m'éclairer un peu sur ce qu'est un générateur de script?
Il faut que j'écrive dans la FMB toutes les lignes de code pour chaque parcelle?

Alison

Hors ligne

 

#16 Mon 10 May 2010 10:46

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: calcul de surface de recouvrement d'une couche par une autre

As tu regardé l'exemple que j'ai cité?
Dans ce post il y a un lien oû on peut télécharger le "scriptgen".
Il faut aussi regarder dans l'aide de ce log --> il y a des exemples.

Hors ligne

 

Pied de page des forums

Powered by FluxBB