地図上で「ターミナル」都市を見つける


13

終わりの村/都市を見つけたい。つまり、この村はX kmの距離で最大1つの村にリンクされている必要があります。

私はこのアルゴリズムがどのように呼ばれているのか疑問に思っています(誰かが以前に似たようなものを作成したと思います)。

このためのツールはありますか?この概念はどのように呼ばれますか?

例えば

 City ------------ Village 1 ------- Village 2 ------ Village 3 - - - [ Mountain]
                    \                 \                                \
                     Village 4         |                                Road
                     |                  \                            in mountains
                     Village 5----------Village6---------Village7 - - - - -  

限り山の中の道は長いXkmよりも、Village 3そしてVillage 7私が考えられるであろう、端末彼らは(それぞれV2、V6)1つの村にリンクされているため、。

そうでなければ、私たちが持っているオープンデータを使って構築したいと思います。


私が試したもの

私の国(ルーマニア)のOSMデータをダウンロードし、村や都市をデータベースにインポートします。データベースのジオロケーション機能を使用して、R kmの半径内にX個以上の村がない村を見つけることができます。

しかし、これは私の場合の解決策ではありません。私の場合、上の例のように村は山の反対側にあるかもしれませんが、良い方法はありません(またはまったくありません)。


3
概念は接続性であり、グラフ理論では「ノード」が持つ「エッジ」の数として表されます。重みしきい値を超えるエッジをフィルターで除外した後、1つのエッジを持つノードを探します。実際のソリューションは、使用しているツール、言語、またはソフトウェアに依存します。
RoperMaps

@RoperMaps私はまだツールをセットアップしていませんが、一般的に尋ねます(そして最終的に、誰かがこのようなものを以前に構築したかどうか)。これを拡張して、スコア(ノードが持っているXよりも短い方法)を与えます。スコアが大きいほど、接続性が高くなります(端末が少なくなります)。私がそれを構築するなら、おそらくNode.jsを使用していくつかのグラフを解析することになるでしょうが、他の誰かが以前にそれを行ったかどうか疑問に思うでしょう。:D
IonicăBizău

@RoperMapsこれにはOSMを使用できると思いますが、非常に難しいと思います(たとえば、ノードを接続する方法はありますが、これらのノードは都市を表すのではなく単なるポイントです)。私の場合、グラフ内のリーフまたはもう少し拡張されたものを見つけるためのアルゴリズムを書くことができますが、これにOSMデータを使用する方法がわかりません(またはOSMより簡単な方法はありますか?)
IonicăBizău

どのソフトウェアを使用していますか?あなたは実際の距離で働いていますか、それとも鳥の飛行距離で働いていますか?
radouxju

@radouxju私が最初に試作したプロトタイプは、鳥の飛行距離(座標に基づく半径)でした。これもまた出発点ですが、それは私が望むものではありません。Node.jsでスクリプトを作成し、MongoDBを使用しました。私は実際の距離を好みます。たとえば、丘の上に道路がない丘で区切られた2つの村がある場合、それらの間の距離はそれらを結ぶ最短道路になります。
IonicăBizău

回答:


2

1つ以上のフィーチャを返す場合、ラインジオメトリを選択して(道路fcから)ラインジオメトリを選択する各エンド/ターミナルポイントバッファの座標を取得する必要があるように思えます1つではなく、ループスルーします。これが理にかなっていることを願っています...


さて、それを行う方法は?
IonicăBizău

Modelbuilderを使用してPythonにエクスポートできる場合があります。ArcObjectsは別のルートですが、より複雑です。Modelbuilderを使用したことがありますか?
user17260

「タッチ」オプションを使用した空間選択により、開始できる場合があります。選択セットをタッチしないものに反転すると、元の選択セットが絞り込まれる場合があります。
user17260

Modelbuilderは使用しませんでした。OSMデータとの最初のやり取りなので、段階的な回答が必要です。:Dそれについてのチュートリアルを見つけることは私にとって非常に難しいです。
IonicăBizău

うわー、それは大きな要求です。ArcMapのArcInfoライセンスにアクセスできますか?
user17260

2

QGISと、GraphabConeforなどのランドスケープの接続性の計算を最初に目的としたソフトウェアを使用することで、これを実現できる場合があります。例えば ​​:

  • OSMデータをドラッグアンドドロップするか、OpenStreetMapプラグインを使用してQGISにインポートします。
  • データを図形として保存する(右クリック)
  • ここで説明するように、Coneforプラグインを使用してノードと接続ファイルを生成します
  • Coneforを使用して各ノードとリンクの重要度を計算します。「エンドノード」は接続にとって重要ではありません。BC(IIC)メトリックは、「特定のノードを通過するパッチのすべてのペア間の最短パスの数(...)[および]の長さ(リンクの数)を考慮するため、使用できると思います。特定のノードが関与するパッチ間のパス」こちらを参照)

私はこれをテストすることができませんでした-残念ながら今は十分な時間がありません。しかし、少し微調整してもらえればうまくいくと思います。たとえば、障害物(山など)の両側にある2つのノードを接続するリンクを、手動で(多すぎない場合)、またはジオプロセシング機能と障害物を含む形状を使用して削除する必要があります。 。


これをありがとう!すぐに試してみます。[および]長さ(リンクの数) —キロメートル単位の距離を与えますか(もしそうでなければ、どうやってそれを取得できますか?)。
IonicăBizău

ポイント間の距離を取得するために、QGIS以外のソフトウェアを使用する必要はありません。例についてはこちらこちらをご覧ください。使用される距離単位は、レイヤー座標系によって異なります。
メフィメフィ

また、ランドスケープの接続性に焦点を当てたツールに関する詳細情報が必要な場合は、このResearchgateのディスカッションをご覧ください。
Mefimefi

QGISには少しバグがあります(少なくとも私のMacbookでは)が、最後のリンクは便利です。回答も確認します。ありがとう!
IonicăBizău

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