8
votes

Coordonnées générant au hasard dans une région délimitée

J'ai une liste de longitudes et de latitudes qui forme la limite pour une zone géographique. Je voudrais générer des coordonnées aléatoires dans cette zone géographique. Pourriez-vous suggérer des approches que je peux prendre dans une langue?


1 commentaires

Similaire, mais pour l'avion: Stackoverflow.com/questions/19481514/...


3 Réponses :


8
votes

Comme tout problème, il existe de nombreuses façons de le résoudre, la première chose à laquelle je suis entré dans mon esprit est

  1. Appelons cette "zone géographique" un polygone.
  2. Trouvez la boîte à bornes du polygone (facile, vient de trouver MAXX MINX MINX MINY).
  3. génère une coordonnée aléatoire à l'intérieur de la zone de liaison x = rand ()% (maxx-minx) + MINX (et même pour y)
  4. Test que la coordonnée est à l'intérieur du polygone, il existe de nombreuses solutions à ce problème et sont implémentées dans une langue donnée pour que vous ne puissiez pas la mettre en œuvre par vous-même. Voici une implémentation en C / C ++ (il est facile de le changer à une autre langue): point de polygone Algorithme

    http://fr.wikipedia.org/wiki/point_in_polygon

    EDIT: Comme le suggère Jan Dvorak, il peut être problématique de l'utiliser sur des zones immentionnées, je pense que si votre polygone est proche de l'équateur et que sa taille est inférieure à 100 km, cela fonctionnera très bien.

    Aussi, vous rencontrez des problèmes si vous êtes près de la ligne de 180 °, car il est juste à côté de -180 °.


1 commentaires

Ceci est compliqué sur de grandes surfaces, où vous ne pouvez pas approximimer des polygones sphériques avec des polygones planes



0
votes

Vous pouvez essayer ceci:

  1. Calculez toutes les coordonnées dans cette zone géographique, voir Enregistrer dans Vecteur Points .

  2. générer un numéro INT aléatoire dans [0, points.Size ()) , voir k .

  3. points [k] est ce que vous voulez.


0 commentaires

1
votes

Tout d'abord, nous modéliserons la forme de la Terre comme une sphère. Résoudre le problème pour Sphéroïde oblate est beaucoup plus difficile.

générer un point aléatoire sur une sphère < / a> est relativement facile.

générer un point aléatoire sur un triangle sphérique est plus difficile, mais expliqué dans cet article lié.

Vous aurez besoin de diviser votre polygone en triangles sphériques et de poids en fonction de leur zone . Puis sélectionnez au hasard un triangle sphérique basé sur les poids.

Pour le cas général, Triangulation d'un polygone sphérique n'est pas possible , Cependant, pour la plupart des cas pratiques, la triangulation est une tâche simple. Un tel algorithme est décrit ici (algorithme 1, page 901) avec code source C ++ Disponible ici (recherche de "méthodes de calcul pour calculer la géométrique paramètres de plaques tectoniques ").


1 commentaires

La zone géographique n'était pas très grande. Donc, je n'ai pas suivi cette approche. Mais les liens étaient très utiles et conviennent à une zone géographique plus grande.