Recuperando pontos iniciais e finais para cada linha em forma de arquivo no ArcGIS Desktop ou QGIS?

15

Eu tenho um shapefile de vetor (polilinha) e preciso recuperar os pontos inicial e final de cada linha (nós) e criar um shapefile com esses pontos. Então, preciso adicionar à tabela de atributos da polilinha o ponto inicial e final de cada linha, com base no ID dos pontos.

Como eu poderia fazer isso de uma maneira simples no ArcGIS Desktop ou QGIS?

user51651
fonte
2
No ArcGIS, se você possui uma licença Avançada, pode usar a ferramenta Caixa de Ferramentas de Gerenciamento de Dados-> Conjunto de Ferramentas de Recursos-> Vértices de Recurso a Pontos com a opção Ambas as Extremidades. Todos os atributos da linha são mantidos. No entanto, você precisaria adicionar um campo à sua classe de recurso de linha original e calcular o ID do recurso em sua linha para manter esse valor preservado nos pontos. Se você tiver outro campo de valor exclusivo em suas linhas, poderá ingressar e calcular o FID após executar a ferramenta. A opção final envolveria a realização de uma união espacial com a opção Um para muitos e a remoção de cópias com atributos incorretos.
Richard Fairhurst
Isso responde sua pergunta? "Como recupero as coordenadas de ponto inicial e final com Python / arcpy?" gis.stackexchange.com/q/31684/8104
Aaron
Tentei uma abordagem semelhante, mas me perdi ao longo do caminho. Vou tentar refazê-lo. O melhor será criar uma macro que faça todo esse trabalho para que todos possam executar o mesmo procedimento posteriormente. Felicidades!
user51651
@RichardFairhurst, que provavelmente também deve ser sugerido como resposta. É assim que eu tenho feito isso historicamente
bwp8nt 09/02/19

Respostas:

8

Essa é uma linha para a GDAL. Este comando cria um shapefile a partir dos nós iniciais com atributos selecionados:

ogr2ogr -f "ESRI Shapefile" -dialect sqlite output.shp -sql "select ST_StartPoint(geometry), attribute_1, attribute_2, attribute_3 from input" input.shp

Use ST_EndPoint para terminais.

user30184
fonte
Muito obrigado! Isso provavelmente fez o trabalho, mas eu estava procurando por algo mais simples (visual) para que outras pessoas sem habilidades de programação pudessem executar a tarefa.
User51651 16/08
Onde você escreve esse comando?
blue_chip
Para a linha de comando. No Linux, use o shell normal. No Windows, use a janela de comando, mas verifique se o seu ambiente possui os caminhos corretos. O shell do Osgeo4w faz isso automaticamente.
usar o seguinte comando
6

Existe um plugin QGIS "Localizar pontos ao longo das linhas" . Para derivar pontos iniciais e finais, escolha Adicionar pontos finais e use um intervalo maior que a sua linha mais longa.

EikeMike
fonte
6

Solução QGIS: É possível extrair nós iniciais e finais (coordenadas) de um arquivo vetorial de linha, simplesmente usando xat e yat na calculadora de campo, com os respectivos índices 0 (início) e -1 (final).

xat(0)    
yat(0)
xat(-1)
yat(-1)
gonethou
fonte
5

Para uma solução ArcGIS, criei uma ferramenta de geoprocessamento que cria pontos nas linhas.

Você pode baixá-lo e visualizar o código aqui: Criar pontos em linhas

Para o Tipo, você deseja escolher INICIAR / FINALIZAR PONTOS. Isso criará uma nova classe de recurso de ponto que contém os pontos inicial e final de cada polilinha.

A classe de recurso do ponto de saída também terá um campo chamado LineOID, que registra o OID da polilinha da qual foi criado. Dessa forma, você pode juntar seus dados de atributo novamente.

Aqui está uma captura de tela de como você definiria os parâmetros:

insira a descrição da imagem aqui

ianbroad
fonte
Isso é ótimo Ian! Vou baixá-lo, testá-lo e fornecer feedback o mais rápido possível. Acho que essa ferramenta será útil para o que eu preciso e ajudará a automatizar melhor o processo! Obrigado!
user51651
Oi Ian, Idk porque, mas não consigo fazer sua ferramenta funcionar no ArcGIS 10.0 ou 10.1 ...
Adicionei
@ user51651 Você está recebendo uma mensagem de erro? Não funcionará com 10.0, mas deve funcionar com 10.1 e acima. Se você for ao menu Geoprocessamento e Resultados. Há alguma mensagem aí?
Ianbroad 18/05
3

para adicionar a coordenada dos pontos finais na tabela de atributos, usando o ArcGIS, você pode usar a calculadora de campos (não é necessário criar geometrias). Clique no nome do campo, na calculadora do campo e use a sintaxe do Python com as linhas simples abaixo (exemplo com a coordenada X):

!shape.firstPoint.X!

!shape.lastPoint.X!

note que tudo está dentro dos !!

radouxju
fonte
Esta é uma resposta muito boa, eu não sabia que isso era possível. Um instantâneo dele na Calculadora de campo pode ajudar pessoas menos familiarizadas com a tarefa. Eu suponho que você poderia fazer isso com valores M também?
bwp8nt
2

No QGIS, use a ferramenta Extrair vértices específicos . Defina os índices do vértice como 0 para obter pontos iniciais e -1 para obter pontos finais ou 0, -1 para obter os dois.

QGIS extrair vértices específicos

Observe a descrição:

O primeiro vértice corresponde a um índice de 0, o segundo vértice tem um índice de 1, etc. Índices negativos podem ser usados ​​para encontrar vértices no final da geometria, por exemplo, um índice de -1 corresponde ao último vértice, - 2 corresponde ao segundo último vértice etc.

Karol Daniluk
fonte
1

No ArcGIS, se você possui uma licença Avançada, pode usar a ferramenta Caixa de Ferramentas de Gerenciamento de Dados-> Conjunto de Ferramentas de Recursos-> Vértices de Recurso a Pontos com a opção Ambas as Extremidades. Todos os atributos da linha são mantidos. No entanto, você precisaria adicionar um campo à sua classe de recurso de linha original e calcular o ID do recurso em sua linha para manter esse valor preservado nos pontos. Se você tiver outro campo de valor exclusivo em suas linhas, poderá ingressar e calcular o FID após executar a ferramenta. A opção final envolveria a realização de uma Junta Espacial com a opção Um para Muitos e a remoção de cópias com atributos incorretos.

Richard Fairhurst
fonte