回答:
[編集:これは、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を継承しているため、すべての機能が利用可能です。
高速で柔軟なルートプランナーであるオープンソースのGraphHopperプロジェクトをご覧ください。ここで試してみてください。注:私は著者です
GeoToolsのグラフパッケージを使用してルーティングを行うこともできます。
また、過去数年間にいくつかの調査を行いましたが、pgRoutingにはまだ満足しており、GISルーティングのニーズに最適なソリューションであると考えています。残念ながら、私が知っていることはあまりありません(数千ユーロ/ドルを支払う必要はありません)。私たちはNavtech -Data と連携しています。Navtechは完璧なネットワークを備えていますが、安価ではありません。また、OSMをときどき試してみましたが、OSMは正常に機能しましたが、常にいくつかの問題が発生したため、実稼働には至りませんでした。
また、上記のオープンソース GraphHopperプロジェクト(数週間前)に出会い、非常に優れたパフォーマンスと可能性があると考えました。私の知る限り、彼らはプロジェクト内でOSMデータを実行しています。
多くのルーティング問題は、ダイクストラのアルゴリズムを使用して最短経路を決定します。コーディングは比較的簡単です: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を使用できます - マトリックスAPIと呼ばれる内部で作業できるマトリックスコンポーネントがあります
ありMapzenリーフレットルーティングプラグインやMapzenヴァルハラエンジン
にタップできるMapbox Distance APIも同様です
.shp
networkxに移行するためのライブラリはありますか?Pythonで自分で1つ作成することもできましたが、ホイールを再発明しないでください。