Suite

Planification de voyage - Trouver les points les plus éloignés d'un polygone

Planification de voyage - Trouver les points les plus éloignés d'un polygone


Je souhaite organiser un tour du lac avec 2 objectifs :

  • maximiser la longueur des rives pour voir
  • minimiser la distance de déplacement

Pour ce faire je peux :

  1. Choisissez 2 points les plus éloignés du lac en termes de distance de déplacement
  2. Définir les rives « gauche » et « droite » du lac
  3. Voyage à égale distance entre les rives de A à B

Quelle est la meilleure façon de trouver ces 2 points ?

MISE À JOUR SUR L'ORIGINAL Q :

L'approche que j'utilise consiste à placer plusieurs points aléatoires et à calculer l'arbre couvrant minimum euclidien.

Itérer sur toutes les paires de points/nœuds afin de trouver un couple avec la distance la plus longue. L'image montre la distance où la destination est le point au nord. Cela fonctionne mais un peu lourd, donc je suis à la recherche d'idées. Raster ou vecteur fera l'affaire.

Il s'agit d'une discussion sans fin sur la longueur des polygones.


Polygone non convexe

Vous devez dessiner la transformation de l'axe médian (squelette ou ligne centrale) du polygone. Options pour le faire :

  1. Créer des traits d'axe

  2. utiliser CGAL avec arcobjects

Ensuite, utilisez les lignes médianes pour calculer en fonction du réseau la distance entre deux points et trouver les plus éloignés.

Polygone convexe

Le moyen le plus simple, mais pas le plus efficace, consiste à calculer (arcpy) les distances par paires entre chaque sommet de votre entité surfacique (lac) et à extraire le plus grand. La complexité serait o(n^2), avec n le nombre de sommets, pour chaque polygone.

Si vous ne voulez pas faire de codage (python), créez un modèle avec :

  1. Outil GP d'entité à point
  2. OUTIL DISTANCE ENTRE POINTS (de l'outil d'analyse de Hawth)

Questions similaires

Comment calculer des squelettes droits en utilisant Python ?

Simplification des polygones en ligne

Trouver la « ligne médiane » du tunnel ?