У меня есть два шейп-файла, Point и Polyline. Я пытаюсь заполнить свой слой полилинии идентификатором точечных данных (systemID), где линии начинаются там, где они заканчиваются; например. создать две колонки (от и до). На линии уже назначено направление потока. Я использую инструменты ArcHydro, но Arcpy тоже подойдет.
В ArcHydro я пытался использовать Атрибуты Инструменты> Создать От / К узлам для линий, но он создает значения для Кому и От, которые не из моих точечных данных. Другой моей альтернативой было использование Feature to Vertic и объединение результата с моей таблицей данных точек для получения systemID. Но тогда мне бы пришлось обновить слой полилинии. Я уверен, что есть более простой способ сделать это.
Примечание: не все линии имеют точки в вершинах, пустые значения подходят для них.
Ответы:
Иногда лучше не использовать готовое решение. Вот почему я предлагаю
Переходите к 2, но используйте последнюю точку для назначения идентификатора узла
источник
Я сделал то же самое несколько месяцев назад. Я использовал arcpy, но сценарий слишком длинный для публикации здесь, поэтому я дам вам общее представление о том, что я сделал.
Я использовал пространственное соединение, чтобы определить, какие точки / узлы были в пределах определенного линейного объекта.
Поскольку пространственное объединение не учитывает направление потока, я использовал arcpy, чтобы определить, какая была начальная точка, а какая конечной. Я смог сделать это с помощью функции описания arcpy, чтобы извлечь информацию о координатах для начальных / конечных вершин линейного объекта, и сравнил их со значениями координат связанных точек.
Наконец, как только я выяснил, какие из точек to / from были какие, я использовал функцию setValue, чтобы заполнить поля to / from в исходном наборе данных полилинии.
Очевидно, здесь есть кое-что еще, но я обрисовал основные моменты.
источник
Я был вдохновлен @FelixIP, но я хотел написать решение без объединений или создания дополнительных файлов, так как моя сеть довольно большая с 400K + каналами и 500K + узлами.
Построение геометрической сети приводит к совпадению X, Y узлов и концов трубы. Вы можете получить доступ к этим местам с помощью жетонов формы в дугообразных курсорах и сопоставить их. Токены формы для линий возвращают массив вершин в том порядке, в котором они были нарисованы. В моей сети порядок отрисовки труб в значительной степени контролируется, потому что мы используем его для установки направлений потока. Итак, первая вершина является началом трубы, а последняя вершина является концом трубы.
Ссылка: ASSETID = идентификатор канала, UNITID = идентификатор узла в начале канала, UNITID2 = идентификатор узла в конце канала.
источник