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


10

Я новичок в ГИС и поражен. У меня есть сеть рек, которая состоит из небольших полос (полилиний). В другом шейп-файле у меня есть местоположения нескольких станций на реке. Мне нужно найти расстояние вдоль реки от каждой станции до конца реки.

Проблема в том, что у меня нет одной полной линии реки. И нет общего атрибута, который я мог бы использовать для объединения или объединения строк. Также некоторые станции находятся на притоках.

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

Итак, суть в том, что мне нужно создать большую сеть рек, включая притоки, и выполнить привязку лайнера. Но я не знаю, как это сделать. Любая помощь высоко ценится. Пожалуйста, объясните как можно более четко.

Пожалуйста, прокомментируйте, если вам нужна дополнительная информация.


3
Какую программную платформу вы используете?
TheSteve0

я попробовал arcmap arcinfo. Но это была огромная информация о линейных ссылках. Затем я перешел на pgRouting и QGIS. Все еще борется.
Нареш

У вас есть доступ к расширению ArcGIS Network Analyst? Я думаю, что было бы возможно построить набор сетевых данных, используя ваши реки, и тогда найти кратчайшие расстояния должно быть действительно легко.
Радек

Ответы:


2

Я бы согласился с BWill. Ваша главная проблема - определить происхождение каждой полилинии. Что представляет собой «река»? Make сделало бы предположение, что приток является автономным «маршрутом», начинающимся с 0-> длины притока. Тогда я сделал бы то же самое для главных рек, но в этом случае я бы создал объединенную полилинию из всех составляющих полилиний. Я думаю, что как только вы это сделаете, вы «почти» там. Затем: преобразуйте все ваши объединенные полилинии в измеренные полилинии (PolylineM), включая притоки. Затем у вас есть «сеть маршрутов». С этого момента вопрос определения расстояния по маршруту для каждой станции. Я предполагаю, что местоположения станций определены в XY? Также - другое предположение - они не падают точно на реку, они? В любом случае вам понадобится способ найти расстояние от станции до начала каждой реки или трибура. Теоретически, если станция находится на пересечении реки и притока, она может иметь 2 местоположения (по одному для каждого).

Чтобы найти это место, вы можете использовать инструменты ArcMap, но не пользовались ими какое-то время, так что не могу вспомнить верхнюю часть моей головы. С другой стороны, если вы импортируете свои шейп-файлы (?) В PostGIS, вы можете использовать ST_Line_Locate_Point . Эта функция:

Возвращает число с плавающей точкой от 0 до 1, представляющее местоположение ближайшей точки на LineString к данной точке, в виде доли от общей длины 2d линии.

Это означает, что вы можете найти местоположение вдоль реки, умножив то, что вы найдете, на (объединенную) длину реки. Последнее замечание: если вы используете PostGIS, вам не нужно проходить этап создания PolylineM - только для ArcGIS это требуется для линейных ссылок.

Надеюсь, что это имеет смысл!


мои станции точно на притоках или реке. Глупость в том, что нет ни одной большой реки, только маленькие отрезки линий. Я вижу большую реку, но сами данные не имеют какого-либо общего атрибута для создания полной реки. Кроме того, у меня есть координаты в градусах, поэтому, когда я создаю маршруты в arcmap, я получаю длину в градусах? Я думаю, что это не имеет смысла. Я должен преобразовать координаты из wgs84 в другую проекцию. И да, я импортировал шейп-файлы в PostGIS.
Нареш

1

Из моего вопроса того же характера,

Как создать точку вдоль линии на заданном расстоянии

появились следующие полезные ссылки.
grass.osgeo.org/gdp/html_grass63/lrs.html
wiki.faunalia.it/dokuwiki/doku.php/qgis/lrs

Я не выполняю свою задачу из-за отсутствия усилий. Я полагаю, что скука, которую вы испытаете, определяет происхождение каждой полилинии.


2
я добился определенного прогресса Я могу найти кратчайший путь, используя pGrouting, но мне нужно обновить "узлы". Прямо сейчас я создаю таблицу узлов в postgresql и использую ее для создания сети, которую я передаю в pgrouting. Но мне нужно добавить пользовательские узлы в таблицу, которые не находятся на конечных узлах. Глупым способом является разделение моих полилиний на станциях, чтобы они автоматически становились узлами. Еще работает. Обновление скоро.
Нареш
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.