最新のOpenStreetMapデータをローカルSQLServer dbにインポートし、一部の管理領域に対して「外側」の形状を生成しました。オリジナル領域形状は、ここで提供されています:私が受け取った何 http://www.openstreetmap.org/relation/2658573OpenStreetMap管理領域レンダリングに関する問題
は以下の通りです:私は定義された順序で(上記の)この形状のため、「外側」方法の定義を取っているやった
OpenStreetMap dbで定義された順序ですべての方法に属するポイントからPOLYGON定義を構築しました。
SQLServer dbにデータをインポートするために、私はOsmSharp.core nugetパッケージを使用しました。 形状データの向きが、このページの情報につきとして時計回りである(ネーミングとオリエンテーションセクションを参照)): http://wiki.openstreetmap.org/wiki/Talk:Relation:multipolygon
私の質問は以下のとおりです。「やり方」/行の直接の定義を取る理由
誰もが知っていますいくつかのエリアの形状については、それがうまくいかないと説明していますか? ライン/ウェイ定義からいくつかのポイントを拒否すべきですか?他 たぶん私はちょうど逃した何か...
編集1:私はSCAIからの情報を確認するための簡単なクエリを行なったし、それは有望に見える
:
NodeNr列示しています私はポリゴン定義の開始点/終了点として取るべきです。 WayNrは、どの連続した共有がどのシェアを指しているかを示します。
編集2:
私はすでに道の定義に関連するデータをテストし、それが主な問題は、唯一の方法の定義におけるノードの順序であるに見えます。テストされたすべての方法は、それらに属しているすべてのノードを使用していました(その途中で途中で途切れてしまう可能性がある場合は、重複した点はありませんでした)。
いくつかのサンプルデータ:
NR 42との双方向の定義(WayNr = 42)は、このライン(41 NR方法の継続)の始点が位置44にあることを示しているそれ手段ウェイ42の定義におけるポイント/ノード44は、ウェイnr 41の定義における位置30上のポイントと同じgps /座標を有する。
:内側領域(除外)を加えた後、それは元の形状として、最終的になります。このような私は以下に示す形を受け正しい順序で行を「復帰」服用後
におけるようOpenStreetMapのデータと他の問題は、それが形状(時計回りの代わりに反時計回り)の外側リングを定義するために右手の法則を使用していますSQLServerの場合、GeographyインスタンスでReorientObject()メソッドを使用する必要があります。形状の向きを検出するには、たとえばGeographyオブジェクトでEnvelopeAngle()メソッドを使用します。
編集3:
私は方法はまだ更なる処理の前に並べ替えする必要があるので、forum関係メンバーの方法の順序は、(我々はそれに頼ることができない)問題ではありませんOSM上の答えを受けました。 ..
OpenStreetMapの図形へのリンクと、あなたのSQLデータベースからの投稿として投稿された内容に基づいて、それは私に似ています。あなたはどんな問題を抱えていますか? –
エリアの形状は、いくつかの場所で異なります(たとえば、その南西の部分)。ムーポリゴンは多くのポイントを持っているように見えますが、なぜ私はまだその理由がわかりません... –
フォローアップの質問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