Question

J'ai un point (Lat / Lon) et un cap en degrés (nord vrai) pour lesquels ce point se déplace. J'ai de nombreux polygones fixes (points définis en Lat / Lon) convexes ou non.

Ma question est la suivante: comment calculer le point d'intersection le plus proche, le cas échéant, avec un polygone. J'ai lu plusieurs articles confus sur le lancer de rayons, mais ils semblent tous se rapporter à la 3D lorsque le rayon et le polygone ne sont pas sur le même plan et que les polygones doivent également être convexes.

Était-ce utile?

La solution 4

La réponse sur cette page semble être la plus précise.

Question 1.E GodeGuru

Autres conseils

On dirait que vous devriez être capable de faire une simple intersection de lignes en 2d ...

Cependant, j’ai déjà travaillé avec Lat / Long et je sais qu’ils ne sont pas tout à fait conformes à un système de coordonnées 2D.

Je commencerais par un message général "IsPointInPolygon". fonction, vous pouvez trouver un million d'entre eux en googlant, puis le tester sur votre poly pour voir à quel point il fonctionne. S'ils sont suffisamment précis, utilisez-les. Mais il est possible qu'en raison de la nature non carrée des coordonnées lat / long, vous devrez peut-être apporter certaines modifications à l'aide de la géométrie sphérique.

En 2D, les calculs sont assez simples ...

Vous pouvez toujours commencer par vérifier que le point final du rayon n'est pas à l'intérieur du polygone (car c'est le point d'intersection dans ce cas).

Si le point final est en dehors de la ligne, vous pouvez effectuer une intersection de segment de rayon / de ligne avec chacune des entités limites du polygone et utiliser l'emplacement trouvé le plus proche. Qui gère les fonctionnalités convexes / concaves, etc.

Déterminez si le rayon intersecte chaque segment de droite du polygone en utilisant cette technique .

Le facteur d'échelle résultant dans (ma réponse acceptée) (que j'ai appelée h ) est "À quelle distance se trouve l'intersection le long du rayon". Vous recherchez une valeur comprise entre 0 et 1 .

S'il y a plusieurs points d'intersection, c'est bien! Si vous voulez le "premier", " utilisez celui avec la plus petite valeur de h .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top