Eu quero usar o QGIS criando pontos ao longo da linha, mas na distância especificada. Encontrei duas ferramentas GRASS na SEXTANTE Toolbox:
- v.to.points
- v.segment
Eu tentei v.to.points , definindo a distância máxima entre pontos em unidades de mapa para 100 e consegui isso:
A segunda foto mostrou um olhar mais atento da parte superior. O resultado foi o que eu quero, mas quero obter menos pontos , mas mesmo que eu defina a distância máxima para 1000 ou 1000000, o resultado é o mesmo.
Tentei usar o v.segment , mas não tinha nenhum arquivo contendo regras de segmento.
Underdark me deu alguns conselhos, e tentei as geometrias de Densify por um intervalo . Primeiro, ele forneceu um shapefile da polilinha da mesma forma que eu inseri e, em seguida, usei nós de extração para tentar obter esses pontos. Mas o resultado foi o mesmo que obtive usando pontos v.to. , não importa o que eu defina o intervalo de distância.
Como posso criar pontos ao longo da linha e na distância especificada?
fonte
Respostas:
No console do Python:
você pode usar o módulo Shapely (como em Como criar pontos equidistantes no QGIS? ) com a função
point = line.interpolate (distância atual)
A nova API Python da versão mestre (1.9) possui um comando equivalente (como em Gerando nós de cadeia (distância) no QGIS de Nathan Woodrow)
point = geom.interpolate (distância atual)
ou você pode usar álgebra vetorial e cossenos de direção (como em PyQGIS: geometrias, vetores, álgebra vetorial ou cossenos de direção, exemplos de aplicação , em francês)
1) crie uma classe de camada de memória (classe completa (sem atributos) em crea_mem_layer.py )
2) funções de álgebra vetorial (de algèbre_vect_PyQGIS.py )
3) direção cossenos
4) linha de processo ou segmentos de linha
Resultados
polilinha, ponto equidistante com Shapely ou PyQGIS2, com cossenos de direção
Então apenas ajuste o intervalo
fonte
Agora existe um plugin chamado QChainage que faz exatamente o que você deseja. Você especifica uma distância de intervalo e o plug-in cria pontos ao longo da sua linha no intervalo especificado.
fonte
Eu escrevi um script que altera a ferramenta de geometrias Sextante Densify para aceitar uma certa distância. É chamado de geometrias densificar dado um intervalo .
Após executar o Densify, você pode extrair os pontos usando a ferramenta Extrair nós .
Você pode obtê-lo no Github e as instruções de instalação estão no meu blog .
fonte
Se você não quiser usar scripts python, basta instalar e usar o plug-in "Profile from line" e ignorar / excluir a coluna de valor raster. A corrente será o que você definir para o intervalo de amostragem.
fonte
Bem, não tenho certeza se isso está na versão estável, mas na caixa de ferramentas sextante em 1.9 alfa em Geoalgorithims-> Vector é a opção "Converter linhas em pontos". Funciona um prazer, seja ótimo se ele adicionou um campo para a distância ao longo da linha também.
Interessante, ele adicionou o campo NAME da minha camada vetorial.
Eu tentei colocar o Python Script de Nathan Woodrow funcionando, mas sou péssimo com python. E com o código em geral, parece.
fonte
Passei muito tempo lutando com esse problema, mas finalmente consegui mais ou menos o que estava procurando usando o QChainage. O que eu gostaria de compartilhar é algo que pode ajudar outras pessoas. Ao usar a ferramenta de dissolução de geoprocessamento SAGA na linha, o QChainage produz resultados incorretos. O uso de uma ferramenta de dissolução diferente faz com que ela funcione bem.
fonte