Dividir todas as linhas na camada nos vértices usando QGIS?

11

Quero dividir automaticamente todas as linhas em uma camada QGIS em seus vértices ( assim ).

Eu fiz uma pesquisa no google e encontrei este artigo , que é bem próximo, mas o fluxo de trabalho é complicado. Como terei que treinar meus colegas de trabalho (que não estão familiarizados com o GIS) para usar essa ferramenta, quero algo tão simples quanto um plug-in ou algo que não exija GRASS. Como já faz muito tempo desde 2010 - o tempo da resposta anterior , pergunto-me se existe alguma maneira melhor de obter o mesmo resultado?

Cao Minh Tu
fonte
Hoje em dia, você pode usar as ferramentas GRASS do QGIS. Talvez Vector-> Ferramentas de geometria-> Peças únicas para várias partes possam ajudar. Sextante caixa de ferramentas deve ter "Explode camada de linha" e há plugin "recurso de divisão"
simplexio
Eu acho que a resposta a que você se refere é (ainda) o procedimento correto. A ferramenta vetorial "Peça única para várias partes" não fará o que você deseja. Ele divide uma cadeia de linhas múltiplas nos nós , não em cada vértice.
quer
@simplexio: com a caixa de ferramentas Sextante, recebi uma mensagem de erro como na resposta de Bernd V. e não consigo encontrar o plug-in 'recurso de divisão' em qualquer lugar da rede.
Cao Minh Tu
@Micha: esse procedimento pode estar correto, mas será muito complexo para meus colegas de trabalho - que não estão familiarizados com o SIG, então considerarei o último recurso, quando tudo mais falhar :)
Cao Minh Tu
@Cao Minh Tu: testei o 'Recurso de divisão' novamente no Linux Master e no Win7 1.8 com uma camada de linha recém-criada, e aí funciona. Por favor, crie uma camada de teste a partir do zero e aplique-a lá. Talvez haja erros nas suas camadas originais que precisam ser resolvidos primeiro!
Bernd V.

Respostas:

17

As linhas de explosão da Caixa de ferramentas de processamento dividirão todas as linhas em seus vértices para separar as linhas.

Menu Processamento -> Caixa de ferramentas. Digite "explodir" no campo de pesquisa para encontrar a função. Selecione sua camada de linha no menu suspenso e comece. Isso produzirá uma nova camada.

Selecionar uma ou mais linhas da camada de linha produzirá uma camada dividida com apenas esses recursos, descartando o restante.

Nota: Como o QGIS está se movendo rapidamente, todas as informações abaixo já estão desatualizadas.

Eu acho que as linhas Explodir seriam a solução noob através da caixa de ferramentas SEXTANTE . QGIS Geoalgorithms > Vector geometry tools > Explode lines. Infelizmente, parece não funcionar no momento, recebo apenas uma mensagem de erro.

Traceback (most recent call last):
  File "path/.qgis//python/plugins\sextante\core\GeoAlgorithm.py", line 145, in execute
    self.processAlgorithm(progress)
  File "path/.qgis//python/plugins\sextante\algs\Explode.py", line 58, in processAlgorithm
    features = QGisLayers.features(layer)
NameError: global name 'layer' is not defined

Uma solução funcional é o Split Feature-Plugin do repositório "contribuído", que faz o trabalho para mim.

Em geral, prefiro funções sextante a plugins separados, porque o fluxo de trabalho com sextante é muito mais rápido e não produz arquivos inúteis de etapas intermediárias (desde que funcione).

EDIT: Infelizmente, muitos plug-ins ainda não foram movidos para o repositório oficial de plug-ins, mas ainda estão disponíveis apenas no repositório de plug-ins "contribuído": http://pyqgis.org/repo/contributed , que foi removido dos repositórios padrão lista com a versão 1.8.

Lá você pode baixá-los individualmente e descompactá-los na pasta .qgis / python / plugins OU adicionar esse endereço à sua lista de repositórios de plug-ins: Plugins -> Fetch python plugins -> Tab "Repositories" -> Add ... -> enter a name and the url.

Bernd V.
fonte
Você pode me dizer onde encontrar o plugin 'Split Feature' - não consigo encontrá-lo no repositório oficial de plugins? Com as linhas SEXTANTE Explode, recebi a mesma mensagem de erro que a sua - há um relatório de erro aqui: hub.qgis.org/issues/7157
Cao Minh Tu
@ Cao Minh Tu: desculpe, esqueci completamente que adicionei o repositório antigo à minha lista, onde esse plug-in reside exclusivamente. veja minhas edições.
Bernd V.
Eu tentei o plugin Split Feature, não há mensagem de erro, mas a camada de saída não continha nada.
Cao Minh Tu
Há apenas um erro 404 em pyqgis.org/repo/contributed - o URL foi alterado?
til_b 29/09/14
@til_be see my edit
Bernd V.
4
  1. Abrir / Criar conjunto de mapas GRASS (para que você possa executar as ferramentas nos seus dados)
  2. Abra ferramentas GRASS / Importe o shapefile que você deseja dividir no banco de dados GRASS
  3. Execute v.split.vert (defina o número máximo de vértices = 2)
user32879
fonte
Esta solução mantém valores de z nas geometrias de segmento
Tamas Kosa
1
    segment_list = []
    for feature in feature_list:
        vertices = feature.geometry().asPolyline() # returns list of vertices comprising polyline
        for point in range(len(vertices)-1):
            segment = QgsFeature()
            segment.setGeometry(QgsGeometry.fromPolyline([vertices[point], vertices [point+1]]))
            segment.setAttributes(feature.attributes())
            segment_list.append(segment)
Steve
fonte