É possível gerar um padrão boustrophedon que preenche uma região vetorial com GRASS?

21

É possível gerar um padrão boustrophedon que preenche uma região vetorial com GRASS?

Eu tenho uma região de vetor no GRASS. E eu gostaria de gerar um vetor (uma polilinha) que é o padrão bostrofedon que preenche essa região.

Na figura abaixo, tenho a área "cinza" e gostaria de gerar a polilinha vermelha automaticamente.

É possível com o GRASS ou outra ferramenta GIS?

insira a descrição da imagem aqui

Em um mundo perfeito, a função terá os seguintes argumentos:

  • Um ponto de partida (que deve estar em qualquer lugar da área)
  • Distância entre duas linhas paralelas
  • Uma direção (um vetor que ajudará a desenhar o padrão)
Adrien BARRAL
fonte
Pergunta interessante. Como você determinaria o ponto de partida? A "parte superior esquerda" nem sempre pode estar relacionada a um bom ponto de canto, como no seu exemplo.
Darren Cope
Eu respondi ao seu comentário na pergunta
Adrien BARRAL
1
Provavelmente algo poderia ser cozinhado usando PyGRASS: grass.osgeo.org/grass70/manuals/libpython/pygrass_index.html
markusN
A saída necessária é apenas uma imagem com as linhas desenhadas nela, ou você está realmente buscando alguma saída de coordenadas que poderiam ser dadas a um trator para arar um campo com mais eficiência?
Nmtoken

Respostas:

2

Não tenho idéia de como criar essa função, mas as etapas a serem executadas podem ser

  1. Desenhe uma linha com o azimute desejado e crie novas linhas com deslocamento para que o polígono fique totalmente coberto.

Campo de linha criado

  1. Coloque um buffer no polígono para definir a lacuna entre o limite do polígono e o boustrophedon. Corte as linhas nos limites do polígono em buffer e mantenha as partes internas.

Corte de campo de linha com o polígono em buffer

  1. Conecte os pontos final e inicial das linhas na ordem correta.

Padrão boustrophedon pronto

user30184
fonte
1
Eu tentei a mesma coisa, acho que você gosta de algo aqui. Os passos 1 e 2 são bastante fáceis - ou podem ser ridicularizados. O passo 3 é mais complicado. No postgis, pode ser possível classificar os pontos que representam as st_intersection()linhas paralelas / buffer interno pelo seu ST_LineLocatePoint()valor ao longo do buffer interno e unir pares alternativos.
Steven Kay
1
Se o limite do polígono tiver cantos ou pontas internas, as linhas que conectam os pontos final e inicial podem cruzar o limite. Não é difícil testar se a interseção acontece, mas qual seria o caminho certo para desenhar a cadeia de linhas nesse caso e como fazê-lo automaticamente? Pode não ser fácil encontrar uma solução geral.
usar o seguinte comando
você está certo, obter direções corretas será complicado. Também, esta abordagem suspeito terá casos extremos, por exemplo, campos ou campos com orifícios em forma de u :)
Steven Kay