ジオメトリの修正(Repair Geometry) (データの管理)
サマリ
フィーチャクラスの各フィーチャにジオメトリの問題があるかどうかを検査します。ジオメトリの問題が検出されると、適切な修正が適用され、対象のフィーチャと発生した問題を識別する 1 行分の説明が出力されます。
有効な入力としては、シェープファイル、パーソナル ジオデータベース フィーチャクラス、ファイル ジオデータベース フィーチャクラスなどがあります。
使用法
-
このツールは、[ジオメトリのチェック(Check Geometry)] ツールと同じロジックを使用して、ジオメトリに問題があるかどうかを評価します。
-
以下に、ジオメトリの問題とそれに対処するためにツールで実行される修正を列挙します。
- Null geometry: フィーチャクラスからレコードを削除してください。レコードに NULL ジオメトリが保持されるように、ツール ダイアログ オプション [NULL ジオメトリを含むフィーチャを削除] をオフにするか、スクリプトで delete_null パラメータを KEEP_NULL に設定してください。
- Short segment: ジオメトリの短い線分を削除してください。
- Incorrect ring ordering: 線分の順序が正しくなるように、ジオメトリを更新してください。
- Incorrect segment orientation: 線分の方向が正しくなるように、ジオメトリを更新してください。
- Self intersections: ポリゴンの重複を解消してください。
- Unclosed rings: リングの端点を接続して、閉じていないリングを閉じてください。
- Empty parts: 無効または空のパートを削除してください。
- Duplicate vertex: 頂点をどれか 1 つ削除してください。
- Mismatched attributes: Z 座標または M 座標を一致するように更新してください。
- Discontinuous parts: 既存の不連続パートから複数のパートを作成してください。
- Empty Z values: Z 値を 0 に設定してください。
-
ジオデータベースではフィーチャをデータベースにアップロードする際に、フィーチャ ジオメトリが自動的に検査、修復されます。したがって、SDE フィーチャクラスに対して [ジオメトリのチェック(Check Geometry)] ツールと [ジオメトリの修正(Repair Geometry)] ツールを使用する必要はありません。
-
上記のいずれかの修復を適用し終えると、修復結果のジオメトリがツールによって再評価されます。別途に問題が検出された場合は、適切な修正が施されます。
10.0 リリース以降では、ライン ジオメトリが自己交差していても「自己交差」の問題があると見なされなくなりました。この種類のジオメトリへの悪影響はないため、[ジオメトリのチェック(Check Geometry)] ツールではこのようなフィーチャは問題として報告されなくなり、[ジオメトリの修正(Repair Geometry)] ツールではフィーチャのジオメトリの「修正」が行われなくなりました。10.0 よりも前のリリースでは、[ジオメトリの修正(Repair Geometry)] によって、「自己交差している」ラインの交点に頂点が追加されます。ライン フィーチャが自己交差している場合に頂点が追加されるようにするには [インテグレート(Integrate)] ツールを使用してください。
このツールを使用すると入力データが変更されます。詳しい説明および不適切なデータ変更を防ぐための方法については、「出力を伴わないツール」をご参照ください。
構文
パラメータ | 説明 | データ タイプ |
in_features |
修正対象のフィーチャクラスまたはレイヤ。入力として有効なフィーチャとしては、シェープファイル、パーソナル ジオデータベース フィーチャクラス、ファイル ジオデータベース フィーチャクラスなどがあります。 | Feature Layer |
delete_null (オプション) |
NULL ジオメトリに対して実行するアクションの内容を指定します。
| Boolean |
コードのサンプル
次の Python ウィンドウ スクリプトは、イミディエイト モードで RepairGeometry(ジオメトリの修正)関数を使用する方法を示しています。
import arcpy
arcpy.RepairGeometry_management ("c:/data/sketchy.shp")
次のスタンドアロン スクリプトは、RepairGeometry(ジオメトリの修正)関数をスクリプティングに適用する例を示しています。
# Description:
# Goes through the table generated by the Check Geometry tool and does
# the following
# 1) backs-up all features which will be 'fixed' to a "_bad_geom" feature class
# 2) runs repairGeometry on all feature classes listed in the table
# Author: ESRI
import arcpy
import os
# Table that was produced by Check Geometry tool
table = r"c:\temp\data.gdb\cg_sample1"
# Create local variables
fcs = []
# Loop through the table and get the list of fcs
for row in arcpy.da.SearchCursor(table, ("CLASS")):
# Get the class (feature class) from the cursor
if not row[0] in fcs:
fcs.append(row[0])
# Now loop through the fcs list, backup the bad geometries into fc + "_bad_geom"
# then repair the fc
print "> Processing {0} feature classes".format(len(fcs))
for fc in fcs:
print "Processing " + fc
lyr = 'temporary_layer'
if arcpy.Exists(lyr):
arcpy.Delete_management(lyr)
tv = "cg_table_view"
if arcpy.Exists(tv):
arcpy.Delete_management(tv)
arcpy.MakeTableView_management(table, tv, ("\"CLASS\" = '%s'" % fc))
arcpy.MakeFeatureLayer_management(fc, lyr)
arcpy.AddJoin_management(lyr, arcpy.Describe(lyr).OIDFieldName, tv, "FEATURE_ID")
arcpy.CopyFeatures_management(lyr, fc + "_bad_geom")
arcpy.RemoveJoin_management(lyr, os.path.basename(table))
arcpy.RepairGeometry_management(lyr)