どのように能劣化や円滑なGISデータ(ポリゴン簡略化)?
質問
いについての詳細な米郡地図から 虎線 データセット。かいサンプル、スムーズに、または破損によるトラブルデータを取得しまトレーターは、箱型の、"ワイワイガヤガヤした"形状を表現する地理的特徴--この場合にだけ郡界状態線のなかでも、一般かるでしょうか?
サンプリングが起こりうる"というレンダリング時の場合"できる限りのことを効率的に行うこと、または並列のデータセットが発生することがあり、格納されています。を使用してい PostGIS, のラインをマルチポ成 shp2pgsql
が会社の動きをタイムリーがごsquiggly線の動きをタイムリーかつ詳細にスムーズラインのほぼ同じ意味に人通訳非常に便利です。
解決
単にポイントを捨てるの問題は、あなたがすぐに元の多角形の形状を歪めることができるということです。より良いアプローチは、他の方向からそれで来ています。ポリゴンの基本的な近似値で開始し、その後、あなたの複雑な形状に向けて上向きにそれを絞り込みます。
このアプローチの優れた例は、ダグラスPueckerアルゴリズムです。あなたは、フルポリゴンから引き出された2つの頂点で始まります。最初の2つの頂点の間に引かれた端部から最も遠くに位置するものを選択することによって、第三の頂点を追加します。あなたは十分にあなたの元の多角形に似ている何かを持ってまで、ポイントの追加を続けます。
他のヒント
ダグラスPeuckerは間違いなく正しいアプローチです。私は同様の質問でこのポストに遭遇する人のためにここに追加するだろうと思ったことのPostGISとQGISでの実装にアクセスするには、いくつかの簡単な方法があります。目標は、このような何かを始めることです。
と、このようなものになってしまいます:
のPostGISダグラス-Peuckerにおいてはbostongis.org <でsimplify
、構文、ここでは詳細はとして実装されています/ A>、いくつかの変種である。
SELECT transform(simplify(transform(the_geom, 2249), 500),4326) from the_geo_table
これは悪い基礎となるデータに起因するようで、いくつかのいくつかのエラーであっても完全な国家のデータセットで非常によく働きました。また、QGISでメニュー項目Tools > Geometry Tools > Simplify Geometries
は、任意の形状の単純化されたシェープファイルをエクスポートし、現在のプロジェクトにレイヤーとして追加することを判明します。
、その<のhref = "HTTPの良い説明があります。ここmappinghacks.com/code/PolyLineReduction/」のrel = 『noreferrer』>:!http://www.mappinghacks.com/code/PolyLineReduction/ に、あまりにも必要ではないことが判明したサンプルコードと一緒に
その代わりQGISの、私はogr2ogr使用することをお勧めする
!ogr2ogr output.shp input.shp -simplify 0.0001
ここでは、単純な反復平滑化アルゴリズムです。
中間点は全く交差を有しておらず、二つの外側の点の間の直接経路のいくつかの小さなしきい値角度内であれば、任意の経路上の各3つの連続する点のために、それを削除する
満足するまで繰り返します。
きもVisvalingamのアルゴリズムを繰り返を除去し、少なくとも感じられる一部の路線です。ここでは説明のアルゴリズム
このまま使用 Simplify.js を組み合わせて使用し ダグラス-Peucker およびラジアル距離アルゴリズムまたリンクで多くのポートを他の言語に上場 githubのプロジェクト
答えるには以下のようにマウント無しが正しいいつづけたいと思っていますついでにもう一つ付け加えた。
常に機能ST_SimplifyPreserveTopologyの代わりにST_SimplifyにPostGIS.両方の基本となるアルゴリズム(ダグラス-Peucker)が、前者は避けず起のような無効な形状.例えば、ST_Simplify結果、幾何学と交差する。