Найти расстояние точки вдоль полилинии с помощью ArcGIS Desktop?


23

Нам нужно найти расстояние ряда точек вдоль заданной полилинии.

У нас есть набор данных полилинии, представляющий реки в водосборном бассейне, разбитые на речные течения (например, FID с 1 по 35).

У нас также есть точечный набор лицензий на забор в пределах этого водосбора, некоторые из которых расположены вдоль рек - из таблицы атрибутов мы можем сказать, что это так, как они определены как лицензии на подземные или поверхностные воды.

Два не связаны - то есть один не был получен из другого. Поэтому не все лицензии на поверхностные воды лежат точно над речными полилиниями, несмотря на то, что на этих реках «реальность».

Мы должны быть в состоянии видеть, какие точки находятся «вверх / вниз по течению» друг от друга, и поэтому нам хотелось иметь список, по какой реке достигается точка, в которой находится точка, с последующим расстоянием вниз по течению от начала этого охвата. Затем мы можем сравнить нисходящие расстояния двух точек, чтобы увидеть, какой из них находится выше по течению, а какой ниже по течению - желаемый результат!

Чтобы решить проблему нахождения точек на / очень близко к рекам, нам сказали использовать (маленький) буфер вокруг каждой границы реки, а затем запросить буфер, чтобы найти точки внутри него.

Это нормально, но у нас остается область (буфер), а не линия, поэтому мы не можем измерить расстояние вдоль / внутри этого.

Можем ли мы использовать буфер, как описано, чтобы узнать точки на / около реки, о которой идет речь, и затем каким-то образом (?!) Запросить эти точки на расстояние вдоль реки (сегмент полилинии)?


у вас есть поле в вашем классе полилиний, содержащее FID нисходящего потока?
Кирк Куйкендалл

Вы должны сделать это в arcmap или можете использовать arcobjects?
Стив

RivEX может генерировать этот тип вывода, посмотрите на инструменты для привязки и связывания.
Хорнбидд

Ответы:


22

Это идеальная задача для возможностей линейных ссылок в ArcGIS. См. Справку по определению местоположения вдоль маршрутов и пробы оттуда. Инструменты включают в себя возможность превращать слой точек рядом с маршрутом (река достигает) в дескрипторы «точечного события», которые обозначают маршрут (досягаемость) и расстояние от начала маршрута. Это именно то, что вы хотите. Более того, эти инструменты допускают устанавливаемую пользователем «допуск»: точки не обязательно должны лежать точно на маршрутах.

Рабочий процесс:

  1. Сделайте, чтобы река достигла «измеримости». Это настраивает способность находить расстояния вдоль каждой досягаемости.

  2. Представлять точки как точечный слой.

  3. Используйте инструмент для создания «таблицы событий» для точек относительно маршрутов.

  4. Проверьте свою работу, потому что вам может понадобиться изменить направление некоторых участков реки в зависимости от того, насколько последовательно они были оцифрованы.


+1. Им также следует обратить внимание на превращение рек в геометрическую сеть, чтобы использовать инструменты, которые получат восходящие / нисходящие объекты, пути и т. Д.
география

То же самое. ArcGIS может выполнить всю
сложную

1
Следует отметить, что вам нужно, чтобы набор точечных данных и ваш набор данных маршрута были в одной и той же системе координат. Инструмент «Определить местоположение по маршрутам» не будет работать для меня должным образом, пока я не выполню перепроектирование моего линейного объекта в ту же систему координат, что и мой файл точек, а затем я создаю событие маршрута из указанного повторно спроецированного линейного объекта.
Гиски

@Matiss Спасибо за это напоминание. Несмотря на возможности репроектирования «на лету» в современных ГИС, все еще остается тот случай, когда единственный надежный способ проведения анализа - убедиться, что все входные наборы данных физически хранятся в общей (и соответствующей) системе координат.
whuber

@whuber ты всегда помогаешь.
SIslam




1

http://resources.arcgis.com/en/help/main/10.1/index.html#//004800000006000000

Этот инструмент берет в сети (у вас должен быть сетевой аналитик) и очки. После применения инструмента вы получите значение t (значение от 0 до 1) как PosAlong. Значения хранятся в таблице точек ввода. Так как 0 - начальная точка полилинии, а 1 - конечная точка, вам нужно умножить ее на длину полилинии. У вас также есть SourceOID, который является полилинейным идентификатором в той же таблице.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.