2016-07-18 15 views
1

最新のOpenStreetMapデータをローカルSQLServer dbにインポートし、一部の管理領域に対して「外側」の形状を生成しました。オリジナル領域形状は、ここで提供されています:私が受け取った何 http://www.openstreetmap.org/relation/2658573OpenStreetMap管理領域レンダリングに関する問題

は以下の通りです:私は定義された順序で(上記の)この形状のため、「外側」方法の定義を取っているやった

enter image description here

OpenStreetMap dbで定義された順序ですべての方法に属するポイントからPOLYGON定義を構築しました。

SQLServer dbにデータをインポートするために、私はOsmSharp.core nugetパッケージを使用しました。 形状データの向きが、このページの情報につきとして時計回りである(ネーミングとオリエンテーションセクションを参照)): http://wiki.openstreetmap.org/wiki/Talk:Relation:multipolygon

私の質問は以下のとおりです。「やり方」/行の直接の定義を取る理由

誰もが知っていますいくつかのエリアの形状については、それがうまくいかないと説明していますか? ライン/ウェイ定義からいくつかのポイントを拒否すべきですか?他 たぶん私はちょうど逃した何か...

編集1:私はSCAIからの情報を確認するための簡単なクエリを行なったし、それは有望に見える

enter image description here

NodeNr列示しています私はポリゴン定義の開始点/終了点として取るべきです。 WayNrは、どの連続した共有がどのシェアを指しているかを示します。

編集2:
私はすでに道の定義に関連するデータをテストし、それが主な問題は、唯一の方法の定義におけるノードの順序であるに見えます。テストされたすべての方法は、それらに属しているすべてのノードを使用していました(その途中で途中で途切れてしまう可能性がある場合は、重複した点はありませんでした)。
いくつかのサンプルデータ:

enter image description here

NR 42との双方向の定義(WayNr = 42)は、このライン(41 NR方法の継続)の始点が位置44にあることを示しているそれ手段ウェイ42の定義におけるポイント/ノード44は、ウェイnr 41の定義における位置30上のポイントと同じgps /座標を有する。

enter image description here

内側領域(除外)を加えた後、それは元の形状として、最終的になります。このような私は以下に示す形を受け正しい順序で行を「復帰」服用後

enter image description here

におけるようOpenStreetMapのデータと他の問題は、それが形状(時計回りの代わりに反時計回り)の外側リングを定義するために右手の法則を使用していますSQLServerの場合、GeographyインスタンスでReorientObject()メソッドを使用する必要があります。形状の向きを検出するには、たとえばGeographyオブジェクトでEnvelopeAngle()メソッドを使用します。

編集3:
私は方法はまだ更なる処理の前に並べ替えする必要があるので、forum関係メンバーの方法の順序は、(我々はそれに頼ることができない)問題ではありませんOSM上の答えを受けました。 ..

+0

OpenStreetMapの図形へのリンクと、あなたのSQLデータベースからの投稿として投稿された内容に基づいて、それは私に似ています。あなたはどんな問題を抱えていますか? –

+0

エリアの形状は、いくつかの場所で異なります(たとえば、その南西の部分)。ムーポリゴンは多くのポイントを持っているように見えますが、なぜ私はまだその理由がわかりません... –

+0

フォローアップの質問https://gis.stackexchange.com/questions/202936/order-of-ways-in-openstreetmap-relation -data-relation-membersとhttps://help.openstreetmap.org/questions/51019/does-order-of-ways-on-relation-members-is-random – scai

答えて

1

stackoverflowとgis.stackexchange.comにはすでにさまざまな類似の質問があります。

リレーションは必ずしも正しい順序でウェイを含む必要はありません。したがって、あなた自身の方法を注文する必要があります。ウェイの最後のノードのIDを見て、開始ノードに同じIDを持つ方法を検索します。これをすべての方法で実行すると、結果として得られるジオメトリは上手くいくはずです。

+0

情報をお寄せいただきありがとうございます!正直言って、私はまだgisに関連するサブドメインがSOに存在することはまだ分かっていませんでした。 –

+0

あなたの前提は、現在の方法/行から最後の1点を取って、次の一方向で同じノードIDを探すべきです。それは、私がそのような一般的な方法で "リンクする"ことを意味するのでしょうか? 私はgis.SOがあなたにも言った答えを探します: –

+0

はい。連続した方法では、同じノードIDをエンド/スタートと共有します。多多角形の関係が壊れていない場合、このノードIDと一致する他の方法は1つしかありません。自動的に最初の消費された方法の開始ノードIDにつながるすべての方法を消費するまで、これを続けます。 – scai

関連する問題