Программное обеспечение gvSIG OA Digital Edition 2010 имеет инструменты топологии для поиска псевдоузлов в линейной геометрии. Я установил допуск кластера 0,00002 и максимальное количество ошибок -10000 для линейной геометрии подсчета ссылок 20000. Но неудачный результат.
Существуют ли решения, которые находят псевдоузлы в бесплатном программном обеспечении ГИС?
Мне нужно наложить псевдоузлы (одно из решений этой проблемы - использовать инструменты топологии ArcInfo, но для меня приоритетным является использование свободного программного обеспечения). Линейная геометрия создала нескольких пользователей в QGIS 1.8.0 в базе данных PostGIS (v. 2.0.1).
Добавьте новое изображение: 12 линейных объектов с тремя псевдоузлами в A (строка 4/5), B (строка 6/7), C (строка 9/10). Вместо этого псевдоузлы должны быть точками - два линейных объекта с пересечением в одной точке (узле) должны быть одним линейным объектом (строка 4/5 - строка 4, ...).
Можно ли сделать запрос в PostGIS, что приведет к слою псевдоузлов?
Добавить новое изображение примеров псевдоузлов: если я получаю псевдоузлы точечного слоя линейного слоя (синие прямоугольники), я исправляю следующие ошибки в линейном слое: A - добавление отсутствующей геометрии, B - отрезанная линия на пересечении, C - удаление псевдоузла.
Ответы:
Это общее решение, которое вы можете использовать с PostGIS или любым другим OGC-совместимым программным обеспечением.
Ваша задача - «найти псевдоузлы» ... Но я думаю, что это немного больше, «найти непсевдоузлы и соединить линии псевдоузлов». Мое решение может быть использовано для обоих.
Стандарты OGC предлагают:
ST_Boundary (geom) : для обнаружения узлов линий
ST_Dump (geom) : поместить каждый отдельный узел в запись таблицы SQL.
ST_DWithin, ST_Equals, ST_SnapToGrid, ST_Snap могут использоваться для допуска на изменение. Я использую ST_DWithin.
Мы можем предположить, что ваша основная проблема может быть указана с этими объектами и свойствами,
есть только отрезки (из таблицы LineSegment ), представленные геометрией LINESTRING ... Я не проверял с мультилиниями, если у вас есть geometrytype = MULTIPOINT, вы можете разделить и литое Multilines с ST_Dump и ST_LineMerge;
у каждого сегмента линии есть (идентификатор геометрии) гид и (идентификатор цвета) idline .
Итак, первый шаг - это получить узлы, которые приходят из соединяющихся линий,
ПРИМЕЧАНИЕ: использование кэшей, потому что они быстрее, чем представления. Используйте «EXPLAIN SELECT ...» для проверки процессорного времени, это может занять много времени.
Здесь циклы и непрерывные (одного цвета) линии определяются как
ncolors=1
точки, а псевдоузлы - какncolors=2
точки, поэтому у вас есть слой с этими точками.Ваша таблица «хороших узлов» с оригинальными «ограничивающими точками» и без «псевдоузлов».
источник
array_distinct
функция не процитирована из библиотеки postgres.cz . Любые другие ошибки, пожалуйста, сообщите, я могу добавить больше объяснений здесь.geom
наthe_geom
. (ST_Dump (x)) оставаться как geom, не является атрибутом базы данных.Компания Refractions Research разработала инструмент Line Cleaner, который, кажется, делает то, что вы хотите.
Исходный код можно найти на GitHub.
источник
Несвободное решение: FME + MRF + трансформатор SmartCleaner
Бесплатное решение GRASS v.clean (последний QGIS 1.8.0 с инструментами GRASS - это самый простой способ его использования) и другие инструменты для очистки топологии
источник
Вот шаги, чтобы найти ваши псевдоузлы, используя OpenJump бесплатную ГИС.
QGIS и gvSIG имеют плагин Sextante, поэтому те же самые шаги должны работать так же,
пространственное соединение может немного отличаться.
Я использовал версию 1.2 для тестирования.
- сохранить
набор инструментов Sextante для конечных точек линий, Топология, Извлечь конечные точки линий -> endpt_0
-
удалить набор инструментов для линий Sextante, Инструменты для слоев линий, Соединить соседние линии
- сохранить
набор инструментов Отключить конечные точки линий для инструментов Sextante, Топология, извлечь конечные точки line -> endpt_1
- конечные точки, удаляемые с помощью «Объединить соседние линии», являются псевдоузлами.
Инструменты, Запросы, Пространственный запрос, слой маски «endpt_1» включают или нажимают Результат дополнения.
Исходный слой «endpt_0»
Отношение «Пересекается»
источник
DIST > 0
качестве выражения. Кроме того, все геопроцессы могут быть соединены вместе в модели SEXTANTE, чтобы создать новый инструмент, например, «Найти псевдоноды» .Решение для поиска псевдоузлов (и других правил топологии) доступно в QGIS 1.9.0 master (2.0) - плагин «Проверка топологии». Ссылки: плагин Topology Checker на YouTube , плагин Topology Checker на GitHub
источник
С PostGIS вы можете использовать модифицированную версию запроса, чтобы найти зависания, обсуждаемые в этом разделе , так как псевдоузлы - это узлы, которые пересекают 2 строки строки, а подвесы - это узлы, которые пересекают 1 строку строки.
источник