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

12

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

dassouki
источник
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 ...)

DavidF
источник
+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, который можно адаптировать для этой задачи.

fmark
источник
Круто, мы можем обсудить это, чтобы выполнить вашу цель ogr2netx Ahmed на Elegantdesigns.ca
dassouki