オープンソースツールを使用してシェープファイルからポリゴンをディゾルブするにはどうすればよいですか?


10

現在のプロジェクトでは、国の各行政区域のいくつかの値を表すデータをマップ上に視覚化しています。この国のシェープファイルが提供されます。これをPolyMapsで使用するためにGeoJSONに変換しています。いくつかの小さなパーツのデータがないため、複数のエリアを大きなエリアにクラスター化する必要がありますが、大きなエリアの集計データを取得できます。これらのクラスターは事前定義されているため(例:A + B + C = D)、クラスター化されたシェープファイルを作成し、後でそれをGeoJSONに変換する方が簡単だと思いました。

しかし、どのようにして、できれば自動化され、オープンソースツールを使用して、このようなクラスターを作成するのでしょうか。もちろん他の賢明な方法も大歓迎です。

回答:


5

QGISなどのオープンソースツールを使用してシェープファイルを開き、組み込みの「選択した機能をマージ」ツールを使用して機能をマージできます(機能を選択して[マージ]をクリックし、属性を選択して新しいマージされた機能に継承します)。

もちろん、これが数百または数千のマージについて話している場合、あまり意味がありません。私自身、先日、QGISで「属性によって」フィーチャをマージできるかどうか疑問に思っていましたか?

編集:わかりました、私は愚かです、あなたが「クラスター」にしようとしているすべての機能に共通の属性がある場合(州や郡の名前など)、これはディゾルブツールのケースになります。シェープファイルを開き、[ディゾルブ]を選択し(QGISでは、[ベクター]> [ジオプロセシングツール]> [ディゾルブ]にあります)、上記の共通名の列を選択して、プロセスを開始します。うまくいけば(私があなたを誤解していなければ)、あなたが探していたものになるでしょう。


一般的に、良いアドバイスです。それがすべて手作業に当てはまる場合、あなたが説明したように、QGISを使用してこれらのシェープファイルを作成してくれる人を見つけます。ただし、これらのクラスターを定義して(たとえば、NUTSコードを介して:FR413とFR411を_FRX1と呼ばれるものにマージ)、それらのクラスター化されたシェープファイルを生成するスクリプトを実行できるようにしたいと考えています。GUIツールのオーバーヘッドなしに、エラーを修正したり、高速に追跡された変更に対応したりしたい。これらのクラスターがいつかエンドユーザーによって定義される可能性は十分にあるので、少し柔軟性が必要です。
Nikolai Prokoschenko 2011

私はそれを使用したことはありませんが、コンソールを使用してQGISですべてを実行できると思うので、GUIは必要ありません。スクリプト化されたソリューションに完全に依存している場合でも、常にこれらのクラスターを何らかのテーブルで定義する必要があります。したがって、このテーブルを結合してディゾルブを行うことで、シェープファイルをいじることを回避できます。これもスクリプト可能だと思いますか?
サンデルカ2011

完全に可能です。私はすべてのGISの初心者です。おかげで、QGISのスクリプトを調べます。
Nikolai Prokoschenko 2011

2

手作業が少ない場合は、SpatiaLiteをご覧ください。たとえば、シェープファイルを簡単にインポートできます。

spatialite> .loadshp ~/maps/areas areas iso-8859-15
spatialite> UPDATE areas SET Geometry = SetSrid(Geometry,4326);
spatialite> SELECT RecoverGeometryColumn('areas','Geometry',4326,'POLYGON',2);

次に、溶解部分について:

これらのクラスターを定義できるようにしたい(たとえば、NUTSコードを使用:FR413とFR411を_FRX1と呼ばれるものにマージ)

ここで必要な関数はGUnion()です。2番目の表で「クラスター」を定義することができます。次に、クラスターとエリアテーブルを結合し、GROUP BYでGUnion()を使用して、最終的なunion_tableを作成できます。

次に、.dumpshpを使用してシェープファイルにエクスポートできます

spatialite> .dumpshp union_table Geometry new_shapefile iso-8859-15 POLYGON

GeoJSONが必要な場合は、ここでファイルを変換できます。

これらすべてのロード、結合、ダンプを処理する短いスクリプトをPythonなどで作成できます。


非常に有望に見えます、私はそれを実験します!ありがとう!UPDATEand SELECT行が何をするのか説明してもらえますか?
Nikolai Prokoschenko 2011
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.