OnlineMapMaker logo

ポリゴン交差ツール:GeoJSON・Shapefile対応

2つのポリゴンレイヤーを描画またはアップロードし、重なり合う部分だけを抽出します。 全画面で開く ↗

Rate this tool:
Advertisement
Loading map…
GISプロジェクトでお困りですか?サービスを見る

GISにおけるポリゴン交差(インターセクション)とは

ポリゴン交差は、GISジオプロセシングの交差ワークフローにおける中心的なベクターオーバーレイ操作です。2つのポリゴンレイヤーから、両方の入力に共通する部分だけを含む新しいジオメトリを生成します。2つのゾーニング地区、氾濫原と地番レイヤー、あるいは2つのサービスエリア境界など、重なり合うポリゴンをオンラインで見つけたい場面ではどこでも、この操作が答えになります。このツールはすべての計算をブラウザ内でローカルに実行します。地図上で直接2つの図形を描画するか、GeoJSONファイルやZIP化されたShapefileをアップロードするだけで、データをどこにも送信しない独立したGeoJSON KMLオーバーラップツールとして機能します。

複数レイヤーの管理

サイドバーのレイヤーマネージャーは、追加したすべてのポリゴンレイヤーと、生成したすべての交差結果を1つのリストにまとめて保持します。異なるレイヤーの組み合わせで何度でも交差処理を実行でき、すべての結果を同時に地図上に残すことができ、他のレイヤーに影響を与えることなく不要なレイヤーを削除できます。1つの基準レイヤーと複数の候補レイヤーとの重なりを順番に確認する際に便利です。

ポリゴンオーバーレイを支えるGISライブラリ

本格的なGISオーバーレイツールはすべて、計算幾何学エンジンのごく少数のいずれかの上に構築されています。プロフェッショナルなワークフローで2つのポリゴンの共通areaを抽出する際、どのエンジンが実際の計算を担っているかを知っておく価値があります。

  • Turf.js / polygon-clipping: このツール自体のエンジンです。Turfの@turf/intersect関数は、Martinez–Ruedaスイープラインアルゴリズムを純粋なJavaScriptで実装したnpmパッケージpolygon-clippingを利用しています。純粋なJavaScriptであるため、サーバーとの往復なしにブラウザタブ内で完全に実行されます。
  • GEOS(Geometry Engine, Open Source): PostGISのST_Intersectionを計算し、QGISのProcessing ToolboxのネイティブなIntersectionアルゴリズムを支えるC/C++ライブラリです。QGIS側でベクターレイヤーの交差を実行したことがあれば、その裏側の幾何計算を行っていたのはGEOSです。
  • JTS(Java Topology Suite): GEOSの移植元となったオリジナルのJava実装です。JTSはGeoToolsやGeoServer WPSのIntersectionプロセスを支えており、他の多くのライブラリが検証対象とするリファレンス実装でもあります。
  • Shapely: GEOSにバインドされたPythonのジオメトリライブラリです。geopandasで空間オーバーラップ分析を行うデータサイエンティストは、一段下では、QGISやPostGISと同じGEOSルーチンを呼び出していることになります。
  • shpjs: 幾何計算ではなくファイル側を担当します。アップロードされたZIP化Shapefile(.shp/.dbf/.shx)をクライアント側だけでGeoJSONにデコードし、これによりこのツールはサーバーへのアップロードなしにShapefile交差エクスポートを入力として受け付けられます。

これら5つのツールはすべて同じブール型オーバーレイ問題を解いているため、根底にある数学的手法は一致しています。実務上の違いは計算がどこで行われるかにあります。GEOS/JTS/Shapelyはサーバーやデスクトップ版GISのインストール環境上で動作しますが、このツールのTurf.jsベースのエンジンは、地図上のポリゴン重なり検索ツールとしてお使いの端末上で直接動作します。そのため、リモートサーバーへのファイルアップロードは一切必要ありません。

レイヤーのスタイルを設定する

交差結果を含め、すべてのレイヤーは個別にスタイルを変更できます。

  • カラーピッカー: サイドバーの任意のレイヤーの色見本をクリックすると、塗りつぶしと輪郭の色を即座に変更できます。
  • 表示/非表示の切り替え: レイヤーのチェックを外すと、削除せずに地図上で非表示にできます。Layer AとLayer Bをそれぞれ単独で交差結果と比較したいときに便利です。
  • レイヤーへズーム: レイヤーの横にあるターゲットアイコンをクリックすると、地図表示をそのレイヤーの範囲に合わせます。

これらのスタイル設定はセッションの外部には一切保存されません。作業中の地図の見た目を制御するだけです。

よくある質問

データはどこかにアップロードされますか?これは安全な地図ポリゴン重なり検索ツールですか?
描画またはアップロードしたファイルがお使いの端末から外部に送信されることは一切ありません。Shapefileの読み込みから交差アルゴリズムの実行まで、すべての計算はJavaScriptを使ってブラウザ内でローカルに行われ、サーバーには何も送信されません。
2つのポリゴンの共通area(共通部分)だけを抽出し、残りを無視することはできますか?
はい — それがまさに交差結果です。共有部分だけが新しいレイヤーとして保持され、Layer AとLayer Bの重ならない部分はそれぞれ自身のレイヤーに手つかずのまま残り、結果にはマージされません。
これは本格的な空間オーバーラップ分析ツールですか、それとも見た目だけの重なり検索ツールですか?
本格的な分析ツールです。重なりを描画するだけでなく、ヘクタール、平方キロメートル、エーカー単位で正確な重なり面積を計算し、結果のジオメトリをQGIS、ArcGIS、その他のGISソフトウェアでさらに分析するためにエクスポートできます。
GISにおけるポリゴン交差とは何ですか?
ポリゴン交差は、2つのポリゴンレイヤーを取り込み、その両方に共通する部分だけを含む新しいジオメトリを返すベクターオーバーレイ操作です。地図上で物理的に重なっている領域だけを表し、それ以外は含みません。
ZIP化されたシェープファイルから直接Shapefile交差エクスポートを行えますか?
はい。Layer AやLayer Bとして(.shp、.dbf、.shxを含む).zip化Shapefileをアップロードし、交差処理を実行してから、結果をGeoJSONとしてエクスポートしてください。これはほぼすべてのデスクトップGISアプリケーションで読み込めます。
QGISでのベクターレイヤー交差処理と比べてどうですか?
QGISのネイティブなIntersectionアルゴリズムはデスクトップ上でGEOSライブラリを使用しますが、このツールはブラウザ内でJavaScriptのスイープラインエンジンを使用します。どちらも同じブール型オーバーレイの数学を実装しており、一致する結果が得られるはずですが、このツールはインストール不要で、データをブラウザタブ内にローカルに保持します。
このツールは真のトポロジー・オーバーラップ・チェックを行いますか、それとも見た目だけの重ね合わせですか?
真のトポロジー・オーバーラップ・チェックを行います。出力は正確な座標と面積を持つ実際のジオメトリであり、単に2つの図形を重ねて表示しているだけではありません。他のポリゴンレイヤーと同様にエクスポートして計測できます。
重なり合うポリゴンを無料でオンライン検索するにはどうすればよいですか?
各レイヤーについて地図上にポリゴンを描画するか、GeoJSONファイルまたはZIP化Shapefileをアップロードし、このツールでLayer AとLayer Bとして選択して、Find Intersectionをクリックします。計算はすべてブラウザ内で行われ、無料で登録も不要です。
これをGeoJSON KMLオーバーラップツールとして使えますか?
GeoJSONであれば直接使えます。KMLファイルはまずGeoJSONに変換する必要があります(このサイトのKML/KMZビューアーはKMLデータをGeoJSONとしてエクスポートできます)。変換後の結果をここにアップロードして重なりを確認できます。
重なりを計算するアルゴリズムは何で、精度は正確ですか?
このツールは(Turf.jsのpolygon-clippingエンジンを介して)Martinez–Rueda方式のブール・スイープラインアルゴリズムを使用しており、これは実運用のGISソフトウェアで使われているのと同じ系統のアルゴリズムです。凹形のポリゴン、複数の分離した重なり領域、穴のあるポリゴンも正しく処理します。
Advertisement

結果をエクスポートする

各レイヤーは個別にエクスポートできるほか、まとめてエクスポートすることもできます。

  • 単一レイヤーのエクスポート: 任意のレイヤーの横にあるダウンロードアイコンで、そのレイヤーの地物だけを単独の.geojsonファイルとしてエクスポートします。
  • すべてをエクスポート: 「Download All Layers」ボタンは、Layer A、Layer B、そしてすべての交差結果を1つのGeoJSON FeatureCollectionにまとめ、各地物にどのレイヤー由来かのタグを付けます。
  • GeoJSON形式: 出力ファイルはRFC 7946準拠の標準GeoJSONであり、QGIS、ArcGIS、Google Earth、Mapbox、その他ほぼすべてのGISツールで直接開くことができます。

出力は単純なGeoJSONであるため、後でこのツールに再度読み込むことも、デスクトップGISソフトウェアで実行するShapefile交差エクスポートのワークフローに取り込むこともスムーズに行えます。

ポリゴンレイヤーの追加方法

交差処理を実行する前に、ポリゴンをツールに取り込む方法は2通りあります。

  • 地図上に描画する: 「Draw Polygon」をクリックし、地図をクリックして頂点を配置してから、ダブルクリック、Enterキー、または「Finish」のクリックで図形を閉じます。2つ目のポリゴンを追加するには繰り返してください。
  • ファイルをアップロードする: .geojsonファイル、または(.shp/.dbf/.shxを含む).zip化されたShapefileを地図上のどこにでもドラッグ&ドロップするか、アップロードボタンを使用してください。読み込まれるのはPolygonとMultiPolygonの地物のみで、点と線はスキップされます。

ポリゴンレイヤーが2つ以上そろったら、サイドバーで一方をLayer A、もう一方をLayer Bとして選び、「Find Intersection」をクリックして共有面積を計算します。

実際のユースケース

🌿
環境保全分析
保護生息地のバッファと計画中の土地利用変更エリアを交差させ、そのバッファのどれだけが実際に影響を受けるかを定量化します。
🚨
災害対応と避難計画
洪水やハリケーンの避難区域を人口レイヤーやインフラレイヤーと交差させ、リスクエリア内にどれだけの資産が含まれるかを正確に推定します。
🏙️
都市計画とゾーニング審査
計画中の開発区画をゾーニング地区の境界と重ね合わせ、許可申請を提出する前に、その区画のどの程度が制限区域内に入るかを正確に確認します。
📡
通信キャリアのカバレッジ計画
2社のキャリアのカバレッジポリゴンを比較し、ローミング契約のための共有カバレッジエリアや、1社しか届いていない空白地帯を見つけます。
🌾
農業と灌漑管理
土壌タイプのゾーンを圃場境界と重ね合わせ、灌漑や施肥を計画する前に、その圃場内に実際に存在する土壌タイプを確認します。
🏘️
不動産と保険引受
FEMA方式の氾濫原地図を地番と重ね合わせ、保険証券を発行する前に、その区画のどの程度が洪水リスクゾーン内にあるかを判断します。

ステップバイステップ:ポリゴンの重なりを見つける

レイヤーを追加する前の、描画・アップロード・サンプルポリゴンのボタンを示すポリゴン交差ツールの空の地図
1
ステップ 1: ツールを開いて最初のレイヤーを追加する
空のツール:ポリゴンを描画する、ファイルをアップロードする、またはSample Polygonsをクリックしてすぐに試せます。
ZIP化されたShapefileから読み込んだ2つの重なり合うポリゴンレイヤーが地図上に表示され、サイドバーにレイヤー一覧が表示されている様子
2
ステップ 2: 2つ目の重なるレイヤーを追加する
2つのレイヤーを読み込んだ状態 — サイドバーに両方が表示され、Layer AとLayer Bはすでに自動選択されています。
Layer AとLayer Bのドロップダウン選択とFind Intersectionボタンを示すサイドバーのクローズアップ
3
ステップ 3: Layer AとLayer Bを選ぶ
Layer AとLayer Bを確認してから、Find Intersectionをクリックしてオーバーレイを実行します。
地図上にティール色の重なり形状として表示された計算済みのポリゴン交差と、サイドバーの合計重なり面積表示
4
ステップ 4: 重なりの結果を確認する
結果:正確な重なり領域と、その面積(ヘクタール、km²、エーカー)。
Layer A、Layer B、Intersectionレイヤーとエクスポート・ダウンロードのコントロールを一覧表示するレイヤーマネージャーパネル
5
ステップ 5: 交差レイヤーをエクスポートする
交差結果だけ、または3つのレイヤーすべてをまとめて、GeoJSONとしてエクスポートできます。
Advertisement

交差アルゴリズムの仕組み

内部的には、ポリゴン交差は2つの閉じたリングに対するブール集合演算です。出力にはポリゴンAの内側「かつ」ポリゴンBの内側にあるすべての点だけが残り、それ以外はすべて破棄されます。2つの凸形状であればこれは単純に聞こえますが、実際の行政境界、流域の輪郭、地番はほとんど常に凹形であり、しばしば穴(ホール)を含みます。そのため、本格的なトポロジー・オーバーラップ・チェックGISツールには、単純な凸ポリゴンだけでなく、任意のポリゴン形状を正しく処理できるアルゴリズムが必要です。

初期のクリッピングアルゴリズムはこれを確実に行うことができませんでした。Sutherland–Hodgman法(1974年)はクリップ側のポリゴンが凸である場合にのみ正しい結果を生成するため、実際の地図データのほとんどが対象外になります。Weiler–Atherton法(1977年)は両方のポリゴンの境界をたどり、各交点で切り替えることでこれを改善し、凹形状や複数の出力片を正しく処理できますが、共有エッジや自己接触するリングといった特定の縮退ケースでは苦戦します。Vattiのアルゴリズム(1992年)は、水平方向のスキャンラインに沿ったアクティブエッジテーブルを用いてクリッピングをさらに一般化し、Angus JohnsonのClipperなど広く使われるクリッピングライブラリの基礎となりました。

このツールが使用するスイープライン方式

  1. イベントキューを構築する: 両方のポリゴンのすべての頂点とエッジの端点をキューに集め、X座標に基づいて左から右へ並べ替えます。
  2. 垂直線でスイープする: 仮想の線がキューを左から右へ走査し、そのX位置でポリゴンAとポリゴンBのどのエッジが現在アクティブかを状態構造で追跡します。
  3. エッジの交差を検出する: AのエッジがBのエッジと交差するたびに、スイープは正確な交点を計算し、その位置で両方のエッジを分割します。これが空間オーバーラップ分析の数学的な核心部分です。
  4. 各セグメントを分類する: 巻き数規則(ワインディングルール)を使い、生成された各エッジセグメントを、もう一方のポリゴンの内側か外側かでラベル付けし、AとBの両方の内側にあるセグメントだけを残します。
  5. 出力リングを再構築する: 残されたセグメントを閉じたリングへと再接続し、複数の分離した重なり領域や穴を1回のパスで正しく処理します。

このツールのエンジンは、Martinez–Rueda方式のブール・スイープラインアルゴリズムを実装しており、入力頂点数n、交差数kに対しておおよそO((n + k) log n)で動作し、単純なクリッパーでは失敗しがちな縮退ケース(共有エッジ、接触する頂点、自己交差するリング)に対しても堅牢です。すべてのペアで完全なスイープを実行する前に、このツールは安価なバウンディングボックスの事前チェックも行うため、数十の地物にわたるGISジオプロセシング交差処理で、明らかに重なり得ないペアのテストに時間を浪費しません。

Advertisement

関連するジオプロセシングツール

Map tiles © OpenStreetMap contributors and CARTO, Esri (satellite). Intersection math powered by Turf.js. Shapefile parsing by shpjs. Map rendering by Leaflet. All drawing, file reading and intersection calculation is local — no data is uploaded to any server.

Muhammad Gulraiz Khan、GIS専門家、KONAKTIVEおよびOnlineMapMaker.comの創業者

著者について

Muhammad Gulraiz Khan

GIS専門家・コンサルタント、KONAKTIVE創業者

Muhammad Gulraiz Khanは、エネルギー分野向けに地理空間ソリューションを提供してきた10年以上のプロフェッショナル経験を持つGIS専門家です。世界銀行、国際金融公社(IFC)、USAIDのプロジェクトにも携わってきました。彼はプロフェッショナル品質の地図作成ツールを誰もが無料で利用できるようにするため、OnlineMapMaker.comを立ち上げました。

Advertisement