こんにちは、いくつかのレストランを importet .osm ファイルに追加しようとしています。そのため、レストランを新しいポイント ジオメトリとして保存し、既存の OSM グラフと適切なポイントで接続したいと考えています。後で、すべてのレストランを読み上げて、任意の場所から最も近いレストランを見つけたいと思います。では、新しいレイヤーにレストランを追加する必要がありますか? レストランとグラフを適切な地理的ポイントで接続する簡単な方法はありますか??
回答ありがとうございます
ご挨拶
こんにちは、いくつかのレストランを importet .osm ファイルに追加しようとしています。そのため、レストランを新しいポイント ジオメトリとして保存し、既存の OSM グラフと適切なポイントで接続したいと考えています。後で、すべてのレストランを読み上げて、任意の場所から最も近いレストランを見つけたいと思います。では、新しいレイヤーにレストランを追加する必要がありますか? レストランとグラフを適切な地理的ポイントで接続する簡単な方法はありますか??
回答ありがとうございます
ご挨拶
次の 2 つのオプションがあります。
OSMの編集は複雑なので、最後にお答えします。より簡単なオプションは、新しいレイヤーを追加することです。この場合、ポイントのみを操作しているため、SimplePointLayer を使用できます。ファクトリ メソッドSpatialDatabaseService.createSimplePointLayer(String name)を使用して作成するだけです。これにより、単一のノードを緯度/経度属性および必要なその他の属性 (レストラン名など) を持つ Point オブジェクトとして保存できます。次に、近くのジオメトリの OSM レイヤー (ポイント レイヤーではない) のインデックスをクエリします。次に、新しいレイヤーの Point ノードを OSM レイヤーの Geometry ノードに独自の関係で接続し、レストランの「近さ」を維持することで、気を紛らわせることができます。次に、OSM からレストランを探すための検索は、新しい関係に沿って OSM グラフからトラバースする必要があります。
もう 1 つのオプションである OSM モデルの編集は、今日では簡単ではありません。問題は、編集したい OSM モデルの部分を見つけて、そこに変更を適用する必要があることです。これは自動的に行われるわけではなく、OSM グラフ構造の知識が必要です。たとえば、単に OSM ファイルをインポートし、OSM がインポートされたのと同じレイヤー オブジェクトを使用して、そのレイヤーにポイント ジオメトリを追加すると、ジオメトリは自由な浮動小数点として追加され、Rtree に接続されますが、Rtree には接続されません。 OSM モデルの残りの部分に。
ポイントが OSM グラフの既存のノードである場合、最適なオプションはそのノードを見つけて編集することです。すでにポイント ジオメトリである場合は、(フィーチャの) 属性または OSM ノードのタグを変更するだけです。ポイント ジオメトリではなく、単にウェイのノードである場合は、ポイント ジオメトリにアップグレードしてインデックスに追加する必要があります。この「アップグレード」は、適切な属性を持つ「geom」ノードと呼ばれる新しいノードを追加し、それを RTree に追加することで実行できます。https://github.com/neo4j/spatial/blob/f473a2e20f8f5392e211470e8fdc472bcf800e2d/src/main/java/org/neo4j/gis/spatial/osm/OSMImporter.java#L1097にある OSMImporter.java のサンプル コードを参照してください。
これは、そもそも OSM モデルでノードを見つけるという問題に戻ります。追加したい場所から開始する場合は、近くのジオメトリを簡単に検索し、それらをトラバースして編集するポイントを見つけることができます。そのような既存のポイントが見つからない場合は、追加する方法を決定する必要があります。現在、OSM グラフに新しいポイントを挿入するには、ビジュアル ツール (JOSM、iD、Potlatch など) を使用します。http: //wiki.openstreetmap.org/wiki/Editing を参照してください。)。これをコードで行うのは、より困難です。おそらく、ポイントが既存のウェイ (2 つの既存のノードを結合するエッジに十分近い) 上にあるかどうかを判断し、それをチェーンに挿入することができます。これは複雑でリスクが高いように聞こえるので、使用しないことをお勧めします。また、やや複雑な Neo4j Spatial の現在の OSM モデルに関するより深い知識も必要です。