#1 Thu 07 October 2004 16:58
- Marie-laure Bossis
- Invité
Point Kilometrique
Bonjour a tous,
Je travaille a partir d'une table cours d'eau (polyligne) et d'une table de reperes de crue (points).
Il faudrait d'abord que je raccroche mes points sur la polyligne cours d'eau a l'endroit le plus proche.
Ensuite il faut que je recupere pour chaque point son PK par rapport au cours d'eau (pour ceux qui connaissent pas c'est la distance cumulee).
Logiciels utilises : Arcview 3.1 et mapinfo 7.5
Merci d'avance pour les renseignements.
Marie-laure Bossis.
#2 Fri 08 October 2004 08:43
- Ludovic
- Invité
Re: Point Kilometrique
Bonjour Marie-Laure,
J'ai developpe des outils pour ce genre de calcul en avenue pour ArcView pour la DIREN Centre. Je pense que si vous les contactez (demandez eventuellement Lydia Sacco), vous pourriez obtenir de l'aide (et les codes sources). La finesse provient de la forme sous laquelle se presente votre table de cours d'eau...
Avez vous un axe continu par riviere (1 riviere = 1 polyligne) ?
Avez-vous des valeurs de PK amont et aval sur voter table de cours d'eau pour chaque troncon de la riviere ? Ou a l'inverse vous n'en avez pas et devez calculer un PK geometrique ?
Bien cordialement
Ludovic
#3 Sat 09 October 2004 17:13
- Third Planet On The Left
- Invité
Re: Point Kilometrique
Si vous lisez l'anglais, ceci pourra vous interesser :
http://www.crwr.utexas.edu/gis/gishydro … etwork.htm
http://www.crwr.utexas.edu/gis/gishydro … utline.htm
a+
EJ
#4 Mon 11 October 2004 12:01
- Ludovic
- Invité
Re: Point Kilometrique
> Bonjour,
>
> Par rapport a vos questions :
> La table sur laquelle je travaille est la BD Carthage : j'ai donc un
> ensemble de segments de riviere mais il me suffit d'une selection pour
> tous les assembler.
D'accord, vous travaillez sur BD Carthage, c'etait egalement mon cas.
> Ensuite, il faut que j'informe un PK geometrique dans la table repere de
> crue (les reperes sont des points qui doivent couper la polyligne cours
> d'eau).
Donc vous ne voullez pas utiliser les PKs carthage ? Avec 1000 comme valeur du point terminal de votre riviere ?
Admettons que vous ayez reussi a selectionne les elements de votre riviere, etes-vous sur que :
- tous sont dans le bons sens d'ecoulement,
- il n'y a pas de coupure (rupture) dont la continuite de votre riviere (un trou autrement dit).
Une fois votre axe de riviere cree, et sur, vous avez besoin de 2 fonctions :
- l'une de projection de vos points sur votre axe, (voir a la fin un exemple de script)
- l'autre de calcul de PK en utilisant une fonction de ce type :
Code:
'* calcule du pk geometrique du point lePourcent = leAxe.PointPosition(pt) lePk = (leAxe.ReturnLength * lePourcent ) /100 / 1000
Ou leAxe est la polyligne de votre riviere.
> En fait je ne vois pas comment faire : si il y a un outil qui peut me
> donner ces PK ou si il faut le faire mannuellement.
Voici des pistes, j'espere qu'elles vous aideront.
Bien cordialement
Ludovic
Code:
Script de projection des points : '----------------------------------------------------------------- ' Projet_Point.ave ' '----------------------------------------------------------------- ' Script : Projection point sur l'axe ' But : Fonction qui calcule les projetes d'une liste de points ' sur un theme d'axe ' Source : BD_Carthage ' Auteur : Ludovic LESTRAT ' Version : Juin 1998 '----------------------------------------------------------------- '*********Recupere les parametres axe et ligne d'intersec********* LesPoints = self.get(0) AxeTheme = self.get(1) laDistance = self.Get(2) FtabAxes = AxeTheme.GetFtab lesPointsSortie = {} '* Parcours de tous les points a calculer For each pt in lesPoints '**********Calcul de la projection du point avec l'axe *********** '* Definit les proprietes de snapping du theme axe a la limite la '* plus proche _LaVue.SetInteractiveSnapping (AxeTheme, #POINT_SNAP_BOUNDARY) '* Definit la tolerance de snapping a laDistance metres AxeTheme.SetInteractiveSnapTolerance (laDistance + 100) '* Snap le point saisi a la limite la plus proche de l'axe AxeTheme.UserSnapPoint(#POINT_SNAP_BOUNDARY,Pt) '* _LaVue.GetGraphics.add(GraphicShape.Make(Pt)) '* Desactive les proprietes de snapping AxeTheme.SetInteractiveSnapping(False) '* Ajoute le point a la liste des resultats lesPointsSortie.add(Pt) End '* la projection de chaque point '*********************Resultat de la fonction********************* Return lesPointsSortie