イレースツールでできること
Erase(イレース、消去)はClip(クリップ)の反対です。ツールには2つのレイヤーを渡します。1つ目は入力レイヤーで、残したいデータです。たとえば地番、道路、建物などです。2つ目は消去レイヤーで、取り除きたいエリアを示すポリゴンです。たとえば浸水想定区域、保護区、湖などです。ツールは消去用ポリゴンを入力から切り抜きます。その外側はすべて残り、内側はすべて取り除かれます。
出力のジオメトリタイプは入力と同じです。浸水区域を通る道路は区域の境界で切られ、乾いた区間だけが残ります。半分が区域内にある地番は、乾いた半分だけが残ります。区域内のバス停は消えます。入力の属性テーブルはそのままコピーされるので、各地番はID、所有者、土地利用をそのまま持ち続けます。消去レイヤーは形だけを使い、その属性は追加されません。ArcGIS Pro(EraseとPairwise Erase)とQGIS(差分)も同じルールです。
「このエリアの中にあるものを全部取り除きたい」はGISで最もよくある質問の1つです。そのためにデスクトップGISと上位ライセンスが必要になるべきではないと考えて、このツールを作りました。ZIP圧縮したShapefile、GeoJSON、KML、KMZ、GPX、WKTを地図にドロップするか、自分で図形や消去用の四角形を描いてください。入力レイヤーと消去レイヤーを選び、Eraseをクリックして結果をダウンロードします。ジオメトリの計算はすべてブラウザ内で行われるので、ファイルはお使いのコンピューターから出ません。地図は軽く動くようにベースマップなしで始まります。道路地図や衛星画像はいつでもオンにできます。
Erase、Clip、Intersect、差分:どれを使えばよいか
この4つのオーバーレイツールは、どれも一方のレイヤーで他方を切るので混同しやすいものです。違いは、どの部分を残すかと、どの属性を持っていくかです。入力レイヤーA、オーバーレイレイヤーBの場合で並べて比べます。
| ツール | 残すもの | 出力の属性 |
|---|---|---|
| Erase(このツール) | Bの外側にあるAの部分 | Aの属性のみ |
| Clip | Bの内側にあるAの部分 | Aの属性のみ |
| Intersect | Bの内側にあるAの部分 | AとBの属性の両方 |
| 対称差分 | Bの外側にあるAの部分と、Aの外側にあるBの部分 | AとBの属性 |
| ポリゴン差分(このサイト) | あるポリゴンから別のポリゴンを引いたもの | 描いた、またはアップロードした2つのポリゴン用で、データレイヤー全体向けではありません |
簡単な確認方法があります。同じ入力と同じオーバーレイでClipとEraseを両方実行すると、2つの出力を合わせたものが元の入力に戻ります。Clipは内側を、Eraseは外側を残すので、失われる部分も二重に数えられる部分もありません。
対応ファイル形式
複数のファイルを一度に読み込め、形式を混ぜることもできます。各ファイルはLayersパネルで個別のレイヤーになります。1つのレイヤーにポイント、ライン、ポリゴンが混在していてもよく、それぞれ適切な方法で消去されます。
入力形式(アップロードできるもの)
| 形式 | 拡張子 | 備考 |
|---|---|---|
| GeoJSON | .geojson, .json | FeatureCollection、単一のFeature、またはジオメトリだけ。GeometryCollectionは部品ごとに分けられます。 |
| Esri Shapefile | .zip | .shp、.shx、.dbfをまとめてZIPにしてください。.prjを入れると、投影座標のデータは読み込み時にWGS84へ変換されます。.cpgファイルで文字コードを指定できます。 |
| KML | .kml | Google Earthの目印。MultiGeometryは部品ごとに分けられ、ExtendedDataは属性になります。 |
| KMZ | .kmz | ZIP圧縮されたKML。アーカイブ内の最初の.kmlファイルを読み込みます。 |
| GPX | .gpx | GPSファイル。ウェイポイントはポイントに、トラックとルートはラインになります。標高値は残ります。 |
| WKT | .wkt, .txt | Well-Known Text。ファイル全体で1つのジオメトリ、または1行に1つのジオメトリ。 |
出力形式(ダウンロードできるもの)
| 形式 | 拡張子 | 備考 |
|---|---|---|
| GeoJSON | .geojson | WGS84の標準的なWeb形式(RFC 7946)。すべての属性を保持します。ArcGIS Pro、QGIS、ほとんどのWeb地図ライブラリで開けます。 |
| KML | .kml | Google Earthで開けます。属性は各目印のExtendedDataとして書き出されます。 |
| CSV (WKT) | .csv | 1フィーチャ1行。最初の列にジオメトリがWKTで入り、属性はそれぞれ別の列になります。Excelで開け、QGISはWKT列をジオメトリとして読み込めます。 |
1ファイルあたり50 MBまでです。国全体のような非常に大きなデータには、今でもデスクトップGISのほうが向いています。このページの下の比較をご覧ください。
技術的な詳細
ツールがデータに対して何をするかを正確に説明します。ArcGIS ProのEraseやQGISの差分を知っていれば、ほとんどが見慣れた内容のはずです。
- 入力のジオメトリタイプ
- Point、MultiPoint、LineString、MultiLineString、Polygon、MultiPolygon。1つのレイヤーにすべてが混在していても構いません。
- 消去のジオメトリタイプ
- PolygonとMultiPolygon。穴があってもなくても構いません。ポリゴンを含まないレイヤーは消去レイヤーに選べません。
- 複数の消去ポリゴン
- 消去レイヤーのポリゴンは、消去の前にすべて1つのマスクに統合(ディゾルブ)されます。消去ポリゴンが重なる部分も、取り除かれるのは1回だけです。
- 消去レイヤーの穴
- 消去ポリゴンの穴は消去エリアに含まれません。穴の中のフィーチャは残ります。たとえば、消去した湖の中にある島は残ります。
- 属性
- 入力フィーチャの属性はすべてそのままコピーされます。消去レイヤーの属性は追加されません。オプションで、残った部分について
erase_status(outside または erased)とerase_area_m2、erase_length_m、erase_pointsを追加できます。 - 座標系
- WGS84の経度・緯度(EPSG:4326)で、GeoJSONと同じです。.prjファイル付きのZIP圧縮Shapefileは、読み込み時にWGS84へ変換されます。
- ジオメトリのモデル
- 切断は度単位の平面上で行います。Turf.jsや多くのWeb GISライブラリと同じモデルです。結果パネルの面積と長さは球面上(測地線)で、平方メートルとメートルで測ります。
- 境界のルール
- 消去ポリゴンの境界線は消去エリアに含まれます。境界線のちょうど上にあるポイントは消去され、境界線に沿って走るラインの区間も消去されます。これにより、Eraseはこのサイトのクリップツール(これらを残します)のちょうど反対になります。
- 標高(Z)
- 既存のZ値は各頂点に残ります。ラインが切られた所にできる新しい頂点には、両隣の頂点から補間したZ値が付きます。
- マルチパートの出力
- 消去によって1つのフィーチャが複数に分かれた場合、ArcGIS Proと同じく、それらは1つのマルチパートフィーチャ(MultiLineString、MultiPolygon、MultiPoint)としてまとまったままです。部品ごとに1フィーチャにしたい場合は「Split multipart results」にチェックを入れます。
- 無効なジオメトリ
- 入力フィーチャのジオメトリが壊れている場合(たとえば自己交差するポリゴン)、そのフィーチャはスキップされて数えられ、レイヤーの残りはそのまま処理されます。
- プライバシー
- すべてブラウザ内で動きます。ファイルもジオメトリもサーバーには送られません。
イレースツールの使い方(ステップごと)
組み込みのサンプルデータで全体の流れを示します。地番、道路、ポイントを含む市街地レイヤーと、そこから消去する3つの浸水区域ポリゴンです。ご自分のファイルでも同じように使えます。

地図は空の状態でベースマップなしで開くので、不要なものは読み込まれません。ツールバーには描画ツールのPoint、Line、Polygon、Erase Rectangleと、Uploadボタン、Sample Dataボタンがあります。

ファイルを地図にドラッグ&ドロップするか、Uploadをクリックします。ここではSample Dataをクリックしました。地番、道路、ポイントを含む市街地レイヤーと、互いに重なる洪水路、調整池、余水路からなる浸水区域レイヤーが追加されます。

Eraseパネルで入力レイヤー(残すデータ)と消去レイヤー(取り除くエリア)を選びます。消去の一覧にはポリゴンを含むレイヤーだけが表示されます。erase_status、面積、長さの追加フィールドが必要か、マルチパートの結果を分割するかを決めます。

結果は塗りつぶしの色で新しいレイヤーとして表示され、入力レイヤーは非表示になります。浸水区域は市街地の中の空白になりました。結果ボックスには、変化なし、一部消去、全部消去のフィーチャ数と、残った面積・長さ・ポイント数、取り除いた面積・長さ・ポイント数が表示されます。

「Show basemap」にチェックを入れると、道路地図や衛星画像の上で結果を確認できます。フィーチャをクリックすると属性が開きます。元のフィールドがすべてあり、オプションの消去フィールドも加わっています。

Exportパネルでレイヤーを選び、GeoJSON、KML、またはWKT列付きのCSVでダウンロードします。Layersパネルの各レイヤーの横にある小さな矢印は、GeoJSONのクイックダウンロードです。
GISでフィーチャを消去する方法
どのGISにもこのツールはありますが、名前が違います。ArcGISではErase、QGISでは「差分」、PostGISとGeoPandasでは関数名がdifferenceです。このツール、ArcGIS Pro、ArcMap、QGISでの使い方と、スクリプトでの書き方を紹介します。
このツールで
残したいレイヤーと、取り除きたいポリゴンを読み込みます。前者を入力レイヤー、後者を消去レイヤーに選び、Erase Layerをクリックします。四角いエリアだけを取り除きたい場合は、Erase Rectangleをクリックして地図上で対角の2点をクリックします。四角形はすぐに消去レイヤーになります。同じ入力レイヤーのポイント、ライン、ポリゴンは1回の処理でまとめて消去されます。
ArcGIS Proで
ジオプロセシングウィンドウを開いてEraseを検索すると、2つのツールが見つかります。Pairwise Erase(Analysisツールボックス > Pairwise Overlay)はすべてのライセンスレベルで使え、並列処理を使うので、たいていはこちらが速い選択です。Erase(Analysis > Overlay)は昔からあるツールで、長くAdvancedライセンスが必要でした。お使いのバージョンのツールページを確認してください。Input FeaturesとErase Featuresを設定し、出力を選んでRunをクリックします。どちらも入力の属性だけを残します。
ArcMapで
ArcMapでは、このツールはArcToolbox > Analysis Tools > Overlay > Eraseにあり、Advanced(ArcInfo)ライセンスが必要です。パラメーターはArcGIS Proと同じです。EsriはArcMapを2026年3月に終了したので、新しい作業にはArcGIS Pro、QGIS、またはこのツールをおすすめします。Erase_analysis を呼ぶ古いスクリプトは少しの変更でArcGIS Proに移せ、PairwiseErase はよい置き換え先です。
QGISで
ベクタ > 空間演算ツール > 差分 を開きます。入力レイヤー(残すデータ)とオーバーレイレイヤー(取り除くポリゴン)を選び、実行をクリックします。結果は一時レイヤーになり、GeoPackageやShapefileとして保存できます。ArcGISから来た人は名前で戸惑いがちですが、QGISの差分はArcGISのEraseと同じ処理です。
arcpy(ArcGIS用Python)で
ArcGIS Proでの関数は arcpy.analysis.PairwiseErase(in_features, erase_features, out_feature_class) と、同じパラメーターの arcpy.analysis.Erase(...) です。古いArcMapのスクリプトは arcpy.Erase_analysis を使います。4番目の省略可能なパラメーターでXY許容値を指定できます。下のコードはこれらの書き方と、PyQGIS、GeoPandas、PostGISでの同じ処理です。
同じ消去をコードで
毎週同じゾーンを取り除くなら、スクリプトで時間を節約できます。どの例も、地番レイヤーから浸水区域を取り除いています。
import arcpy
arcpy.env.workspace = r"C:\data\city.gdb"
# ArcGIS Pro: Analysis toolbox > Pairwise Overlay > Pairwise Erase
arcpy.analysis.PairwiseErase("parcels", "flood_zones", "parcels_dry")
# ArcGIS Pro: Analysis toolbox > Overlay > Erase
arcpy.analysis.Erase("parcels", "flood_zones", "parcels_dry")
# Older ArcMap syntax (same tool, old name)
arcpy.Erase_analysis("parcels", "flood_zones", "parcels_dry")# QGIS Python console: Vector > Geoprocessing Tools > Difference
processing.run("native:difference", {
"INPUT": "C:/data/parcels.shp",
"OVERLAY": "C:/data/flood_zones.shp",
"OUTPUT": "C:/data/parcels_dry.gpkg",
})# GeoPandas (works for points, lines and polygons)
import geopandas as gpd
parcels = gpd.read_file("parcels.shp")
flood = gpd.read_file("flood_zones.shp").to_crs(parcels.crs)
parcels_dry = parcels.copy()
parcels_dry.geometry = parcels.geometry.difference(flood.union_all())
parcels_dry = parcels_dry[~parcels_dry.is_empty]
-- PostGIS
SELECT p.*, ST_Difference(p.geom, f.geom) AS geom_dry
FROM parcels p
CROSS JOIN (SELECT ST_Union(geom) AS geom FROM flood_zones) f
WHERE NOT ST_IsEmpty(ST_Difference(p.geom, f.geom));私の考えでは、普通の大きさのファイルを1回消去するだけなら、このツールがファイルから結果までの最短の道です。ArcGIS Proでは、まずPairwise Eraseを使ってください。繰り返す作業なら、スクリプトを一度書いて使い回すのがよいでしょう。
ツールの仕組み(ステップごと)
Erase Layerをクリックしてからデータが通る道筋です。すべてのステップはブラウザ内で動きます。
- 入力を読み込んで整える. すべてのファイルをWGS84のGeoJSONフィーチャに変換します。GeometryCollectionは同じ属性を持つ別々のフィーチャに分けるので、エンジンは単純なジオメトリタイプだけを扱います。
- 消去レイヤーをディゾルブする. 消去レイヤーのポリゴンをすべて、ポリゴンの結合(ユニオン)で1つのジオメトリ、マスク
Mにまとめます。穴は穴のままです。重なった消去ポリゴンは1つの形になるので、2つのゾーンに覆われたエリアも1回だけ取り除かれます。 - 外接矩形ですばやく判定する. 各入力フィーチャの外接矩形を
Mの外接矩形と比べます。2つの矩形が触れていなければ、そのフィーチャは何も失わないので、詳しい計算をせずにすぐ出力へコピーします。これはClipの逆で、Clipではこうしたフィーチャは捨てられます。 - ポイントを消去する. 各ポイントを
Mに対する点の内外判定で調べます。Mのはっきり外側にあるポイントは残ります。内側または境界上のポイントは取り除かれます。MultiPointでは外側のポイントだけが残ります。 - ラインを消去する. 各線分を、近くにある
Mのすべての辺と比べます。線分が辺と交わる場所をすべて見つけ、そこで切ります。次に、小さな各区間の中点を調べます。中点がMの外側なら、その区間は残ります。接している区間は再びつないで1本のラインにします。 - ポリゴンを消去する. 各ポリゴンから、スイープライン方式のブール差分(Martinez-Rueda)で
Mを引きます。消去ポリゴンが地番の中にすっぽり入っていた所には新しい穴ができ、消去ポリゴンが地番を2つに分けた所では複数の部分になります。 - 属性をコピーしてフィールドを追加する. 各出力フィーチャは、元の入力フィーチャのすべての属性のコピーを受け取ります。指定した場合は、
erase_statusと、残った面積・長さ・ポイント数を追加します。マルチパートのオプションにチェックを入れた場合は、ここでマルチパートの結果を単一の部品に分けます。 - 集計して描画する. 変化なし、一部消去、全部消去、スキップのフィーチャを数え、残った面積・長さ・ポイント数と取り除いた量を合計し、結果を新しいレイヤーとして描きます。結果がよく見えるように入力レイヤーは非表示にします。
ラインのコードはこのサイトのクリップツールと共通で、スイッチが逆向きになっているだけです。Clipは中点がマスクの内側にある区間を残し、Eraseは中点が外側にある区間を残します。だから2つのツールの結果は、隙間も重なりもなく必ずぴったり合います。
消去の理論と数学
Eraseは、集合の差をジオメトリに当てはめたものです。集合のルールからアルゴリズム、測定まで、順に説明します。
1. 集合の差としてのErase
集合論では、消去は差です。各入力フィーチャ a は、マスク M に含まれない部分で置き換えられます。M の中に完全に入っているフィーチャは空になり、消えます。マスクはすべての消去ポリゴンの和集合です。
Erase(A, M) = { a \ M : a ∈ A かつ a \ M ≠ ∅ }
a \ M = { p ∈ a : p ∉ M }
M = M₁ ∪ M₂ ∪ … ∪ Mₖ (すべての消去ポリゴンを先に統合)先に統合しても答えは変わりません。複数のエリアを1つずつ順に取り除くのは、それらの和集合を1回取り除くのと同じだからです:a \ (M₁ ∪ M₂) = (a \ M₁) \ M₂。統合は処理を速くし、重なりを二重に処理しないためのものです。
2. EraseとClipはフィーチャを2つに分ける
ClipとEraseは、各フィーチャを重ならない2つの部分に切り分け、その2つを合わせると元のフィーチャ全体になります。ポリゴンでは面積がぴったり足し合わさり、ラインでは長さが足し合わさります。
a = (a ∩ M) ∪ (a \ M) Clipの部分 + Eraseの部分 (a ∩ M) ∩ (a \ M) = ∅ 重なりなし 面積(a) = 面積(a ∩ M) + 面積(a \ M)
これはどの結果にも使える便利な確認方法です。このツールの結果ボックスには、残った面積と消去した面積が表示されます。2つを足すと入力ポリゴンの面積になるはずです。ならない場合は、入力ポリゴンのどれかが無効でスキップされた可能性があります。
3. 点の内外判定:レイキャスティングのルール
点がマスクの内側にあるかを判定するには、点から右へ半直線を引き、マスクの境界と何回交わるかを数えます。奇数なら内側、偶数なら外側です。穴を特別に扱う必要はありません。穴の辺も他の辺と同じように数えられるので、穴の中の点は外側と判定され、残ります。
点 P = (x, y)。辺は (xi, yi) から (xj, yj) まで。 辺と交わる条件: (yi > y) ≠ (yj > y) かつ x < xi + (y − yi) · (xj − xi) / (yj − yi) P が内側 ⇔ 交わった辺の数が奇数 Erase が P を残す ⇔ P が内側でも辺の上でもない
4. 計算例
(−5, 5) から (15, 5) までの道路と、両方向に 0 から 10 までの正方形の消去ポリゴンを考えます。このポリゴンには 4 から 6 までの正方形の穴(島)があります。道路は t = 0.25、0.45、0.55、0.75 の4か所で辺と交わります。ツールは各区間の中点を調べます。
道路: p = (−5, 5) q = (15, 5) 長さ 20 区間 (t) 中点 x 判定 Erase が残すか 0.00 – 0.25 −2.5 外側 はい → (−5, 5) – (0, 5) 0.25 – 0.45 2.0 内側 いいえ 0.45 – 0.55 5.0 穴の中 はい → (4, 5) – (6, 5) 0.55 – 0.75 8.0 内側 いいえ 0.75 – 1.00 12.5 外側 はい → (10, 5) – (15, 5) Erase の結果: MultiLineString、3 区間、5 + 2 + 5 = 12 単位 Clip の結果: MultiLineString、2 区間、4 + 4 = 8 単位 12 + 8 = 20 (道路全体)
これはツール自身のテストが確認しているケースそのもので、境界上の点、穴の中の点、重なった消去ポリゴン、新しい頂点のZ値もあわせて確認しています。
5. スイープラインによるポリゴンの差
ポリゴンのブール演算は、コンピューターグラフィックスで長い歴史があります。Sutherland と Hodgman(1974)は凸型の窓で切り抜く方法を示しました。Weiler と Atherton(1977)は凹んだ形と穴を扱いました。Vatti(1992)と Greiner と Hormann(1998)は一般的なケースを実用的にしました。GISのデータにはこの一般的なケースが必要です。どんな形でも、穴があっても、部品が多くても、辺が接していても扱えなければなりません。
このツールはTurf.jsを通してpolyclip-tsを使っています。これはMartínez、Rueda、Feito(2009)のスイープラインアルゴリズムに基づいています。仮想の縦線が2つのポリゴンの上を左から右へ動き、頂点と交点でだけ止まります。止まるたびに、各辺がもう一方のポリゴンの内側か外側かを記録します。差の場合、結果に残るのは、マスクの外側にある入力の辺と、入力の内側にあるマスクの辺です。後者は向きを逆にして、新しい境界や新しい穴になります。辺が n 本、交点が k 個のとき、計算量はおよそ O((n + k) · log n) です。
6. 残ったものと取り除いたものを測る
結果パネルの面積と長さは、度ではなく地球の表面上の値です。面積はTurf.jsも使っているChamberlainとDuquette(NASA JPL、2007)の球面リング公式で、長さはハバーサイン公式で求めます。どちらも地球の平均半径 R = 6,371,008.8 m を使います。
リングの面積(λ = 経度、φ = 緯度、ラジアン): A = (R² / 2) · | Σ (λ(i+1) − λ(i−1)) · sin φi | 線分の長さ(ハバーサイン): h = sin²(Δφ / 2) + cos φ1 · cos φ2 · sin²(Δλ / 2) d = 2R · asin(√h) R = 6 371 008.8 m
球は地球のよいモデルです。面積や長さの誤差はふつう1パーセント未満で、計画や結果の確認には十分です。法的な値や測量レベルの精度が必要な場合は、その地域の投影座標系で測り直してください。
このツール、ArcGIS Pro、QGISのEraseを比較
普通のデータなら、3つとも同じジオメトリを返します。違いは費用、準備、扱えるデータ量です。並べて比べます。
| 項目 | このツール | ArcGIS Pro | QGIS |
|---|---|---|---|
| ツールの名前 | Erase | Erase と Pairwise Erase | 差分(Difference) |
| 価格 | 無料、アカウント不要 | 有料のArcGISライセンス(従来のEraseは長くAdvancedが必要でした) | 無料のオープンソース |
| インストール | 不要、ブラウザで動作 | Windows用デスクトップアプリ | Windows、macOS、Linux用デスクトップアプリ |
| 入力形式 | GeoJSON、Shapefile ZIP、KML、KMZ、GPX、WKT | ジオデータベース、シェープファイルなど多数 | GDAL/OGRが読めるものすべて |
| ポイント・ライン・ポリゴンの消去 | 可能、1つのレイヤーに混在していても可 | 可能 | 可能 |
| 出力の属性 | 入力の属性と、オプションの消去フィールド | 入力の属性 | 入力の属性 |
| 自動化 | なし、1回ずつ実行 | arcpyとModelBuilder | PyQGISとグラフィカルモデラー |
| 非常に大きなデータ | 1ファイル50 MBまで | 可能、Pairwise Eraseは複数のCPUコアを使用 | 可能 |
| データの行き先 | ブラウザ内にとどまる | お使いのコンピューターにとどまる | お使いのコンピューターにとどまる |
私のおすすめです。データがArcGISのジオデータベースにあるなら、ArcGIS ProのPairwise Eraseを使ってください。速く、すべてのライセンスレベルで使え、arcpyで作業を繰り返せます。費用をかけずに本格的なデスクトップGISを使いたいなら、QGISの差分が同じ処理をこなし、ほぼどんな形式も読めます。
このツールが一番役に立つのは、1分で結果がほしいときです。たとえば、誰かから地番のZIP圧縮Shapefileと建築禁止区域のKMLが送られてきて、残る地番がすぐに知りたい場合です。何もインストールする必要がなく、データもコンピューターから出ません。地図上で切られる様子がすべて見えるので、Eraseの動きを理解するのにも向いています。
実際の活用例10選
Eraseは「このエリアを取り除いたら何が残るか」という問いに答えます。私がよく見る作業を紹介します。
- 制約を除いた建築可能地. 開発事業者が地番レイヤーから、浸水区域、湿地、保護区、セットバックのバッファを消去します。残るのは実際に建てられる土地で、各地番のIDと所有者もそのまま付いています。
- 浸水リスクの一次調査. 計画担当者が建物や道路のレイヤーから浸水区域を消去し、浸水しない資産を求めます。同じデータにClipを使うと、リスクのある資産がわかります。2つの出力を合わせると、どの資産もちょうど1回ずつ含まれます。
- 水域を除いた土地被覆. 分析担当者が土地被覆や土壌のポリゴンから湖や川を消去し、面積の集計が陸地だけになるようにします。湖の中の島は水域レイヤーの穴なので、自動的に残ります。
- 散布禁止帯を除いた圃場. 農学の担当者が圃場の境界から、小川、井戸、住宅の周りのバッファを消去します。結果は散布や施肥ができる面積で、機械や施用計画にそのまま使えます。
- 風力・太陽光の適地探し. エネルギー計画の担当者が調査エリアから、住宅、空港、道路、保護された生息地の周りのバッファを消去します。残ったポリゴンが候補地で、その面積から可能な発電容量がわかります。
- 既存サービスエリア外のネットワーク. 水道や光ファイバーの会社が、道路網から現在のサービスエリアを消去します。残った道路は、次の顧客に届けるために新しい管やケーブルが必要な場所を示します。
- 開発区域外の生息地. 生態学者が生息地マップから開発予定区域を消去します。結果からどれだけの生息地が残るかがわかり、残った各区画は生息地の種類と状態の評価を保ったままです。
- GPSトラックの整理. ランナーや研究者が、共有する前にGPXトラックから自宅周辺などのプライベートなエリアを消去します。トラックの残りは、各ポイントの標高とともにそのまま残ります。
- 除外エリアの外でのサンプリング. 現地調査の研究者が、ランダムなサンプル地点を置く前に調査エリアから道路、建物、水域を消去します。そうすれば、どの地点も実際に調査できる場所になります。
- オーバーレイ解析の授業. 教員が同じサンプルデータでClipとEraseを並べて見せます。学生は2つの結果がパズルのピースのようにぴったり合うのを見て、集合の差を簡単に理解できます。
よくある質問
GISでの消去(Erase)について、よくある18の質問に率直に答えます。
1. GISのEraseツールは何をするのですか?
Eraseは、入力レイヤーのうち消去レイヤーのポリゴンの内側に入る部分を取り除きます。その外側はすべて残し、入力フィーチャの属性も残します。穴あけパンチのようなものだと考えてください。消去ポリゴンが穴で、入力レイヤーが紙です。
2. EraseとClipの違いは何ですか?
2つは正反対です。Clipはオーバーレイポリゴンの内側にある入力の部分を残し、Eraseは外側の部分を残します。同じデータに両方を実行すると、2つの出力を合わせたものが、隙間も重なりもなく元の入力に戻ります。
3. QGISの差分はArcGISのEraseと同じですか?
はい。QGISはこの処理を「差分」(ベクタ > 空間演算ツール > 差分)と呼び、ArcGISはEraseと呼びます。どちらも入力からオーバーレイのエリアを取り除き、入力の属性だけを残します。オーバーレイレイヤーのうち入力の外側にある部分も残す「対称差」と混同しないでください。
4. ArcGIS ProのEraseとPairwise Eraseの違いは何ですか?
普通のデータなら結果は同じです。Pairwise Eraseは複数のCPUコアで並列処理するので大きなデータではたいてい速く、すべてのライセンスレベルで使えます。従来のEraseは長くAdvancedライセンスが必要でした。お使いのバージョンのツールページを確認してください。
5. ラインやポイントも消去できますか?ポリゴンだけですか?
3つとも消去できます。消去ポリゴンの内側にあるポイントは取り除かれます。ラインは境界で切られ、外側の区間だけが残ります。ポリゴンは消去ポリゴンと重なる面積を失います。1つの入力レイヤーにポイント、ライン、ポリゴンが混在していても構いません。
6. 消去後のレイヤーにはどの属性が残りますか?
入力フィーチャの属性はすべてそのままコピーされます。消去レイヤーの属性は追加されません。オプションで、erase_status(outside または erased)と、残った面積(平方メートル)、長さ(メートル)、ポイント数を追加できます。
7. 消去エリアの中に完全に入っているフィーチャはどうなりますか?
出力から取り除かれます。結果ボックスでは「Fully erased」として数えられます。消去エリアにまったく触れていないフィーチャはそのままコピーされ、「Untouched」として数えられます。
8. 消去したらポリゴンに穴ができたのはなぜですか?
消去ポリゴンが入力ポリゴンの中にすっぽり入っている場合、それを取り除くには穴を開けるしかありません。たとえば公園から池を消去すると、公園の池があった所に穴ができます。これは正しい結果で、GISソフトはこうした穴を問題なく読み込めます。
9. フィーチャがMultiジオメトリになったのはなぜですか?
消去ポリゴンが1つのフィーチャを複数に切った場合、たとえば川を渡る道路などでは、属性が重複しないように各部分は1つのマルチパートフィーチャとしてまとまったままです。ArcGIS Proも同じです。部分ごとに1フィーチャにしたい場合は「Split multipart results into single parts」にチェックを入れてください。
10. 消去エリアの境界ちょうどにあるフィーチャはどうなりますか?
境界線は消去エリアに含まれます。境界のちょうど上にあるポイントは取り除かれ、境界に沿って走るラインの区間も取り除かれます。外側から境界に触れているだけのポリゴンは面積を失わないので、変わらずに残ります。
11. 消去レイヤーに重なったポリゴンや穴があっても大丈夫ですか?
はい。消去ポリゴンはすべて先に1つのマスクに統合されるので、2つのポリゴンに覆われたエリアも取り除かれるのは1回だけです。穴も考慮されます。消去ポリゴンの穴の中にあるもの、たとえば湖の中の島は出力に残ります。
12. どのファイル形式をアップロード、ダウンロードできますか?
アップロードできるのは、GeoJSON、ZIP圧縮したEsri Shapefile(.shp、.shx、.dbf、投影座標のデータなら.prjも)、KML、KMZ、GPX、WKTです。ダウンロードはGeoJSON、KML、WKTのジオメトリ列付きCSVです。ArcGIS ProやQGISで使うなら、属性の型を保持できるGeoJSONが最適です。
13. データはサーバーにアップロードされますか?
いいえ。ファイルの読み込み、消去、出力の書き出しはすべてブラウザ内で行われます。ファイルがコンピューターから出ることはありません。インターネットから読み込むのはオプションのベースマップのタイルだけで、それもベースマップをオンにした後だけです。
14. UTMなどの投影座標のデータも消去できますか?
ツールはWGS84の経度・緯度(EPSG:4326)で動きます。UTMや各国の座標系のZIP圧縮Shapefileは、ZIPの中に.prjファイルがあれば、読み込み時にWGS84へ変換されます。GeoJSONはGeoJSONの規格どおり、最初からWGS84であるべきです。
15. 何も消去されませんでした。何が問題ですか?
最も多い原因は、2つのレイヤーが重なっていないことです。ベースマップをオンにして各レイヤーにズームし、どこにあるかを確認してください。.prjファイルのないShapefileは、間違った場所に表示されることがよくあります。ポリゴンのレイヤーを入力ではなく消去レイヤーに選んでいるかも確認してください。
16. QGISではどうやって消去しますか?
ベクタ > 空間演算ツール > 差分 を開き、入力レイヤーとオーバーレイレイヤーを選んで実行をクリックします。Pythonコンソールでは、INPUT、OVERLAY、OUTPUTのパラメーターを指定した processing.run("native:difference", ...) が同じ処理です。
17. Pythonスクリプトでarcpyを使って消去するには?
ArcGIS Proでは arcpy.analysis.PairwiseErase("parcels", "flood_zones", "parcels_dry")、または同じパラメーターで arcpy.analysis.Erase(...) を呼びます。古いArcMapでの書き方は arcpy.Erase_analysis(...) です。複数のレイヤーやゾーンをforループで回す場面で、arcpyは最も時間を節約できます。
18. 面積と長さの値は正確ですか?
半径6,371,008.8 mの球面上で測るので、度ではなく実際の平方メートルとメートルです。本当の楕円体との誤差はふつう1パーセント未満です。法的な値や測量レベルの精度が必要な場合は、その地域の投影座標系で測り直してください。
使用ライブラリとクレジット
このツールはオープンソースソフトウェアの上に作られています。これらのプロジェクトを作り、保守している皆さんに感謝します。
- Leaflet 1.9 · BSD-2-Clause · Volodymyr Agafonkin and contributorsインタラクティブな地図、レイヤー、描画ツール、ポップアップを描きます。
- Turf.js 7 (@turf/difference, @turf/union, @turf/area, @turf/boolean-point-in-polygon) · MIT · Turf authorsポリゴンを消去するためのポリゴンの差分、消去レイヤーをディゾルブするための結合、測地線面積、点の内外判定。
- polyclip-ts · MIT · Luiz Felipe Machado Barboza, based on polygon-clipping by Mike FogelTurfのdifferenceとunionの裏にあるポリゴンのブール演算エンジン。任意精度の計算でMartinez-Ruedaのスイープラインアルゴリズムを使います。
- point-in-polygon-hao · MIT · Rowan Winsemiusどのポイントやラインの区間が消去エリアに入るかを決める、高速な点の内外判定。
- shpjs · MIT · Calvin MetcalfZIP圧縮したEsri Shapefile(.shp、.shx、.dbf、.prj、.cpg)をブラウザで読み込みます。
- proj4js · MIT · proj4js contributors.prjファイルを使って投影座標のShapefileをWGS84に変換します(shpjsが使用)。
- @tmcw/togeojson · BSD-2-Clause · Tom MacWrightKMLとGPXのファイルをGeoJSONに変換します。
- JSZip · MITまたはGPL-3.0 · Stuart KnightleyKMZアーカイブを開き、中のKMLファイルを読み込みます。
- @terraformer/wkt · MIT · Terraformer contributorsWKTの入力を読み込み、CSVの書き出しでWKTのジオメトリ列を書き出します。
- OpenStreetMap, Protomaps (hosted by KONAKTIVE), CARTO, Esri World Imagery · ODbLと提供元の利用規約 · OpenStreetMap contributors, Protomaps, KONAKTIVE, CARTO, Esriベースマップのタイルと画像。ベースマップをオンにしたときだけ表示されます。
ラインを切る処理(線分を境界との交点で分け、各区間を調べる処理)はこのサイトのために書いたもので、クリップツールと共通です。消去エンジンは自動テストで確認しています。穴を通るライン、境界上と穴の中のポイント、島を囲む枠になるポリゴン、重なった消去ポリゴン、Zの補間、そしてClipとEraseを合わせると入力全体に戻るというルールです。
関連するジオプロセシングツール
消去の処理はすべてブラウザ内で行われます。ファイルがサーバーにアップロードされることはありません。 地図タイル © OpenStreetMap の貢献者、Protomapsで描画(ホスティング:KONAKTIVE)、予備としてCARTO。 衛星画像:Esri。
