オープンソースのルーティング/ネットワーク分析のためにpgRoutingの代替手段を探していますか?


35

pgRoutingツールに代わるものがあるかどうか疑問に思っていました

少し考えてみると、RまたはRPYを使用して分析を行うことが唯一の選択肢だと思います。

基本的に、PostGIS以外のデータベースに基づいてルーティングの問題を解決しようとしています。私のデータのほとんどは、実際には別の形式で保存されています。ただし、変換するのは難しくありません。私の愚かな愚かな脳へのpgRoutingの実装は難しいことがわかりました。したがって、私が簡単に調整できる非データベースソリューションは、私にとって理想的でしょう。

回答:


21

[編集:これは、pypi(easy_install nx_spatial)から入手できるnx_spatialに置き換えられました。networkx 1.4では、シェープファイルのインポートが標準になりました ]

ESRIのPython GP APIにジオメトリックネットワークツールがないことに失望しているので、シェープファイルとフィーチャクラスを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を継承しているため、すべての機能が利用可能です。



5

Flowmapがあります。これは、ネットワーク分析の問題に対処するために設計されたニッチGISパッケージです。

かなり単純なユースケースがある場合、QGISベースのQuantum Navigatorがそのトリックを行うかもしれません。

GRASSはネットワーク分析もサポートしていますが、環境内で物事を設定するのに苦労する価値はないかもしれません。


4

プログラムによるPythonソリューションを探している場合は、networkxを見てください。


.shpnetworkxに移行するためのライブラリはありますか?Pythonで自分で1つ作成することもできましたが、ホイールを再発明しないでください。
fmark

4
シェープファイルはトポロジネットワークではなく単純な機能としてデータを保存するため、1対1の正確な一致ではありません。そのため、最初にソースデータセットについていくつかのことを知っておく必要があります。主に、すべての交差点が線ストリングの終端ノードであるということです。geodjangoを使用して単純な機能をnetworkxグラフに変換する例を次に示します。code.google.com/ p
marinemap




2

また、過去数年間にいくつかの調査を行いましたが、pgRoutingにはまだ満足しており、GISルーティングのニーズに最適なソリューションであると考えています。残念ながら、私が知っていることはあまりありません(数千ユーロ/ドルを支払う必要はありません)。私たちはNavtech -Data と連携しています。Navtechは完璧なネットワークを備えていますが、安価ではありません。また、OSMをときどき試してみましたが、OSMは正常に機能しましたが、常にいくつかの問題が発生したため、実稼働には至りませんでした。

また、上記のオープンソース GraphHopperプロジェクト(数週間前)に出会い、非常に優れたパフォーマンスと可能性があると考えました。私の知る限り、彼らはプロジェクト内でOSMデータを実行しています。



1

多くのルーティング問題は、ダイクストラのアルゴリズムを使用して最短経路を決定します。コーディングは比較的簡単です: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などの線形プログラミングパッケージは調査する価値があるかもしれません。


問題は、これらのソリューションのほとんどがノードとリンクのシステムを必要とし、GISデータが通常そのように保存されないことです
-dassouki

1
ネットワークアナリストは約2,500ドルで、現在そのような購入をすることにあまり興味がありません。私はむしろpythonicソリューションが
欲しい-dassouki

2
Dijjkstraは非常に基本的なグラフィック用です。実際の問題では、通常非常に重くて遅いアルゴリズムです。また、ESRIソフトウェアはオープンソースではないため、改善が難しく、他のツールを優先してゆっくりと取り残されています。
マリアアリアスデレイナドミンゲス

@dassoukiすべてのGISデータは、基本的にノードとリンク、およびosm2pgroutingのようなツール、および他の一般的なpgRoutingスクリプト、pgRoutingで使用されている必要なノードとリンクとエッジにGIS /空間データを既存の変換された...
DPSSpatial


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.