PDA

Voir la version complète : [MapInfo 7.x] Requête surface



Yasmine
15/04/2005, 12h18
Bonjour,
J'ai une question simple.J'ai une table commune et une table forêt et je veux obtenir la surface de forêt par commune. Quelle requête dois-je réaliser?
Merci d'être très précis dans vos réponses car je ne maîtrise pas trop les requêtes et je sais qu'un petit rien les met facilement en péril...
Merci d'avance!
Yasmine

Thomas
15/04/2005, 13h12
Disposes tu d'une table "foret" dans lesquelles il y a le num de la commune ou simplement de deux tables supperposées ?

Dans le deuxièmes cas il faut faire une requête géographique où tu vas rechercher les polygione de forêt se touvant sur telle ou telle commune.

Tu devras dans un premier temps le faire par commune


Select * from tabforet, tabcommune WHERE tabcommune.nom = "macommue" and tabforet.obj intersects tabcommune.obj

Ainsi tu obtiendra les objets foret se trouvant sur la commune "macommune" ...

ne reste plus qu'à calculer la surface ...

bon courage

Yasmine
15/04/2005, 14h03
Je dispose simplement de deux tables superposées...
Mais je voudrais obtenir automatiquement la surfacede forêt pour ttes les communes et non une à une (il y en a des centaines!!!)

nikal
15/04/2005, 14h22
Pour faire toutes les communes en même temps, tu va galerer.


Il faut donc utiliser un traitement itératif (boucle sur toutes tes communes)

Tu récupères toutes tes communes, et après avec une boucle tu affectes le nom d'une commune a une variable et tu place cette variable dans le code de thomas a la place de "ma commune".

Bon courage

Yasmine
15/04/2005, 15h46
Ben ça me semble bien compliqué tout ça...
J'ai essayé autrement mais je bloque. J'ai découpé mes forêts par commune. Comment je fais pour avoir la somme de la surface des objets forêts par commune?

globulo
15/04/2005, 16h20
Bonjour,

Table - Mettre à Jour colonne
Table à mettre à jour : commune
Utiliser une colonne de la table :forêt
Colonne à mettre à jour : somme surface forêt de la commune
Calculer : Sum
Valeur : Champ surface de la table forêt

Jointure
soit par identifiant commune si ta table forêt en contient un
soit par jointure spatiale : forêt contenue dans commune

Cordialement

Yasmine
15/04/2005, 17h04
Merci beaucoup. Malheureusement cela ne fonctionne pas vraiment... Il prend en compte les forêts juste à la limite...
Mais j'ai trouvé une autre solution: sélection sql
sum (CartesianArea(foret_decoupe.obj, "hectare"))
where Commune.obj contains foret_decoupe.obj

Voili voilà...

Thomas
16/04/2005, 13h57
effectivement "contains" et intersects ne prenne pas etjs en comptes les même objets graphiques.

--> Contains = contient entièrement
--> Intersects = qui croise, s'entrecoupe

@ +++

Yasmine
18/04/2005, 11h41
le principal c'est que ça marche!!

un grand merci à vous de votre aide (une fois de plus :wink: )