Est-il possible de générer un motif de boustrophédon qui remplit une région vectorielle avec GRASS?

21

Est-il possible de générer un motif de boustrophédon qui remplit une région vectorielle avec GRASS?

J'ai une région vectorielle dans GRASS. Et je voudrais générer un vecteur (une polyligne) étant le motif de bostrophédon qui remplit cette région.

Dans l'image ci-dessous, j'ai la zone "grise", et je voudrais générer automatiquement la polyligne rouge.

Est-ce possible avec GRASS ou un autre outil SIG?

entrez la description de l'image ici

Dans un monde parfait, la fonction prendra les arguments suivants:

  • Un point de départ (qui doit être n'importe où dans la zone)
  • Une distance entre deux lignes parallèles
  • Une direction (un vecteur qui aidera à dessiner le motif)
Adrien BARRAL
la source
Question interessante. Comment détermineriez-vous le point de départ? "En haut à gauche" ne correspond pas toujours à un joli coin comme dans votre exemple.
Darren Cope
J'ai répondu à votre commentaire dans la question
Adrien BARRAL
1
Quelque chose pourrait probablement être préparé en utilisant PyGRASS: grass.osgeo.org/grass70/manuals/libpython/pygrass_index.html
markusN
La sortie requise est-elle juste une image avec les lignes tracées dessus, ou êtes-vous vraiment à la recherche de coordonnées qui pourraient être données à un tracteur pour labourer plus efficacement un champ?
nmtoken

Réponses:

2

Je n'ai aucune idée de la façon de construire une telle fonction, mais les étapes à effectuer peuvent être

  1. Tracez une ligne avec l'azimut souhaité et créez de nouvelles lignes avec décalage afin que le polygone soit totalement couvert.

Champ de ligne créé

  1. Mettez le polygone en mémoire tampon pour définir l'écart entre la limite du polygone et le boustrophédon. Coupez les lignes aux limites du polygone tamponné et conservez les parties internes.

Champ de ligne coupé avec le polygone tamponné

  1. Connectez les points de fin et de début des lignes dans le bon ordre.

Modèle de boustrophédon prêt

user30184
la source
1
J'ai essayé la même chose, je pense que vous êtes sur quelque chose ici. Les étapes 1 et 2 sont assez faciles - ou peuvent être simulées. L'étape 3 est plus délicate. Il pourrait être possible dans postgis de trier les points représentant les st_intersection()lignes parallèles / tampon interne par leur ST_LineLocatePoint()valeur le long du tampon interne et de joindre des paires alternées.
Steven Kay
1
Si la frontière du polygone a des coins internes ou des pointes, les lignes qui relient les points de fin et de début peuvent couper la frontière. Il n'est pas difficile de tester si l'intersection se produit, mais quelle serait la bonne façon de dessiner la ligne dans un tel cas et comment le faire automatiquement? Il n'est peut-être pas facile de trouver une solution générale.
user30184
vous avez raison, obtenir des directions correctes sera difficile. soupçonnez également que cette approche aura des cas de bord, par exemple des champs en forme de U ou des champs avec des trous :)
Steven Kay