ジオメトリの修正(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 acted upon to a "_bad_geom" feature class # 2) runs repairGeometry on all feature classes listed in the table import arcpy import os # Table that was produced by Check Geometry tool table = r"c:\temp\f.gdb\cg_sample1" # Create local variables fcs = [] prevFc = "" # Loop through the table and get the list of fcs for row in arcpy.SearchCursor(table): # Get the class (feature class) for that row fc = row.getValue("CLASS") if fc != prevFc: prevFc = fc fcs.append(fc) # Now loop through the fcs list, backup the bad geometries into fc + "_bad_geom" # then repair the fc print "> Processing %i feature classes" % len(fcs) for fc in fcs: print "Processing " + fc lyr = os.path.basename(fc) 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)