タグ付けされた質問 「networkx」


2
ogrとPythonを使用したポリゴン内の(ラインストリングの)ポイント
私は現在、シェープファイルにあるジオメトリ機能からトポロジーネットワークを構築する必要があるプロジェクトに取り組んでいます。これまでのところ、Ben Reillyのオープンソースプロジェクトを使用して、ラインストリングをnetworkxエッジに変換し、近接フィーチャ(他のラインストリングが言う)を検出して、それらを最も近いポイントに追加して、最短パスアルゴリズムを実行できるようにしました。 しかし、これは1つのシェープファイルでは問題ありません。ただし、ここで、さまざまなシェープファイルの機能を大きなnetworkxグラフに接続する必要があります。したがって、たとえば、ポイントがポリゴン内にある場合、それを接続します(接続するとは、次のシェープファイル内のポイントでnetworkxエッジ-add_edge(g.GetPoint(1)、g.GetPoint(2)を追加することを意味します)。も同様の属性(IDなど)を共有するポリゴン内にあります。異なるshp内のポリゴンは、座標ではなく同じIDのみを共有することに注意してください。ポリゴン内にあるポイントも同じ座標を共有しません。 この問題に対する私の解決策は、ポリゴンに存在するポイントを特定して保存し、同じIDを持つポリゴンに存在する次のシェープファイルでポイントを見つけて、それらの間にnetworkxエッジを追加することでした。 ポイントがポリゴン内にあるかどうかを確認するにはどうすればよいですか?よく知られているアルゴリズムがあります。それを行うRayCastingアルゴリズムです。アルゴリズムを実装するためにはポリゴンの座標が必要であり、OGRのジオメトリのドキュメントをざっと見てみた後でも、それらにアクセスする方法が今はわからないので、ここで実際に行き詰まりました。それで、私が質問している質問は、ポリゴンポイントまたは座標にアクセスする方法です。または、ポイントがポリゴン内にあるかどうかを検出する簡単な方法はありますか?osgeo.ogrライブラリでPythonを使用して、次のコードを記述しました。 if g.GetGeometryType() == 3: #polygon c = g.GetDimension() x = g.GetPointCount() y = g.GetY() z = g.GetZ() 私の問題のより良い理解のために画像を見てください。 [編集] これまでのところ、すべてのポリゴンオブジェクトをリストに保存して、線ストリングの最初と最後のポイントを比較してみました。ただし、Paoloの例は、ポイントオブジェクト参照とポリゴンオブジェクト参照の使用に関連しています。これは、ライン全体がポリゴン内ではなく、ラインストリングの最初または最後のポイント内にあるため、ラインオブジェクト参照では機能しません。 [編集3]ラインストリング の最初と最後のポイントの座標から新しいジオメトリポイントオブジェクトを作成し、それを使用してリストに保存されたポリゴンジオメトリオブジェクトと比較すると、問題なく動作するようです。 for findex in xrange(lyr.GetFeatureCount()): f = lyr.GetFeature(findex) flddata = getfieldinfo(lyr,f,fields) g = f.geometry() if g.GetGeometryType() == 2: for j in xrange(g.GetPointCount()): if j …

3
PostGISから無向グラフを作成する方法は?
この質問は、私がしばらくウェブを検索してきましたが、まだ特定していない可能性のあるリソースに関連しています。 プロジェクトで今作業しているのは、オフィスルーム、廊下、階段、エレベーター、建物間のルートを表すグラフで最短経路アルゴリズムを実行する必要があることです。 プレゼンテーションレイヤーについては、MapServerでPythonスクリプトを使用することを考えましたが、エッジを簡単に追加または削除できるように、OpenEVから生成された(シェープファイルが必要とされる)postGIS dbからグラフを構築する方法についてさらに考えていますその後のポイントに関する重みまたは情報。 Pythonには、グラフを処理するnetworkXと呼ばれるモジュールがあり、この問題はここでstackexchange で取り上げられていますが、私が作成しようとしているグラフは有向グラフではなく、無向グラフです。 更新:5日前Ben ReillyのutilitynetworkがnetworkXプロジェクトに追加されました。Utilitynetworkは、シェープファイル機能から有向グラフを構築します。 質問は、postGISデータベースからフィーチャを読み取る同様のアプローチについて未解決のままです。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.