Як перетворити прості функції ліній в топологічну мережу?


12

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


2
Напевно, варто відзначити, що хоча OGR і NetworkX обидва кажуть, що підтримують GML, перший посилається на Geography Markup Languageтой час, коли другий є Graph Modelling Language.
fmark

Відповіді:



2

Судячи зі списку networkx імпортних форматів графіків та форматів, підтримуваних GDAL , я сумніваюся, що таке перетворення можливе.


це хитра угода. Тож як я можу зробити аналіз мережі тоді?
dassouki

@dassouki - Почніть проект з відкритим кодом! Це в моєму списку, але зараз вниз. Я хотів би можливість співпрацювати над цим, якщо інші зацікавлені.
fmark

@fmark вже є
transpotools.com

@dassouki - Звучить захоплююче! На якому етапі знаходиться проект? На домашній сторінці написано TranspoTools Will be here shortly. Чи є код у сховищі google-коду? Все, що я міг бачити, було порожнім.
fmark

@dassouki - Просто для підтвердження, я не знаю багато про поле аналізу транспорту (мій інтерес до ГІС лежить не набагато далі, ніж обчислювати мережеву відстань на цьому етапі), але був би радий співпрацювати над ogr2networkxінструментом типу.
fmark

2

Ви конкретно не згадали, яким саме мережевим аналізом ви хочете займатися, але якщо вас цікавить маршрутизація, є кілька варіантів:

PgRouting http://pgrouting.postlbs.org/ працює з даними в PostGIS для аналізу маршрутизації. Він підтримує алгоритми найкоротшого шляху Dijkstra, Shortest Path A *, Shortest Path Shooting Star та мандрівного продавця (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, але в той же час ми не хочемо обмежуватися лише пгрутінгом. Інша проблема полягає в тому, що ми скажемо, що ми хочемо реалізувати пітонічну чи сприятливу для аркгізів утилізацію сміття чи проблеми з китайським листоношею чи мандрівником з продажами.
dassouki

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

Також дякую за те, що ви звернули увагу на NetworkX. Схоже, це дійсно класний модуль Python.
DavidF

2

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

З короткого погляду на код, схоже, що пакет утиліти, пов’язаний з scw, знову виявить цю інформацію лише у тому випадку, якщо кінцеві точки біт-біт ідентичні. Це може бути досить добре для більшості потреб, включаючи ваші! (Я можу помилитися з цього приводу, оскільки це був насправді лише короткий погляд.)

Для чогось більш надійного - наприклад, ви можете створити нові вузли в мережі, де перетинаються два краї, або ви хочете обробляти збурення, які роблять перекриваються кінцеві точки зовсім іншими - вам доведеться шукати підхід що глибше оглядає геометрію.

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


+1 ... Я не впевнений, що ти маєш на увазі під неправильною платформою? Я розумію ваше пояснення, і це насправді дивиться, що я не можу перетворити дані у вузли та ваги. Єдині 2 програми, які роблять це з файлів shp, - TransCAD та EMME2 / 3
dassouki

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.