Answers:
[编辑:已被pypi(easy_install nx_spatial)提供的nx_spatial取代。导入形状文件是现在的标准在networkx 1.4 ]
我对ESRI的Python GP API中缺少几何网络工具感到失望,因此我写了一些东西将Shapefile和Feature类加载到networkx方向图(DiGraphs)中。
这项工作仍在进行中,但是对于可以帮助您解决问题的事物来说,这可能是一个好的起点。
http://bitbucket.org/gallipoli/utilitynetwork/
样品:
from utilitynetwork import Network
net = Network()
#load single file, method reqs OGR
net.loadshp("/shapefiles/test.shp")
#load directory full of shapefiles
net.loadshp("/shapefiles")
#load a feature class, req ESRI gp object, should work with shps as well
import arcgisscripting
gp = arcgisscripting.create(9.3)
net.loadfc("C:\somedb.gdb\featureclass", gp)
#Accessing node/edge data is done by the key value (the geometry as a tuple).
#access node data at x=4, y=2
nodekey = (4, 2)
net.node[nodekey]
网络是从networkx.DiGraph继承的,因此所有功能都可用。
有一个Flowmap,一个专门用于处理网络分析问题的利基GIS软件包。
如果您有一个非常简单的用例,则基于QGIS的Quantum Navigator可能会解决问题。
GRASS还支持网络分析,尽管可能不值得在环境中进行设置。
您也可以使用GeoTools的图形包进行布线。
您还可以查看RouteWare中的工具。长期记录,不受数据库限制
过去几年,我们也进行了一些研究,但我们仍然对pgRouting感到满意,并认为它是满足GIS-Routing需求的最佳解决方案。不幸的是,我所知不多(无需支付数千欧元/美元)。我们与Navtech -Data合作,该公司具有完善的网络可以合作,但并不便宜。我们还不时尝试使用OSM,该方法工作正常……但始终会出现一些问题,因此从未投入生产。
我们还刚刚遇到了上述开源 GraphHopper项目(几周前),并认为它具有非常好的性能和可能性。据我所知-他们的项目中还运行着OSM数据。
许多路由问题都使用Dijkstra算法确定最短路径。编写代码相对简单:http : //en.wikipedia.org/wiki/Dijkstra%27s_algorithm
另外,Guido van Rossum撰写了一篇有关Python图形的早期文章。他的短篇文章包括一种用于原始路由数据结构和编码的方法:http : //www.python.org/doc/essays/graphs.html
那里有很多路由包。出于特定的地理目的,除了pgRouting之外,还想到了graphserver(http://bmander.github.com/graphserver/)和ESRI ArcGIS Network Analyst。社交网络分析社区在以下位置提供了图形分析软件的列表:http : //www.insna.org/software/index.html和http://www.insna.org/software/software_old.html。这些软件包中有许多是开源的,并且与地理环境相关。对于高度复杂,健壮或复杂的计算,像CPLEX和Lindo Lingo这样的线性编程包可能值得研究。
您可以使用Grasshopper API-它们具有一个可以在其中使用的矩阵组件,称为Matrix API
还有Mapzen Leaflet Routing插件或Mapzen Valhalla引擎
以及Mapbox Distance API,您可以点击
.shp
networkx 转到库?我可以用Python建立自己的系统,但我会想尽办法重新发明轮子……