Отримання початкової та кінцевої точок для кожного рядка у форматі рядка на ArcGIS Desktop чи QGIS?


15

У мене є векторний (полілінійний) форм-файл, і мені потрібно отримати початкову та кінцеву точки кожного рядка (вузли) та створити файл форм з цими точками. Потім мені потрібно додати до таблиці атрибутів полілінії початкову та кінцеву точку кожного рядка на основі ідентифікатора точок.

Як я можу це зробити простим способом у ArcGIS Desktop або QGIS?


2
У ArcGIS, якщо у вас є розширена ліцензія, ви можете використовувати інструмент керування даними -> Набір інструментів інструментів -> Функція "Вершини точок" для пунктів за допомогою параметра "обоє кінців". Усі атрибути рядка зберігаються. Однак вам доведеться додати поле до початкового класу характеристик рядка та обчислити ідентифікатор функції у рядку, щоб зберегти це значення в точках. Якщо у вас є ще одне унікальне поле значення у ваших рядках, ви можете приєднатися та обчислити FID після запуску інструменту. Остаточний варіант передбачає проведення просторового з'єднання з варіантом «One to Many» та видалення копій із поганими атрибутами.
Річард Ферхерст

Чи відповідає це на ваше запитання? "Як отримати координати початкової та кінцевої точок за допомогою Python / arcpy?" gis.stackexchange.com/q/31684/8104
Аарон

Я спробував подібний підхід, але загубився на шляху. Я спробую це переробити. Найкраще буде створити макрос, який виконує всю цю роботу, щоб кожен міг потім зробити ту саму процедуру. Ура!
користувач51651

@RichardFairhurst метод, який, ймовірно, повинен бути запропонований і як відповідь. Ось як я це зробив історично
bwp8nt

Відповіді:


8

Це однолінійний вміст для GDAL. Ця команда створює файл форми з початкових вузлів із вибраними атрибутами:

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

Використовуйте ST_EndPoint для кінцевих точок.


Дуже дякую! Це, мабуть, виконало роботу, але я шукав щось більш просте (візуальне), щоб інші люди без навичок програмування могли виконати завдання.
користувач51651

Де ви пишете цю команду?
синій_чіп

До командного рядка. У Linux використовуйте звичайну оболонку. У Windows використовуйте командне вікно, але подбайте про те, щоб ваше оточення має правильні шляхи. Оболонка Osgeo4w робить це автоматично.
користувач30184


6

Рішення QGIS: Витягнути початкові та кінцеві вузли (координати) лінійного векторного файлу можна просто за допомогою xat і yat у польовому калькуляторі з відповідними індексами 0 (старт) та -1 (кінець).

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

5

Для рішення ArcGIS я створив інструмент для геообробки, який створює точки на лініях.

Ви можете завантажити його та переглянути код тут: Створити бали на лініях

Для типу ви хочете вибрати ПОЧАТКИ / КІНЦІЙНІ ТОЧКИ. Це створить новий клас функції точок, який містить початкову та кінцеву точки для кожної полілінії.

Клас характеристики функції вихідної точки також матиме поле під назвою LineOID, яке записує OID полілінії, з якої він був створений. Таким чином ви можете приєднати свої дані атрибутів назад.

Ось знімок екрана того, як ви встановили параметри:

введіть тут опис зображення


Це чудовий Ян! Я завантажу його та протестую, і якнайшвидше ви отримаєте відгук. Я думаю, що цей інструмент стане у нагоді для того, що мені потрібно, і допоможе краще автоматизувати процес! Дякую!
користувач51651

Привіт Ian, Idk чому, але я не можу змусити ваш інструмент працювати в ArcGIS 10.0 або 10.1 ... Я додав його до панелі інструментів, але це не обід ... = /
user51651

@ user51651 Ви отримуєте повідомлення про помилку? Він не працює з 10.0, але він повинен працювати з 10.1 і вище. Якщо ви перейдете до меню геообробки, а потім Результати. Чи є якісь повідомлення там?
ianbroad

3

для додавання координати кінцевих точок у таблиці атрибутів, використовуючи ArcGIS, можна використовувати польовий калькулятор (не потрібно створювати геометрії). Клацніть на ім'я поля, калькулятор поля, а потім використовуйте синтаксис Python за допомогою окремих рядків нижче (наприклад, з координатою X):

!shape.firstPoint.X!

!shape.lastPoint.X!

зауважте, що все знаходиться в межах !!


Це дійсно гарна відповідь, я не розумів, що це можливо. Знімок цього зображення в калькуляторі поля може допомогти менш знайомим людям із завданням. Я припускаю, що ви могли це зробити і зі значеннями M?
bwp8nt

2

У QGIS використовуйте інструмент " Витягнути конкретні вершини" . Встановіть вершинні індекси на 0, щоб отримати стартові точки, і -1, щоб отримати кінцеві бали, або 0, -1, щоб отримати обидва.

QGIS Витяг конкретних вершин

Зверніть увагу на опис:

Перша вершина відповідає індексу 0, друга вершина має індекс 1 і т. Д. Негативні індекси можна використовувати для пошуку вершин в кінці геометрії, наприклад, індекс -1 відповідає останній вершині, - 2 відповідає другій останній вершині тощо.


1

У ArcGIS, якщо у вас є розширена ліцензія, ви можете використовувати інструмент керування даними -> Набір інструментів інструментів -> Функція "Вершини точок" для пунктів за допомогою параметра "обоє кінців". Усі атрибути рядка зберігаються. Однак вам доведеться додати поле до початкового класу характеристик рядка та обчислити ідентифікатор функції у рядку, щоб зберегти це значення в точках. Якщо у вас є ще одне унікальне поле значення у ваших рядках, ви можете приєднатись та обчислити FID після запуску інструменту. Остаточний варіант передбачає проведення просторового з'єднання з варіантом «One to Many» та видалення копій із поганими атрибутами.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.