ジオメトリのチェック (Check Geometry) (データ管理)

サマリー

フィーチャクラスに存在するジオメトリの問題についてレポートを作成します。

ジオメトリの問題の詳細、ソフトウェアに与える影響、および可能性のある原因については、「ジオメトリのチェックと修正」をご参照ください。

使用法

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

    • Microsoft SQL Server - Geometry および Geography
    • PostgreSQLPostGIS、Geometry、および Geography
    • Oracle - SDO_Geometry

    ライセンス:

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

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

  • 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)] ツールを再実行します。

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

    • ジオメトリの問題があるフィーチャを手動で編集して修正します。 一部の問題は、編集によって修正することができません。
    • [ジオメトリの修正 (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 - ラインストリングまたはポリゴンの境界は自己交差しています。

パラメーター

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

ジオメトリの問題をチェックする対象となる 1 つ以上のフィーチャクラスまたはフィーチャ レイヤー。

ライセンス:

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

Feature Layer
出力テーブル

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

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

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

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

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

ジオメトリの問題をチェックする対象となる 1 つ以上のフィーチャクラスまたはフィーチャ レイヤー。

ライセンス:

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

Feature Layer
out_table

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

Table
validation_method
(オプション)

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

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

コードのサンプル

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

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

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

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

# BatchCheckGeometry.py
# Description: Loops through all the feature classes in a geodatabase, and 
#              generates 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.CheckGeometry_management(fc_list, out_table)

print("{} geometry problems found, see {} for details.".format(
    arcpy.GetCount_management(out_table)[0], out_table))

ライセンス情報

  • Basic: 制限付き
  • Standard: Yes
  • Advanced: Yes

関連トピック