#1 Wed 01 October 2014 11:29
- LAPUYADE
- Juste Inscrit !
- Date d'inscription: 22 Aug 2006
- Messages: 5
Objet le plus proche d'un autre ?
Bonjour, j'ai une couche de ponctuels, et je cherche une procédure ou fonction qui me donnerait le code d'un linéaire le plus proche. (en l’occurrence, le code hydro du tronçon de rivière le plus proche d'un captage). Quelqu’un a une idée??
merci !
Hors ligne
#2 Fri 03 October 2014 12:12
- simeric
- Participant assidu
- Date d'inscription: 10 Mar 2009
- Messages: 255
Re: Objet le plus proche d'un autre ?
Dans le module de calcul d'itinéraire, il y a ça.
Mais ça implique d'avoir un graphe.
Sinon peut-être avec l'aide d'une formule en utilisant le champ "distance à la sélection" (?)
Hors ligne
#3 Mon 06 October 2014 11:12
- LaurentPichon
- Participant actif
- Lieu: Bagneux
- Date d'inscription: 28 Nov 2012
- Messages: 62
Re: Objet le plus proche d'un autre ?
Bonjour,
Il n'existe pas de commandes permettant de faire cela directement. La commande du menu itinéraire étant celle qui s'en rapproche le plus, mais elle donne une distance par la route entre le milieu du linéaire et le point (et non la distance la plus courte à vol d'oiseau).
Il est néanmoins possible de réaliser cette opération en cumulant plusieurs commandes de Geoconcept.
1) Commencez par créer une requête topologique retrouvant les linéaires à moins de n km de votre ponctuel: choix du T/ST ponctuel, puis onglet topologie, "Ajouter une condition topologique" et "à moins de n km". Vous pouvez changer cette valeur selon vos besoins, néanmoins, plus la valeur sera grande, plus les calculs suivants seront longs.
2) Dans le configurateur, sur vos ponctuels, ajoutez un champ entier muni de la formule suivante: "Min(|Type linéaire|.|Sous-type linéaire|.|Distance à la sélection|,"Requête moins de n km")+1
3) Validez le configurateur. A ce stade, nous disposons d'un champ sur les ponctuels donnant la plus courte distance au linéaire le plus proche (à vol d'oiseau).
4) Sélectionnez l'ensemble des ponctuels, aller dans le menu Itinéraire et cliquez sur "Isochrone ou Isodistance". Basculez en mode avancé dans la barre de titre si besoin. Faites ensuite des isodistance surfacique, cliquez sur "valeur" et choisissez le champ formule précédemment créer. Cliquer sur Type/Sous-type et choisissez un sous-type de type surfacique qui nous servira pour faire des opérations temporaires. Choisissez ensuite "à vol d'oiseau", puis bouton "Suivant". Sur la page suivante, cochez "Copier l'identifiant des objets de référence", choisissez le champ "Identificateur" que vous allez copier dans un champ numérique de vos objets de travail.
5) Cliquez sur "Terminer". A ce stade nous avons pour chaque ponctuel, une zone circulaire coupant uniquement l'objet linéaire le plus proche. le fait d'avoir ajouter 1 à la formule précédente nous permet de nous assurer qu'il y aura bien intersection, et le disque ne recoupera qu'un objet (au pire plusieurs mais à la même distance).
6) Il nous reste maintenant à remonter les informations des linéaires sur les ponctuels en deux étapes. Tout d'abord une jointure topologique (onglet Données), en recopiant le nom du linéaire le plus proche sur les objets de travail (les zone surfaciques circulaires que nous venons de créer).
7) Puis une jointure attributaire (onglet Données également) pour recopier ce même nom des objets de travail vers les ponctuels d'origine en choisissant comme champ clé l'identifiant pour les objets de destination (les ponctuels) et le champ contenant l'identifiant des ponctuels pour les objets sources (objets de travail).
Voilà, après ces quelques opérations, vous aurez le nom du linéaire le plus proche sur vos ponctuels.
Bonne journée.
Hors ligne
#4 Mon 13 October 2014 15:57
- LAPUYADE
- Juste Inscrit !
- Date d'inscription: 22 Aug 2006
- Messages: 5
Re: Objet le plus proche d'un autre ?
Merci de cette réponse très précise. Je suis ravi de voir que l'on peut s'en sortir.
Je butte sur Min(|Distance à la sélection|,"Moins 8 km")+1 qui me renvoie : "mauvais type d'objet ou de champ". Pourtant j'ai créé un entier, "Moins 8 km" est le nom de ma requete ??
Hors ligne
#5 Tue 14 October 2014 10:54
- LaurentPichon
- Participant actif
- Lieu: Bagneux
- Date d'inscription: 28 Nov 2012
- Messages: 62
Re: Objet le plus proche d'un autre ?
Bonjour,
Dans votre configurateur, dans l'onglet "Champs", procédez comme suit:
1) Ajoutez un champ de genre "Entier" sur vos ponctuels.
2) Sélectionnez le champ nouvellement créé et appuyez sur le bouton "Formule".
3) Déroulez le petit "+" devant "Statistiques" et double cliquez sur "Min".
4) Une fenêtre s'ouvre qui vous permettra de choisir: le type/sous-type de vos objets linéaires, la requête "A moins de n km" précédemment créée et le champ "Distance à la sélection".
5) Validez par le bouton "OK" et cliquez sur le bouton "Vérifier".
Le message "Formule correcte" devrait s'afficher.
Bonne journée.
Dernière modification par LaurentPichon (Tue 14 October 2014 10:55)
Hors ligne