Stai recuperando i punti di inizio e fine per ogni linea nello shapefile di linea in ArcGIS Desktop o QGIS?


15

Ho un file di forma vettoriale (polilinea) e devo recuperare i punti di inizio e fine (nodi) di ogni linea e creare un file di forma con questi punti. Quindi devo aggiungere alla tabella degli attributi della polilinea il punto iniziale e finale per ogni linea in base all'ID punti.

Come potrei farlo in modo semplice in ArcGIS Desktop o QGIS?


2
In ArcGIS, se si dispone di una licenza avanzata, è possibile utilizzare la casella degli strumenti Gestione dati-> Set di strumenti funzioni-> Strumento Da vertici a punti con l'opzione Entrambe le estremità. Tutti gli attributi della linea vengono mantenuti. Tuttavia, è necessario aggiungere un campo alla classe della feature di linea originale e calcolare l'ID della feature sulla linea per mantenere quel valore nei punti. Se hai un altro campo valore univoco sulle tue linee puoi unirti e calcolare il FID dopo aver eseguito lo strumento. L'opzione finale prevede la creazione di un'unione spaziale con l'opzione Uno a molti e la rimozione di copie con attributi errati.
Richard Fairhurst,

Questo risponde alla tua domanda? "Come posso recuperare le coordinate del punto iniziale e finale con Python / arcpy?" gis.stackexchange.com/q/31684/8104
Aaron

Ho provato un approccio simile ma mi sono perso lungo la strada. Proverò a rifarlo. Il migliore sarà creare una macro che faccia tutto questo lavoro insieme in modo che chiunque possa effettuare la stessa procedura in seguito. Saluti!
user51651

Metodo @RichardFairhurst, che probabilmente dovrebbe essere suggerito anche come risposta. È così che l'ho fatto storicamente
bwp8nt,

Risposte:


8

Questo è un one-liner per GDAL. Questo comando crea uno shapefile dai nodi iniziali con gli attributi selezionati:

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

Utilizzare ST_EndPoint per endpoint.


Grazie mille! Questo probabilmente ha portato a termine il lavoro, ma stavo cercando qualcosa di più semplice (visivo) in modo che altre persone senza capacità di programmazione potessero svolgere il compito.
user51651

Dove scrivi quel comando?
blue_chip,

Alla riga di comando. Su Linux usa la shell normale. Su Windows usa la finestra di comando ma fai attenzione che l'ambiente abbia i percorsi giusti. La shell Osgeo4w lo fa automaticamente.
user30184


6

Soluzione QGIS: è possibile estrarre nodi di inizio e fine (coordinate) di un file vettoriale di linea, semplicemente usando xat e yat nel calcolatore di campo, con i rispettivi indici 0 (inizio) e -1 (fine).

xat(0)    
yat(0)
xat(-1)
yat(-1)

5

Per una soluzione ArcGIS, ho creato uno strumento di geoprocessing che crea punti su linee.

Puoi scaricarlo e visualizzare il codice qui: Crea punti su linee

Per il Tipo, dovrai scegliere PUNTI INIZIO / FINE. Ciò creerà una nuova classe di caratteristiche punto che contiene i punti iniziale e finale per ciascuna polilinea.

La classe caratteristica del punto di uscita avrà anche un campo chiamato LineOID, che registra l'OID della polilinea da cui è stata creata. In questo modo è possibile unire nuovamente i dati degli attributi.

Ecco uno screenshot di come avresti impostato i parametri:

inserisci qui la descrizione dell'immagine


Questo è fantastico Ian! Lo scaricherò, lo testerò e ti darò un feedback al più presto. Penso che questo strumento tornerà utile per ciò di cui ho bisogno e contribuirà ad automatizzare meglio il processo! Grazie!
user51651

Ciao Ian, Idk perché ma non riesco a far funzionare il tuo strumento in ArcGIS 10.0 o 10.1 ... L'ho aggiunto alla casella degli strumenti ma non pranza ... = /
user51651

@ user51651 Ricevi un messaggio di errore? Non funzionerà con 10.0, ma dovrebbe funzionare con 10.1 e versioni successive. Se vai nel menu Geoprocessing, quindi su Risultati. Ci sono dei messaggi lì dentro?
ianbroad,

3

per aggiungere le coordinate dei punti finali nella tabella degli attributi, usando ArcGIS, è possibile utilizzare il calcolatore di campo (non è necessario creare geometrie). Fai clic sul nome del campo, sulla calcolatrice del campo, quindi usa la sintassi Python con le singole righe sottostanti (esempio con la coordinata X):

!shape.firstPoint.X!

!shape.lastPoint.X!

si noti che tutto è all'interno di !! 's


Questa è davvero una buona risposta, non avevo capito che fosse possibile. Un'istantanea in Field Calculator potrebbe aiutare le persone meno familiari con l'attività. Suppongo che potresti farlo anche con i valori M?
bwp8nt,

2

In QGIS utilizzare lo strumento Estrai vertici specifici . Impostare gli indici dei vertici su 0 per ottenere i punti iniziali e -1 per ottenere i punti finali o 0, -1 per ottenere entrambi.

QGIS Estrai vertici specifici

Nota la descrizione:

Il primo vertice corrisponde a un indice di 0, il secondo vertice ha un indice di 1, ecc. Gli indici negativi possono essere utilizzati per trovare vertici alla fine della geometria, ad esempio un indice -1 corrisponde all'ultimo vertice, - 2 corrisponde al secondo ultimo vertice, ecc.


1

In ArcGIS, se si dispone di una licenza avanzata, è possibile utilizzare la casella degli strumenti Gestione dati-> Set di strumenti funzioni-> Strumento Da vertici a punti con l'opzione Entrambe le estremità. Tutti gli attributi della linea vengono mantenuti. Tuttavia, è necessario aggiungere un campo alla classe della feature di linea originale e calcolare l'ID della feature sulla linea per mantenere quel valore nei punti. Se hai un altro campo valore univoco sulle tue linee puoi unirti e calcolare il FID dopo aver eseguito lo strumento. L'opzione finale prevede la creazione di un'unione spaziale con l'opzione One To Many e la rimozione di copie con attributi errati.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.