J'ai une couche polygonale qui décrit une contrainte; Je souhaite ajouter des points dans ce domaine. Je veux ajouter autant de points que possible, mais ils doivent avoir un espacement minimum entre eux. Est-il possible de le faire avec le SIG?
Pour clarifier, il serait préférable de générer une grille ordonnée, car cela garantirait le plus de points. Cependant, la contrainte le permet rarement, et il peut être préférable de supprimer des points pour permettre à un décalage de mieux s'adapter à la contrainte.
Réponses:
Je pense que cela pourrait être considéré comme un problème "d'emballage".
Si c'est le cas, vous voudrez peut-être essayer un algorithme génétique, peut-être similaire à celui de On Genetic Algorithms for the Packing of Polygons .
la source
Je ne connais aucun outil SIG pour le faire, mais j'ai une idée sur l'algorithme.
Tout d'abord, une approximation du nombre maximal de points peut être obtenue avec cette formule:
(où
A
est la zone du polygone etd
la distance d'espacement minimale).Ensuite, pour essayer de localiser ces points dans le polygone, le meilleur motif n'est pas la grille carrée mais la grille hexagonale. Voir:
Enfin, certaines techniques d'optimisation utilisant des modèles de force pourraient être utilisées pour affiner le positionnement relatif des points.
NB: C'est un problème bien connu en cristallographie .
la source
Voir le fil à /math/15624/distribute-a-fixed-number-of-points-uniformly-inside-a-polygon . Noter en particulier la référence (dans un commentaire) au "processus de disque de Poisson" et faire quelques recherches sur le Web. Le lien avec la question actuelle est que lorsque vous pouvez répartir uniformément un nombre donné de points, vous pouvez systématiquement augmenter ce nombre jusqu'à ce qu'il ne soit plus possible de placer de points dans le polygone, ce qui résout le problème de la maximisation du nombre de points soumis à un exigence de distance minimale. (Techniquement, les deux problèmes sont des problèmes de double optimisation où les objectifs et les contraintes sont échangés.)
la source
La solution doit être des triangles équilatéraux, http://en.wikipedia.org/wiki/Equilateral_triangle . La seule question est la longueur des côtés et le "décalage xy" par rapport à votre polygone.
(identique à la grille hexagonale mentionnée ci-dessous)
la source