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

サマリー

フィーチャにジオメトリの問題がないか検査して修正します。 問題が検出されると、修正が行われ、1 行分の説明によって対象のフィーチャと修正されたジオメトリの問題を特定します。

このツールは、[ジオメトリのチェック (Check Geometry)] ツールと同じロジックを使用して、ジオメトリの問題を修正します。

ジオメトリのチェックと修正に関する詳細

使用法

    注意:

    このツールを実行すると、入力データが変更されます。 詳細と不要なデータの変更を回避するための方法については、「入力データを変更または更新するツール」をご参照ください。

  • 有効な入力形式は、シェープファイル、およびファイル ジオデータベース、エンタープライズ データベース、エンタープライズ ジオデータベース、GeoPackage、SpatiaLite データベースに保存されているフィーチャクラスです。 エンタープライズ データベースまたはエンタープライズ ジオデータベースに保存されているフィーチャクラスでは、次の空間タイプがサポートされます。

    • Microsoft SQL Server - Geometry および Geography
    • PostgreSQL - PostGIS、Geometry、および Geography
    • Oracle - SDO_Geometry
    • SAP HANA - ST_Geometry

    ライセンス:

    Desktop Basic ライセンスを使用して、このツールを、シェープファイル、およびファイル ジオデータベース、GeoPackage、または SpatiaLite データベースに保存されているフィーチャクラスのみに適用できます。 Desktop Standard または Desktop Advanced ライセンスを使用して、このツールを、エンタープライズ データベースまたはジオデータベースに保存されているフィーチャクラスにも適用できます。

  • エンタープライズ ジオデータベースに保存され、バージョン対応登録されているフィーチャクラスはサポートされていません。

  • [元に戻すの有効化] 切り替えボタンは、エンタープライズ ジオデータベースからの入力に対しては無効です。

  • 以下に、ジオメトリの問題とそれに対処するためにツールで実行される修正を示します。

    • Null geometry - フィーチャクラスからレコードを削除します。 NULL ジオメトリを含むレコードを保持するには、[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 - フィーチャのエンベロープを修正するように更新します。
    • Bad dataset extent - フィーチャクラスの範囲を修正するように更新します。

    以下に、エンタープライズ ジオデータベースに保存されたデータから発生する可能性のあるジオメトリの問題と、ツールによって実行される問題に対応する修正のリスト (問題がある場合) を示します。

    • NEEDS_REORDERING - 形状の順序が変更され、重複したポイントが削除されます。
    • SE_INVALID_ENTITY_TYPE - エンティティ タイプは修復されません (フィーチャを削除する必要があります)。
    • SE_SHAPE_INTEGRITY_ERROR - 形状は修復されない場合があります。
    • SE_INVALID_SHAPE_OBJECT - シェープ オブジェクトは修復されない場合があります。
    • SE_COORD_OUT_OF_BOUNDS - 座標は修復されません。
    • SE_POLY_SHELLS_OVERLAP - 重なっているシェルをマージします。
    • SE_TOO_FEW_POINTS - ポイントは修復されません。
    • SE_INVALID_PART_SEPARATOR - パート セパレーターは修復されない場合があります。
    • SE_INVALID_POLYGON_CLOSURE - 閉じていないシェルは破棄されます (結果のポリゴンは空のままになることがあります)。
    • SE_INVALID_OUTER_SHELL - フィーチャの外側のシェルを修復しようとしますが、その処理中にシェルが破棄されることがあります。
    • SE_ZERO_AREA_POLYGON - ポリゴンが空の形状に変換されます。
    • SE_POLYGON_HAS_VERTICAL_LINE - 垂直線が削除されます (形状は 2D に変換されることがあります)。
    • SE_OUTER_SHELLS_OVERLAP - 重なっているパーツをマージします。
    • SE_SELF_INTERSECTING - 必要に応じて交点を追加します。

    注意:

    エンタープライズ データベースに保存されているデータに関連する問題は、ArcGIS ツールでは修復できない場合があります。

  • 修正の実行後、結果のジオメトリがツールによって再評価されます。別の問題が検出された場合は、その問題に対する適切な修正が実行されます。 たとえば、Incorrect ring ordering の問題のあるジオメトリの修正結果によって、Null geometry の問題のあるジオメトリが発生する場合もあります。

  • [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] オプションを使用して整合チェックまたは修正されたジオメトリは [Esri] オプションに対して有効になります。 両方の方法の詳細については、「シンプルなポリゴンとは」をご参照ください。

パラメーター

ラベル説明データ タイプ
入力フィーチャ

処理対象のフィーチャクラスまたはレイヤー。

ライセンス:

Desktop Basic ライセンスは、シェープファイル、およびファイル ジオデータベース、GeoPackage、または SpatiaLite データベースに保存されているフィーチャクラスのみを有効な入力フィーチャ形式として許可します。 Desktop Standard または Desktop Advanced ライセンスは、エンタープライズ データベースまたはエンタープライズ ジオデータベースに保存されているフィーチャクラスを有効な入力フィーチャ形式として使用することも許可します。

Feature Layer
NULL ジオメトリを含むフィーチャを削除
(オプション)

NULL ジオメトリを含むフィーチャを削除するか指定します。

  • オン - NULL ジオメトリを含むフィーチャを入力から削除します。 これがデフォルトです。
  • オフ - NULL ジオメトリを含むフィーチャを入力から削除しません。

注意:
NULL の削除は、エンタープライズ データベース、エンタープライズ ジオデータベース、GeoPackage、SpatiaLite データベースに保存されているデータに対しては使用できません。

Boolean
整合チェック方法
(オプション)

ジオメトリの問題の識別に使用するジオメトリ整合チェック方法を指定します。

  • EsriEsri のジオメトリ整合チェック方法が使用されます。 これがデフォルトです。
  • OGCOGC のジオメトリ整合チェック方法が使用されます。
String

派生した出力

ラベル説明データ タイプ
修正された入力フィーチャ

更新された入力フィーチャ。

Feature Layer

arcpy.management.RepairGeometry(in_features, {delete_null}, {validation_method})
名前説明データ タイプ
in_features

処理対象のフィーチャクラスまたはレイヤー。

ライセンス:

Desktop Basic ライセンスは、シェープファイル、およびファイル ジオデータベース、GeoPackage、または SpatiaLite データベースに保存されているフィーチャクラスのみを有効な入力フィーチャ形式として許可します。 Desktop Standard または Desktop Advanced ライセンスは、エンタープライズ データベースまたはエンタープライズ ジオデータベースに保存されているフィーチャクラスを有効な入力フィーチャ形式として使用することも許可します。

Feature Layer
delete_null
(オプション)

NULL ジオメトリを含むフィーチャを削除するか指定します。

  • DELETE_NULLNULL ジオメトリを含むフィーチャを入力から削除します。 これがデフォルトです。
  • KEEP_NULLNULL ジオメトリを含むフィーチャを入力から削除しません。

注意:
エンタープライズ データベース、エンタープライズ ジオデータベース、GeoPackage、SpatiaLite データベースからの入力に対しては、KEEP_NULL のみが有効です。

Boolean
validation_method
(オプション)

ジオメトリの問題の識別に使用するジオメトリ整合チェック方法を指定します。

  • ESRIEsri のジオメトリ整合チェック方法が使用されます。 これがデフォルトです。
  • OGCOGC のジオメトリ整合チェック方法が使用されます。
String

派生した出力

名前説明データ タイプ
out_feature_class

更新された入力フィーチャ。

Feature Layer

コードのサンプル

RepairGeometry の例 1 (Python ウィンドウ)

次の Python ウィンドウ スクリプトは、シェープファイルのイミディエイト モードで RepairGeometry 関数を使用する方法を示しています。

import arcpy
arcpy.management.RepairGeometry("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)

環境

特殊なケース

並列処理ファクター

環境が設定されていない場合 (デフォルト) または 0 に設定されている場合、並列処理は無効になります。 100 に設定されている場合、ツールはコンピューター上のすべての論理コアに作業を分配しようとします。 ファクターを 1 ~ 99 に指定すると、ツールは数式 (並列処理ファクター / 100 * 論理コア) の小数部を切り上げた整数を適用して、使用する論理コアの割合を特定します。 この数式の結果が 0 または 1 の場合、並列処理は有効化されません。

関連トピック