Как преобразовать линейные простые функции в топологическую сеть?


12

Используя Gdal / OGR, есть ли способ преобразовать линейный слой shp, kml или PostGIS в сеть узлов и сегментов, чтобы его можно было использовать в таких пакетах, как networkx?


2
Вероятно, стоит отметить, что, хотя OGR и NetworkX говорят, что поддерживают GML, первое относится к Geography Markup Languageпоследнему, а второе - к нему Graph Modelling Language.
Fmark

Ответы:



2

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


это дерьмовая сделка. Итак, как я могу провести анализ сети?
Дассуки

@dassouki - Запустите проект с открытым исходным кодом! Это в моем списке, но в данный момент. Я хотел бы иметь возможность сотрудничать в этом, если другие заинтересованы, хотя.
Fmark

У @fmark уже есть transpotools.com
dassouki

@dassouki - звучит захватывающе! На какой стадии находится проект? Домашняя страница говорит TranspoTools Will be here shortly. Есть ли какой-нибудь код в репозитории google-code? Все, что я мог видеть, было пустым.
Fmark

@dassouki - Просто чтобы подтвердить, я не очень разбираюсь в области анализа транспорта (мой интерес к ГИС лежит не намного дальше, чем вычисление расстояния до сети на данном этапе), но я был бы рад сотрудничать над ogr2networkxинструментом типа.
Fmark

2

Вы не упомянули конкретно, какой анализ сети вы хотите сделать, но если вы заинтересованы в маршрутизации, есть несколько вариантов:

PgRouting http://pgrouting.postlbs.org/ работает с данными в PostGIS для анализа маршрутов. Он поддерживает алгоритмы Shortest Path Dijkstra, Shortest Path A *, Shortest Path Shooting Star и Traveling Salesperson (TSP). Он также делает расчеты расстояния вождения. Список примеров приложений, использующих PgRouting, можно найти на http://pgrouting.postlbs.org/wiki/pgRoutingDemo PgRouting, где находится http://www.ridethecity.com/приложение Ride the City .

Проект OpenRouter http://wiki.osgeo.org/wiki/OpenRouter. Этот проект выглядит интересным, но не особо зрелым на данный момент.

(Извиняюсь за указанные URL, но у меня недостаточно средств, чтобы опубликовать> 1 URl ...)


+1 для вас. Я смотрю на отход от openstreet и postgis данных из-за ограничений данных и того факта, что мы пока отказываемся от postgis. Мы обычно предоставляем свои собственные данные, которые намного лучше, чем Openstreet, но в то же время мы не хотим ограничиваться pgrouting. Другая проблема заключается в том, что мы хотим реализовать сборку мусора с использованием pythonic или arcgis, а также проблемы с китайским почтальоном или продавцом в Traveler.
Дассуки

Вы смотрели на SpatiaLite? Это даст вам пространственную базу данных OpenSource, если она основана на файлах и не зависит от платформы. Я не использовал его, но, похоже, есть возможность маршрутизации с помощью SpatiaLite < gaia-gis.it/spatialite/spatialite-network-2.3.1.html >
DavidF

Также спасибо за то, что привлекли мое внимание к NetworkX. Это похоже на действительно классный модуль Python.
DavidF

2

Я думаю, что ответ зависит. Большинство форматов ГИС явно не включают информацию о смежности (например, в файле .shp, полном простых линейных объектов, отсутствуют индикаторы, указывающие на то, что две функции имеют общую конечную точку), что является прерывателем для их чтения непосредственно в сети.

После беглого взгляда на код, похоже, что пакет служебной сети, связанный с scw, заново обнаружит эту информацию только в том случае, если конечные точки идентичны по битам. Это может быть достаточно для большинства нужд, включая ваши! (Я могу ошибаться, так как это был лишь беглый взгляд.)

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

Я сделал нечто похожее с Boundary Generator для восстановления информации о смежности сети из полигонов: к сожалению, неправильная платформа, язык и геометрический примитив для вас. Тем не менее, это может быть проницательным в отношении того, как подходить к решению проблемы надежности.


+1 ... я не уверен, что ты имеешь в виду под неправильной платформой? Я понимаю ваше объяснение, и это действительно пугает, что я не могу преобразовать данные в узлы и веса. только две программы, которые делают это из файлов shp, - это TransCAD и EMME2 / 3
dassouki

Под «неправильной платформой» я имел в виду, что Boundary Generator был написан для среды ArcGIS, по крайней мере, на данный момент. :) Для работы с OGR потребуется некоторая адаптация. (Также необходим значительный новый код для обнаружения совпадающих конечных точек из линий, в отличие от совпадающих ребер из многоугольников. Я мог бы добавить это к следующей версии, если / когда у меня будет время. Кажется, это может быть очень полезно .)
Дан С.

0

В MarineMap есть некоторый код geodjango, который можно адаптировать для этой задачи.


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