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

概要

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

有効な入力形式は、シェープファイルおよびファイル ジオデータベースに保存されているフィーチャクラスです。

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

使用法

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

  • [出力テーブル] には次のフィールドがあります。

    • CLASS - 問題が見つかったフィーチャクラスの絶対パスおよび名前
    • FEATURE_ID - ジオメトリの問題があるフィーチャのフィーチャ ID (FID) またはオブジェクト ID (OID)
    • 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 になります。
  • このツールで特定された問題には、次の方法で対処することができます。

    • ジオメトリの問題があるフィーチャを手動で編集して修正します。一部の問題は、編集によって修正することができません。
    • [ジオメトリの修正 (Repair Geometry)] ツールを使用します。
  • PROBLEM コードを含む [出力テーブル] コンテンツは英語で記述されます。

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

  • ジオメトリの問題があると報告されたフィーチャを確認しやすくするために、[テーブルの結合 (Add Join)] ツールを使用して、入力の OBJECTID または FID フィールドと出力テーブルの FEATURE_ID フィールドとともに、[入力フィーチャ][出力テーブル] に結合することができます。

  • Esri の整合チェック方法では、Esri Simplify メソッドを使用してジオメトリがトポロジ的に正しいことを確認します。

  • OGC の整合チェック方法では、「OpenGIS Implementation Standard for Geographic information – simple feature access – Part 1: common architecture」で定義された OGC 仕様にジオメトリが準拠していることを確認します。

  • OGC 方式を使用してフィーチャのジオメトリを修正した後に続けて編集や変更を行うと、ジオメトリが OGC 仕様に準拠しなくなる可能性があります。フィーチャの変更後は、[ジオメトリのチェック (Check Geometry)] ツールを使用して、ジオメトリの問題が新たに発生していないか確認してください。必要な場合は、[ジオメトリの修正 (Repair Geometry)] ツールを再実行します。

  • OGC の単純化では、ベジェ曲線、円弧、楕円円弧などの非線形線分がサポートされていません。これらのタイプの線分は、[ジオメトリのチェック (Check Geometry)] の実行前に [頂点の挿入 (Densify)] ツールを使用して高密度化する必要があります。[頂点の挿入 (Densify)] ツールの実行時に非線形線分が不可逆的に変更されるのを防ぐために、先にデータのコピーを作成しておきます。データに非線形線分が含まれているかどうかを判別するには、[ジオメトリ属性の追加 (Add Geometry Attributes)] ツールを使用します。

構文

CheckGeometry(in_features, out_table, {validation_method})
パラメーター説明データ タイプ
in_features
[in_feature,...]

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

Feature Layer
out_table

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

Table
validation_method
(オプション)

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

  • ESRI Esri のジオメトリ整合チェック方法が使用されます。これがデフォルトです。
  • OGC OGC (Open Geospatial Consortium) のジオメトリ整合チェック方法が使用されます。
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 
# inside 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: はい
  • Advanced: はい

関連トピック