ラベル | 説明 | データ タイプ |
入力フィーチャ | 処理対象のフィーチャクラスまたはレイヤー。 | Feature Layer |
NULL ジオメトリを含むフィーチャを削除 (オプション) | NULL ジオメトリを含むフィーチャを削除するか指定します。
| Boolean |
整合チェック方法 (オプション) | ジオメトリの問題の識別に使用するジオメトリ整合チェック方法を指定します。
| String |
派生した出力
ラベル | 説明 | データ タイプ |
修正された入力フィーチャ | 更新された入力フィーチャ。 | フィーチャ レイヤー |
フィーチャクラスの各フィーチャにジオメトリによる問題があるかどうかを検査します。問題が検出されると、修正が適用され、1 行分の説明によって対象のフィーチャと修正されたジオメトリの問題を特定します。
このツールは、[ジオメトリのチェック (Check Geometry)] ツール と同じロジックを使用して、ジオメトリの問題を修正します。
このツールを実行すると、入力データが変更されます。詳細と不要なデータの変更を回避するための方法については、「入力データを変更または更新するツール」をご参照ください。
有効な入力形式は、シェープファイルおよびファイル ジオデータベースまたはエンタープライズ ジオデータベースに保存されているフィーチャクラスです。エンタープライズ ジオデータベースに保存されているフィーチャクラスでは、次の空間タイプがサポートされます。
[元に戻すの有効化] 切り替えボタンは、エンタープライズ ジオデータベースからの入力に対しては無効です。
以下に、ジオメトリの問題とそれに対処するためにツールで実行される修正を示します。
以下に、エンタープライズ ジオデータベースに保存されたデータから発生する可能性のあるジオメトリの問題と、ツールによって実行される問題に対応する修正のリストを示します。
エンタープライズ データベースに保存されているデータに関連する問題は、ArcGIS ツールでは修復できない場合があります。
修正を適用し終えると、結果のジオメトリがツールによって再評価されます。別の問題が検出された場合は、その問題に対する適切な修正が実行されます。たとえば、Incorrect ring ordering の問題のあるジオメトリの修正結果によって、Null geometry の問題のあるジオメトリが発生する場合もあります。
[ジオメトリの修正 (Repair Geometry)] には、bad dataset extent を解決する修正はありません。この問題を解決するには、データセットで [フィーチャクラスの範囲を再計算 (Recalculate Feature Class Extent)] ツールを実行します。
Esri の整合チェック方法では、Esri Simplify メソッドを使用してジオメトリがトポロジ的に正しいことを確認します。Esri の整合チェックは、エンタープライズ ジオデータベースに保存されているデータに対してのみ利用可能です。
OGC (Open Geospatial Consortium) の整合チェック方法では、「OpenGIS Implementation Standard for Geographic information – simple feature access – Part 1: common architecture」で定義された OGC 仕様にジオメトリが準拠していることを確認します。
OGC オプションを使用してフィーチャのジオメトリを修正した後に続けて編集や変更を行うと、ジオメトリが OGC 仕様に準拠しなくなる可能性があります。フィーチャの変更後は、[ジオメトリのチェック (Check Geometry)] ツールを使用して、ジオメトリの問題が新たに発生していないか確認してください。必要な場合は、[ジオメトリの修正 (Repair Geometry)] ツールを再実行します。
OGC simplify では、ベジェ曲線、円弧、楕円円弧などの非線形線分がサポートされていません。これらのタイプの線分は、[ジオメトリの修正 (Repair Geometry)] の実行前に入力データセットの [頂点の挿入 (Densify)] ツールを使用して高密度化する必要があります。[頂点の挿入 (Densify)] ツールの実行時に非線形線分が不可逆的に変更されるのを防ぐために、先にデータのコピーを作成しておきます。その後、コピーに対して [ジオメトリの修正 (Repair Geometry)] を使用します。データに非線形線分が含まれているかどうかを判別するには、[ジオメトリ属性の追加 (Add Geometry Attributes)] ツールを使用します。
ラベル | 説明 | データ タイプ |
入力フィーチャ | 処理対象のフィーチャクラスまたはレイヤー。 | Feature Layer |
NULL ジオメトリを含むフィーチャを削除 (オプション) | NULL ジオメトリを含むフィーチャを削除するか指定します。
| Boolean |
整合チェック方法 (オプション) | ジオメトリの問題の識別に使用するジオメトリ整合チェック方法を指定します。
| String |
ラベル | 説明 | データ タイプ |
修正された入力フィーチャ | 更新された入力フィーチャ。 | フィーチャ レイヤー |
arcpy.management.RepairGeometry(in_features, {delete_null}, {validation_method})
名前 | 説明 | データ タイプ |
in_features | 処理対象のフィーチャクラスまたはレイヤー。 | Feature Layer |
delete_null (オプション) | NULL ジオメトリを含むフィーチャを削除するか指定します。
注意:KEEP_NULL のみが、エンタープライズ ジオデータベースからの入力に対して有効です。 | Boolean |
validation_method (オプション) | ジオメトリの問題の識別に使用するジオメトリ整合チェック方法を指定します。
| String |
名前 | 説明 | データ タイプ |
out_feature_class | 更新された入力フィーチャ。 | フィーチャ レイヤー |
次の 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
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)