#1 Wed 17 January 2007 20:44
- Anonyme
- Participant actif
- Date d'inscription: 1 Jul 2013
- Messages: 109
Intersection de tables
Bonjour,
J'ai une table de limites communales, et une table de zones naturelles.
J'ai utilisé la fonction AreaOverlap pour connaître quelle surface de zone naturelle il y a dans chaque commune.
J'ai encore 2 problèmes:
Les résultats sont en miles². Comment les convertir en km² ? Je crois que c'est une manip avec la fenêtre mapbasic mais j'ai pas trouvé.
Si par exemple 3 zones naturelles intersectent une commune, la nouvelle table indiquera, pour chaque commune, la surface de chaque zone naturelle comprise dans la commune. J'aurai donc 3 lignes pour une commune mais j'aimerais avoir la surface totale des zones naturelles comprises dans chaque commune.
Peut on faire une somme des 3 valeurs en fonction du nom de la commune dans une nouvelle table ? quelle est la requête SQL ?
Peut être que la requête areaoverlap n'est pas efficace et qu'il existe une autre requête plus performante qui calcule directement le total en surface des zones intersectées et en km²?
Merci d'avance
Guillaume
Hors ligne
#2 Wed 17 January 2007 21:38
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: Intersection de tables
Bonjour,
Soit les tables COMM et ZNAT et leurs identifiants uniques respectifs NOM et CODE
Code:
Select COMM.NOM, sum(cartesianarea(overlap(COMM.obj, ZNAT.obj), "sq km"))"surf", sum(proportionoverlap(COMM.obj, ZNAT.obj))"taux" from COMM, ZNAT where COMM.Obj intersects ZNAT.Obj group by COMM.NOM order by COMM.NOM
- donne un tableau (non graphique) des communes avec la surface des zones (n'importe lesquelles) qui l'intersectent et le taux de surface communale intersectée par des zones (chaque commune n'est citée qu'une fois)
Code:
Select COMM.NOM, ZNAT.CODE, sum(cartesianarea(overlap(COMM.obj, ZNAT.obj), "sq km"))"surf", sum(proportionoverlap(COMM.obj, ZNAT.obj))"taux" from COMM, ZNAT where COMM.Obj intersects ZNAT.Obj group by COMM.NOM, ZNAT.CODE order by COMM.NOM, ZNAT.CODE
- donne un tableau (non graphique) des communes avec la surface de chaque zone qui l'intersecte et le taux de surface communale intersectée par chaque zone (les communes sont citées autant de fois qu'elles intersectent de zones différentes)
Avec les résultats déjà obtenus dans la table RESULT (que je suppose juste )
- convertir miles² en km² en multipliant par 2,59
- pour additionner les surfaces par commune et retrouver des résultats équivalents à la première requête
Code:
Select NOM, Sum(Surf), Sum(Taux) from RESULT group by NOM
Bon courage
Hors ligne
#3 Wed 17 January 2007 23:45
- Anonyme
- Participant actif
- Date d'inscription: 1 Jul 2013
- Messages: 109
Re: Intersection de tables
Y'en a qui maîtrisent le logiciel c'est surprenant !
en tout cas ça marche mais j'obtiens la même table avec les 2 requêtes ! dans les 2 cas les surfaces sont aditionnées par communes
Pour le taux je suppose qu'il faut le multiplier par 100 c'est ça ?
Merci
Guillaume
Hors ligne
#4 Thu 18 January 2007 00:17
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: Intersection de tables
... j'obtiens la même table avec les 2 requêtes ! ...
C'est donc qu'il n'y a pas de zone portant un CODE différent qui intersecte les communes!!
Exact pour le taux: actuellement la somme des taux, si toute la commune est intersectée, est 1
ps: avec MI, c'est le SQL qu'il faut s'habituer à "maitriser"
Hors ligne
#5 Thu 18 January 2007 09:24
Re: Intersection de tables
Y'en a qui maîtrisent le logiciel c'est surprenant !
...et particulièrement Maurice...
avec MI, c'est le SQL qu'il faut s'habituer à "maitriser"
Tout à fait, c'est un bon exercice, d'une part, et c'est surtout là que le logiciel prend toute sa force. ArcGis à ma connaissance n'est pas capable de faire des requêtes SQL vraiment performantes, tandis qu'avec Mapinfo, c'est comme dans du beurre !
Consulte à cette fin ce document de Jacques Paris en particulier pour apprendre à maîtriser le SQL dans la fenêtre Mapbasic.
Pour ceux qui veulent retrouver le lien plus tard, les liens relatifs à Mapinfo sont regroupés dans le post de bienvenue en en-tête de liste.
Geomatiquement,
Robin.
Hors ligne
#6 Thu 18 January 2007 20:16
- Anonyme
- Participant actif
- Date d'inscription: 1 Jul 2013
- Messages: 109
Re: Intersection de tables
Bonsoir,
En fait c'est bête j'ai des taux qui ne correspondent à rien: du genre 1,24 ou 2,7. Dans le dernier cas ce n'est pas 2,7% ni 270 %!!! est-ce 27% ?
Merci Robin pour le lien je m'y plonge, c'est vrai que la doc est abondante sur le web
Merci et Bye Guillaume
Hors ligne
#7 Thu 18 January 2007 22:37
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: Intersection de tables
Bonjour,
Peut être un problème lié à des polygones multiples ?? Il faudrait voir les données ZNAT
Sinon je vous propose une variante:
Code:
Select COMM.NOM, area(COMM.obj, "hectare") "surf_com", sum(area(overlap(COMM.obj, ZNAT.obj), "sq m") / area(COMM.obj, "sq m")*100) "taux_dans_znat" from COMM, ZNAT where COMM.obj intersects ZNAT.obj group by COMM.NOM order by COMM.NOM
Taux de 0 à 100 et usage de area (spherical ou cartesian suivant vos options dans options->préférences->fenêtre carte)
Hors ligne