サマリー
フィーチャクラスの各フィーチャにジオメトリの問題があるかどうかを検査します。ジオメトリの問題が検出されると、適切な修正が適用され、対象のフィーチャと発生した問題を特定する 1 行分の説明が出力されます。
有効な入力としては、シェープファイル、パーソナル ジオデータベース フィーチャクラス、ファイル ジオデータベース フィーチャクラスなどがあります。
使用法
このツールは、[ジオメトリのチェック (Check Geometry)] ツールと同じロジックを使用して、フィーチャ ジオメトリに問題があるかどうかを評価します。
以下に、ジオメトリの問題とそれに対処するためにツールで実行される修正を示します。
- Null geometry - フィーチャクラスからレコードを削除します。NULL ジオメトリを含むレコードを保持するには、[NULL ジオメトリを含むフィーチャを削除] をオフにします (Python の 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 に設定します。
- Bad envelope - フィーチャのエンべロープを修正するように更新します。
上記の修正を適用し終えると、結果のジオメトリがツールによって再評価されます。別の問題が検出された場合は、適切な修正が実行されます。たとえば、Incorrect ring ordering の問題のあるジオメトリの修正結果によって、Null geometry の問題のあるジオメトリが発生する場合もあります。
[ジオメトリの修正 (Repair Geometry)] には、bad dataset extent の問題を解決する修正はありません。この問題を解決するには、データセットで [空間インデックスの追加 (Add Spatial Index)] ツールを実行します。
SDE ジオデータベースではフィーチャをデータベースにアップロードする際に、フィーチャ ジオメトリが自動的に検査、修復されます。したがって、SDE フィーチャクラスに対して [ジオメトリのチェック (Check Geometry)] ツールと [ジオメトリの修正 (Repair Geometry)] ツールを使用する必要はありません。
構文
RepairGeometry_management (in_features, {delete_null})
パラメーター | 説明 | データ タイプ |
in_features | 修正対象のフィーチャクラスまたはレイヤー。入力として有効なフィーチャとしては、シェープファイル、パーソナル ジオデータベース フィーチャクラス、ファイル ジオデータベース フィーチャクラスなどがあります。 | Feature Layer |
delete_null (オプション) | NULL ジオメトリに対して実行するアクションの内容を指定します。
| Boolean |
コードのサンプル
RepairGeometry (ジオメトリの修正) の例 1 (Python ウィンドウ)
次の Python ウィンドウ スクリプトは、イミディエイト モードで RepairGeometry (ジオメトリの修正) 関数を使用する方法を示しています。
import arcpy
arcpy.RepairGeometry_management ("c:/data/sketchy.shp")
RepairGeometry (ジオメトリの修正) の例 2 (スタンドアロン スクリプト)
次のスタンドアロン スクリプトは、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
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)
環境
ライセンス情報
- ArcGIS Desktop Basic: はい
- ArcGIS Desktop Standard: はい
- ArcGIS Desktop Advanced: はい