Як заповнити непрямий графік з PostGIS?


9

Це питання більше стосується ресурсів, які я, можливо, ще не визначив, хоча певний час шукав в Інтернеті.

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

Для шару презентації я подумав про використання сценарію Python за допомогою MapServer, але тепер я більше роздумую над тим, як побудувати графік з (формати, конвестовані в a) postGIS db, згенеровані з OpenEV, щоб легко було додавати та видаляти краї чи ваги або інформація про точки після цього.

Для Python є модуль , який називається NetworkX , що має справу з графіками, і хоча це питання було внесене в stackexchange тут , граф Я намагаюся збудувати не Орграф але ненаправленої один.

Оновлення: 5 днів тому у проект мережевих мереж було додано утиліту Бена Рейлі. Utilitynetwork будує спрямований графік з функцій формфайлу.
Питання залишаються відкритими для аналогічного підходу до ознайомлення з базами даних postGIS.


Ви не хочете використовувати pgRouting?
underdark

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

Відповіді:


5

NetworkX має метод перетворення спрямованих графіків у непрямі .

Крім того, код для читання форм-файлів (або каталогу форм-файлів) насправді не потребує виведення спрямованого графіка, це саме те, що мені було потрібно в той час. Я не пробував, але замінив єдиний рядок:

net = nx.DiGraph()

... може просто зробити трюк.

NetworkX виглядає так, що він підтримуватиме читання форм-файлів з поля (з OGR) в 1.4 ( функція ).


Вибачте за непорозуміння. Те, що я насправді намагаюся зробити, це перетворити форми файлів у postGIS-бази даних за допомогою shp2pgsql, а потім із бази даних postGIS імпортувати їх у графік networkX.
користувач39901230

дякую Бен. Щойно помітили, що 5 днів тому вони закрили квиток, і ваш код був доданий до проекту networkX. Було б цікаво побачити, чи можна було б зробити те ж саме з функціями з бази даних postGIS, але я погляну на це на свято Різдва.
користувач39901230

Оскільки networkx включив модуль, але ще не випущений v1.4, можна було б надати кілька зразків використання утиліти. Поки я проглянув тест-роботу та ваші зразки, знайдені тут: gis.stackexchange.com/questions/210/alternatives-to-pgrouting/…
користувач39901230

Потрібно ще трохи попрацювати над цим, тому я не ставлю його на піпі. Я оприлюднив вікі зараз, він повинен містити найкращі робочі зразки: bitbucket.org/gallipoli/utilitynetwork/wiki/Home
bwreilly

оскільки я планую включити це до свого останнього проекту бакалаврського року, чи можу я зробити свій внесок?
користувач39901230


2

Не впевнений, наскільки ви зацікавлені у використанні інших фреймворків, або якщо ви вже вирішили це, але проект Geodjango додає реальні приємні функції ORM до моделей даних GIS для різноманітних баз даних з включеною ГІС, включаючи поштові адреси із встановленими прив'язками PostGIS. .

Посилання на Geodjango знаходиться тут: http://docs.djangoproject.com/en/dev/ref/contrib/gis/install/#overview

Зауважте, що Django є веб-рамкою для python, geodjango прийшов для редагування та відображення даних ГІС для бекенд-веб-розробок, але він також дає набагато більш інтуїтивний та потужний набір класів, ніж прямі прив'язки пітонів OGR (набагато більше "pythonic", а не безпосередньо "перетворений з синтаксису C", наприклад, ви можете створити клас django.contrib.gis.geos.linestring.LineString, а не створювати клас конструктора ogr.Geometry з постійною wkbLineString у конструкторі).

У навчальному посібнику з geodjango розміщено: http://docs.djangoproject.com/en/dev/ref/contrib/gis/tutorial/

Етапи, необхідні для налаштування читання / запису з вашої бази даних Postgres, настільки ж прості, як і за допомогою інших моделей піжан django, головний біль налаштовує вашу геопросторову базу даних. Отже, для завантаження даних у базу даних postgres дивіться посилання на якорний #layermapping у підручнику вище; це зіставлення поля між наявними даними у файлі форми на стовпці бази даних, які встановлюються для вашої моделі даних.

Як мінімум, мені знадобиться 2-3 години, щоб пройти підручник і встановити прив'язки PostGIS і подивитися, чи цей інструмент ГІС - те, що ви шукаєте.

Зауважте також, що коли у вас є база даних зі ввімкненою ГІС (наприклад, прив'язки PostGIS для pgsql), ви можете робити "містить" "всередині" безпосередньо на геометрії бази даних (лінії / полігони), використовуючи функції, що зберігаються в базі даних (наприклад ST_Contains(...): див. Зразок SQL для PostGIS / PgSQL тут: http://postgis.refractions.net/docs/ch04.html#id2639062 ... і краща частина про GeoDjango, є те , що вона оптимізована , щоб зробити цю просторову Lookups для вас! .

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