ジオメトリの修正(Repair Geometry) (データの管理)

サマリ

フィーチャクラスの各フィーチャにジオメトリの問題があるかどうかを検査します。ジオメトリの問題が検出されると、適切な修正が適用され、対象のフィーチャと発生した問題を識別する 1 行分の説明が出力されます。

有効な入力としては、シェープファイル、パーソナル ジオデータベース フィーチャクラス、ファイル ジオデータベース フィーチャクラスなどがあります。

ジオメトリの確認と修正に関する詳細

使用法

構文

RepairGeometry_management (in_features, {delete_null})
パラメータ説明データ タイプ
in_features

修正対象のフィーチャクラスまたはレイヤ。入力として有効なフィーチャとしては、シェープファイル、パーソナル ジオデータベース フィーチャクラス、ファイル ジオデータベース フィーチャクラスなどがあります。

Feature Layer
delete_null
(オプション)

NULL ジオメトリに対して実行するアクションの内容を指定します。

  • DELETE_NULL NULL ジオメトリが格納されているフィーチャを入力から削除します。これがデフォルトです。
  • KEEP_NULL NULL ジオメトリが格納されているフィーチャを入力から削除しません。
Boolean

コードのサンプル

Repair Geometry(ジオメトリの修正)の例(Python ウィンドウ)

次の Python ウィンドウ スクリプトは、イミディエイト モードで RepairGeometry(ジオメトリの修正)関数を使用する方法を示しています。

import arcpy
arcpy.RepairGeometry_management ("c:/data/sketchy.shp")
Repair Geometry(ジオメトリの修正)の例 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 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)

環境

関連項目

ライセンス情報

ArcView: はい
ArcEditor: はい
ArcInfo: はい

7/10/2012