Annonce
Pour sa 21ème année, l’association GeoRezo a toujours besoin de vous !
10€ = 1 mois de frais bancaires ; 15€ = 12 mois de nom de domaine ; 30€ = 1 semaine de location des serveurs …
Retrouver nos membres bienfaiteurs
#1 Wed 12 May 2004 09:36
- Hakim CHERIGUI
- Invité
Troncons et grilles
Bonjour a tous,
Je cherche a resoudre un petit probleme.
Je dispose d’une grille et d’une carte de troncons routiers (polylignes).
Je cherche a determiner la distance parcourue dans chaque maille de la grille au prorata de la longueur des troncons.
Pour information, je ne dispose pas de MAPBASIC et travaille sur la version 7 de MI.
Merci d’avance pour vos reponses.
#2 Wed 12 May 2004 16:46
- Jacques Paris
- Invité
Re: Troncons et grilles
Voici une procedure que j’ai utilisee recemment; elle requiere plusieurs
operations mais a l’avantage de laisser une trace concrete et reutilisable.
2 – Decoupage des elements lineaires
La table des elements lineaires (P_Routes) est rendue editable, selectionnee
en entier, et definie comme cible (Target ON)
La table cellulaire est selectionnee en entier.
La commande du menu Objects | Split est lancee et tous les segments de route
sont sectionnes a leurs intersections avec la grille.
Les bouts qui depassent la zone d’etude peuvent etre alors elimines et la
table (P_Routes) compactee
Il est souvent preferable que la table lineaire (P_Routes) contienne une
colonne « Long » (longueur du segment) qui faudrait alors mettre a jour. L’
avantage d’avoir une telle colonne est qu’elle est calculee une fois pour
toutes alors qu’il faudrait avoir recours a la fonction ObjectLen() pour
chaque essai de calcul de valeurs par la suite.
3 – Mise a jour de la table cellulaire
Pour assigner des valeurs a la table cellulaire, il faut proceder en deux
etapes. La premiere consiste a calculer les valeurs, l’autre a mettre la
carte cellulaire a jour.
Le calcul des valeurs implique le plus souvent des sommations car il est
plus que probable que certaines cellules peuvent contenir plus qu’un seul
element lineaire. Il faut donc avoir recours d’abord a une table temporaire
(T_temp) . La forme generale est
Énonce
Explications
SELECT
P_Cells.description
Identificateur unique des cellules dans la table cellulaire
SUM(P_Routes.Long)
Calcul des valeurs a partir des elements de la table lineaire
FROM P+Cells, P_Routes
les tables cellulaire et lineaire
WHERE
P_Routes.obj WITHIN P_Cells.obj
Operateur geographique de regroupement des elements par cellule
GROUP BY description
Regroupement sur l’identificateur unique de cellule
INTO T_Temp
Table temporaire qui sera eliminee par la suite
Par la suite, il suffit de mettre a jour la colonne voulue dans la table
cellulaire en faisant une jointure entre avec la table temporaire en
utilisant l’identificateur unique des cellules.