如何从PostGIS填充无向图?


9

尽管我已经搜索了一段时间,但这个问题与我可能尚未发现的资源更相关。

目前,在该项目中,我需要在代表办公室,走廊,楼梯,电梯和建筑物之间路线的图形上运行最短路径算法。

对于表示层,我曾考虑过将Python脚本与MapServer一起使用,但是现在,我更加思考如何从OpenEV生成的postGIS db(令人垂涎的shapefile)构建图形,以便轻松添加或删除边缘或权重或有关点的信息。

对于Python有一个名为networkX与图表的交易,虽然这个问题在stackexchange长大模块在这里,我试图建立图是不是有向图,但一个不定向的。

更新:5天前Ben Reilly的Utilitynetwork已添加到networkX项目中。Utilitynetwork从shapefile功能构建有向图。
对于从postGIS数据库读取要素的类似方法,仍存在问题。


您不想使用pgRouting吗?
黑暗

我将使用pgRouting,但是我尝试实现的算法是双向a-star,而不是现成的选项。
user39901230's

Answers:


5

NetworkX有一种将有向图转换成无向图的方法

此外,该代码读取shape文件(或形状文件的目录)并不真正需要输出有向图,这就是我需要的是什么的时候。我没有尝试过,但是替换了一行:

net = nx.DiGraph()

...可能就可以解决问题。

NetworkX看起来将支持在1.4(功能)中开箱即用(带有OGR)读取shapefile 。


对困惑感到抱歉。我实际上想做的是使用shp2pgsql将shapefile转换为postGIS数据库,然后从postGIS数据库中将其导入networkX图形中。
user39901230's

谢谢本。刚刚注意到5天前他们关闭了票证,并且您的代码已添加到networkX项目中。看看是否有可能使用postGIS数据库中的功能做同样的事情会很有趣,但是我将在圣诞节期间对此进行研究。
user39901230's

由于networkx包含该模块但尚未发布v1.4,因此有可能提供一些使用Utilitynetwork的示例。到目前为止,我已经通过了testnetworkload并通过你的样品脱脂这里找到:gis.stackexchange.com/questions/210/alternatives-to-pgrouting/...
user39901230

仍然需要做一些工作,这就是为什么我没有将它放在pypi上的原因。我现在已公开Wiki,其中应包含最佳工作示例:bitbucket.org/gallipoli/utilitynetwork/wiki/Home
bwreilly 2011年

由于我计划将其纳入我的本科生期末项目,因此我是否也可以做出贡献?
user39901230 2011年


2

不知道您对使用其他框架有多感兴趣,或者是否已经解决了这个问题,但是Geodjango项目为各种启用了GIS的数据库(包括已安装PostGIS绑定的postgres)向GIS数据模型中添加了非常好的ORM功能。 。

Geodjango链接在这里:http ://docs.djangoproject.com/en/dev/ref/contrib/gis/install/#overview

请注意,Django是python的Web框架,geodjango开始编辑和显示GIS数据以进行后端Web开发,但是与直接OGR python绑定相比,它提供了更加直观和强大的类集(更多的是“ pythonic”而不是pythonic)直接“从C语法转换”,例如,您可以直接创建django.contrib.gis.geos.linestring.LineString类,而不是在构造函数中使用wkbLineString常量创建ogr.Geometry类。

在位于的geodjango教程中:http : //docs.djangoproject.com/en/dev/ref/contrib/gis/tutorial/

从Postgres数据库配置读/写所需的步骤与使用其他django python模型一样简单,令人头疼的是设置地理空间数据库。因此,要将数据加载到postgres数据库中,请参见上面教程中的锚点#layermapping链接;它是形状文件中的可用数据与为数据模型设置的数据库列之间的字段映射。

至少,我将花费2-3个小时来完成本教程并设置PostGIS绑定,并查看该GIS工具是否正是您所需要的。

还要注意,当您具有启用了GIS的数据库(例如pgsql的PostGIS绑定)时,可以使用数据库存储的函数直接在数据库几何(线/多边形)数据上“包含”“内部”(例如ST_Contains(...):参见示例SQL)为PostGIS的/ pgsql的位置:http://postgis.refractions.net/docs/ch04.html#id2639062 ...约GeoDjango内置最好的部分是,它经过优化,为你做这些空间查询!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.