ジオメトリのチェック (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 ライセンスを使用して、このツールを、エンタープライズ データベースまたはジオデータベースに保存されているフィーチャクラスにも適用できます。

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

  • [出力テーブル] パラメーター値には、検出されたジオメトリの問題ごとに 1 つのレコードが含まれます。 問題が見つからなかった場合は、テーブルは空になります。

  • PROBLEM フィールドのコードを含んでいる [出力テーブル] パラメーター値の内容は、英語で記述されます。

  • ポイント フィーチャの場合は、NULL ジオメトリの問題だけが適用されます。

  • ジオメトリの問題があると報告されたフィーチャを確認するために、[テーブルの結合 (Add Join)] ツールを使用して、入力の OBJECTID または FID フィールドと出力テーブルの FEATURE_ID フィールドとともに、[入力フィーチャ] パラメーター値を [出力テーブル] パラメーター値に結合することができます。 [入力フィーチャ] パラメーター値のいずれかがエンタープライズ ジオデータベース、エンタープライズ データベース、GeoPackage、または SpatiaLite データベースに保存されている場合、出力テーブルは、非整数に基づく OBJECTID 列に使用される TEXT_ID フィールドも含みます。

  • [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] オプションに対して有効になります。 両方の方法の詳細については、「シンプルなポリゴンとは」をご参照ください。

  • このツールで特定された問題には、次の方法で対処することができます。

    • ジオメトリの問題があるフィーチャを手動で編集して修正します。 一部の問題は、編集によって修正することができません。
    • [ジオメトリの修正 (Repair Geometry)] ツールを使用します。 エンタープライズ データベース、エンタープライズ ジオデータベース、GeoPackage、および SpatiaLite データベースに保存されているデータに関連する問題は、ArcGIS ツールでは修復できない場合があります。
  • [出力テーブル] パラメーター値には次のフィールドがあります。

    • CLASS- 問題が見つかったフィーチャクラスの絶対パスおよび名前。
    • FEATURE_ID- ジオメトリの問題があるフィーチャのフィーチャ ID (FID) またはオブジェクト ID (OID)。
    • TEXT_ID- このフィールドは、[入力フィーチャ] の値がエンタープライズ データベース、エンタープライズ ジオデータベース、GeoPackage、または SpatiaLite データベースに保存されている場合にのみ存在します。
    • PROBLEM- 問題の簡単な説明。
  • PROBLEM フィールドには、次のコードの 1 つが格納されます。

    • Short segment - ジオメトリに関連付けられている空間参照のシステム単位で許可されている長さよりも短い線分があります。
    • Null geometry - フィーチャにジオメトリがないか、SHAPE フィールドが空です。
    • Incorrect ring ordering - ポリゴンのトポロジはシンプルですが、リングが正しい方向で配置されていない可能性があります (外部リングが時計回りで、内部リングが反時計回り)。
    • Incorrect segment orientation - 個々の線分の方向が同じではありません。 線分 i の終点は線分 i+1 の始点と同じになる必要があります。
    • Self intersections - ポリゴンは自己交差してはいけません。
    • Unclosed rings - リングの最後の線分の終点は、最初の線分の始点と同じになる必要があります。
    • Empty parts - ジオメトリに複数のパートがあり、そのうちの 1 つが空です (ジオメトリがありません)。
    • Duplicate vertex - ジオメトリに、同じ座標を持つ複数の頂点が連続的に配置されています。
    • Mismatched attributes - 線分の端点の Z 座標または M 座標が、一致する必要がある次の線分の端点の Z 座標または M 座標に一致しません。
    • Discontinuous parts - ジオメトリのパートの 1 つが、接続されていないパートまたは不連続のパートで構成されています。
    • Empty Z values - Z 値が空 (NaN など) の頂点が 1 つ以上ジオメトリに存在します。
    • Bad envelope - エンベロープがジオメトリの座標範囲に一致しません。
    • Bad dataset extent — データセットの範囲プロパティに、データセットのすべてのフィーチャが含まれていません。 この問題が発生した場合、FEATURE_ID の値が -1 になります。

    エンタープライズ ジオデータベースに格納されたデータの場合、PROBLEM フィールドには次のいずれかのコードが含まれます。

    • NEEDS_REORDERING - 形状の順序を変更するか、重複したポイントを削除する必要があります。
    • SE_INVALID_ENTITY_TYPE - エンティティ タイプが無効です。
    • SE_SHAPE_INTEGRITY_ERROR - 形状の整合性エラーが発生しました。
    • SE_INVALID_SHAPE_OBJECT - シェープ オブジェクト ハンドルが無効です。
    • SE_COORD_OUT_OF_BOUNDS - 指定した座標が有効な座標範囲を超えています。
    • SE_POLY_SHELLS_OVERLAP - 2 つのドーナツまたは 2 つの外部シェルが重なっています。
    • 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 - ポリゴン シェルに縦線が含まれています。
    • SE_OUTER_SHELLS_OVERLAP - マルチパート エリアに重複部分があります。
    • SE_SELF_INTERSECTING - ラインストリングまたはポリゴンの境界は自己交差しています。

パラメーター

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

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

ライセンス:

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

Feature Layer
出力テーブル
(オプション)

特定された問題のレポート (テーブル形式)。

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

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

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

派生した出力

ラベル説明データ タイプ
ジオメトリ エラーを含む

ツールが何らかのジオメトリの問題を特定したかどうかを示します。

Boolean

arcpy.management.CheckGeometry(in_features, {out_table}, {validation_method})
名前説明データ タイプ
in_features
[in_features,...]

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

ライセンス:

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

Feature Layer
out_table
(オプション)

特定された問題のレポート (テーブル形式)。

Table
validation_method
(オプション)

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

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

派生した出力

名前説明データ タイプ
problems_found

ツールが何らかのジオメトリの問題を特定したかどうかを示します。

Boolean

コードのサンプル

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

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


import arcpy
arcpy.env.workspace = "c:/data/data.gdb"
arcpy.management.CheckGeometry(["contours", "roads", "vegetation"], "CheckGeom_Result")
CheckGeometry の例 2 (スタンドアロン スクリプト)

次のスタンドアロン スクリプトでは、ファイル ジオデータベース内のすべてのフィーチャクラスにループをかけて CheckGeometry 関数を使用します。

# BatchCheckGeometry.py
# Description: Loop through all the feature classes in a geodatabase, and 
#              generate a report of the problems encountered with feature 
#              geometry.

# Import modules
import arcpy
import os

# The geodatabase in which the feature classes will be checked
arcpy.env.workspace = "C:\\data\\St_Lucia.gdb"
out_table = "checkGeometryResult"
 
# A variable that will hold the list of all the feature classes 
# in the geodatabase
fc_list = []

# Identify all feature classes in the geodatabase
for path, dirnames, fcs in arcpy.da.Walk(arcpy.env.workspace, 
                                         datatype='FeatureClass'):
    for fc in fcs:
        fc_list.append(os.path.join(path, fc))
        
print("Running the check geometry tool on {} feature classes".format(
    len(fc_list)))
arcpy.management.CheckGeometry(fc_list, out_table)

print("{} geometry problems found, see {} for details.".format(
    arcpy.management.GetCount(out_table)[0], out_table))
CheckGeometry (ジオメトリのチェック) の例 3 (スタンドアロン スクリプト)

次のスクリプトは、CheckGeometry 関数を使用して、派生した出力をチェックし、問題が検出されたかどうかを判定します。


import arcpy

result = arcpy.management.CheckGeometry('c:/data/data.gdb/badgeometryfc')
if result[1] == 'true':
    # Geometry problems found, print the tool messages.
    print(result.getMessages())

else:
    # No problems found
    print("No problems Found")

環境

特殊なケース

並列処理ファクター

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