このブログ投稿は、Dan Patterson<\/A>の最近のブログ投稿、...That empty feeling...<\/A> にうまく続いていると思います。ArcGISにおけるnullおよび空ジオメトリに関する議論は新しいものではありませんが、理解するには少し時間がかかります。<\/EM><\/P><\/P>新しいフィーチャクラスを作成する際、多くの人がNew Feature Classウィザードの以下の画面にかなり馴染みがあると思います:<\/P><\/P><\/P>ArcGIS Desktopを使ってGUIまたはArcPy経由で新しいフィーチャクラスを作成する場合、デフォルト設定ではSHAPEフィールドにNULL値が許可されています(上記の黄色ハイライト参照)。SHAPEフィールドのNULLが良いか悪いかに関わらず、デフォルトでサポートされ許可されているため、フィーチャクラス内でジオメトリがレコードの他の部分と共に入力されない場合に何が起こるかを理解しておくことは重要です。<\/P><\/P>NULLが実際にはNULLでなかったいくつかのケースをトラブルシューティングした後、フィーチャクラスでジオメトリが入力されない場合に実際に何が起こるのかを詳しく調べることにしました。結果は、使用するツールとジオデータベースの種類によって異なることがわかりました。ここでは、より一般的なツールとジオデータベースの種類についての結果を示します。<\/P><\/P>表1は、何も指定しない場合、None<\/SPAN>、空ジオメトリ、および非空ジオメトリを3つの異なる方法でポリゴンフィーチャクラスに挿入したときにSHAPEフィールドに実際に格納されるものを示しています。<\/P><\/P>表1: フィーチャクラス内のSHAPEフィールド値<\/TD><\/TR>ストレージ<\/P>タイプ<\/P><\/TH>挿入<\/P>方法<\/P><\/TH>何もなし<\/STRONG><\/TH>None<\/STRONG><\/TH>空<\/STRONG><\/TH>ポリゴン<\/STRONG><\/TH><\/TR>PGDB<\/P><\/TD>ArcMap Editor<\/P><\/TD>Null<\/SPAN>N/A<\/SPAN>N/A<\/SPAN>Polygon<\/SPAN><\/TR>PGDB<\/SPAN>arcpy.InsertCursor<\/SPAN>Null<\/SPAN>Error<\/SPAN>Empty<\/SPAN>Polygon<\/SPAN><\/TR>PGDB<\/SPAN>arcpy.da.InsertCursor<\/SPAN>Null<\/SPAN>Null<\/SPAN>Null<\/SPAN>Polygon<\/SPAN><\/TR>FGDB<\/SPAN>ArcMap Editor<\/SPAN>Empty<\/SPAN>N/A<\/SPAN>N/A<\/SPAN>Polygon<\/SPAN><\/TR>FGDB<\/SPAN>arcpy.InsertCursor<\/SPAN>Null<\/SPAN>Error<\/SPAN>Empty<\/SPAN>Polygon<\/SPAN><\/TR>FGDB<\/SPAN>arcpy.da.InsertCursor<\/SPAN>Null<\/SPAN>Null<\/SPAN>Null<\/SPAN>Polygon<\/SPAN><\/TR>SDE(SQL)<\/SPAN>ArcMap Editor<\/SPAN>Empty<\/SPAN>N/A<\/SPAN>N/A<\/SPAN>Polygon<\/SPAN>SDE(SQL)arcpy.InsertCursorNullErrorEmptyPolygonSDE(SQL)arcpy.da.InsertCursorNullNullNullPolygonSDE(ORA)ArcMap EditorEmptyN/AN/APolygonSDE(ORA)arcpy.InsertCursorNullErrorEmptyPolygonSDE(ORA)arcpy.da.InsertCursorNullNullNullPolygonストレージタイプ取得方法NULLEMPTYPOLYGONPGDBarcpy.SearchCursorNoneEmptyPolygonPGDBarcpy.da.SearchCursorNoneNonePolygonFGDBarcpy.SearchCursorNoneEmptyPolygonFGDBarcpy.da.SearchCursorNoneNonePolygonSDE(SQL)arcpy.SearchCursorNoneEmptyPolygonSDE(SQL)arcpy.da.SearchCursorNoneNonePolygonSDE(ORA)arcpy.SearchCursorNoneEmptyPolygonSDE(ORA)arcpy.da.SearchCursorNoneNonePolygon注意:ストレージタイプ:PGDB := personal geodatabase(パーソナルジオデータベース)FGDB := file geodatabase(ファイルジオデータベース)SDE(SQL) := SQL Server enterprise geodatabase(SQL Server エンタープライズジオデータベース)SDE(ORA) := Oracle enterprise geodatabase(Oracle エンタープライズジオデータベース)取得方法:arcpy.SearchCursor := 元の/古い ArcPy search cursor(サーチカーソル)arcpy.da.SearchCursor := ArcPy Data Access search cursor(データアクセスサーチカーソル)SHAPE 値:NULL := SHAPE フィールドの NULL 値/マーカーEMPTY := SHAPE フィールドの空のポリゴンまたは空のコレクションPOLYGON := SHAPE フィールドの空でないポリゴンジオメトリの取得:None := Python の None オブジェクトEmpty := 空のポリゴンまたは空のコレクションPolygon := 空でないポリゴン
<\/P>
新しいフィーチャクラスを作成する際、多くの人がNew Feature Classウィザードの以下の画面にかなり馴染みがあると思います:<\/P>
ArcGIS Desktopを使ってGUIまたはArcPy経由で新しいフィーチャクラスを作成する場合、デフォルト設定ではSHAPEフィールドにNULL値が許可されています(上記の黄色ハイライト参照)。SHAPEフィールドのNULLが良いか悪いかに関わらず、デフォルトでサポートされ許可されているため、フィーチャクラス内でジオメトリがレコードの他の部分と共に入力されない場合に何が起こるかを理解しておくことは重要です。<\/P>
NULLが実際にはNULLでなかったいくつかのケースをトラブルシューティングした後、フィーチャクラスでジオメトリが入力されない場合に実際に何が起こるのかを詳しく調べることにしました。結果は、使用するツールとジオデータベースの種類によって異なることがわかりました。ここでは、より一般的なツールとジオデータベースの種類についての結果を示します。<\/P>
表1は、何も指定しない場合、None<\/SPAN>、空ジオメトリ、および非空ジオメトリを3つの異なる方法でポリゴンフィーチャクラスに挿入したときにSHAPEフィールドに実際に格納されるものを示しています。<\/P><\/P>表1: フィーチャクラス内のSHAPEフィールド値<\/TD><\/TR>ストレージ<\/P>タイプ<\/P><\/TH>挿入<\/P>方法<\/P><\/TH>何もなし<\/STRONG><\/TH>None<\/STRONG><\/TH>空<\/STRONG><\/TH>ポリゴン<\/STRONG><\/TH><\/TR>PGDB<\/P><\/TD>ArcMap Editor<\/P><\/TD>Null<\/SPAN>N/A<\/SPAN>N/A<\/SPAN>Polygon<\/SPAN><\/TR>PGDB<\/SPAN>arcpy.InsertCursor<\/SPAN>Null<\/SPAN>Error<\/SPAN>Empty<\/SPAN>Polygon<\/SPAN><\/TR>PGDB<\/SPAN>arcpy.da.InsertCursor<\/SPAN>Null<\/SPAN>Null<\/SPAN>Null<\/SPAN>Polygon<\/SPAN><\/TR>FGDB<\/SPAN>ArcMap Editor<\/SPAN>Empty<\/SPAN>N/A<\/SPAN>N/A<\/SPAN>Polygon<\/SPAN><\/TR>FGDB<\/SPAN>arcpy.InsertCursor<\/SPAN>Null<\/SPAN>Error<\/SPAN>Empty<\/SPAN>Polygon<\/SPAN><\/TR>FGDB<\/SPAN>arcpy.da.InsertCursor<\/SPAN>Null<\/SPAN>Null<\/SPAN>Null<\/SPAN>Polygon<\/SPAN><\/TR>SDE(SQL)<\/SPAN>ArcMap Editor<\/SPAN>Empty<\/SPAN>N/A<\/SPAN>N/A<\/SPAN>Polygon<\/SPAN>SDE(SQL)arcpy.InsertCursorNullErrorEmptyPolygonSDE(SQL)arcpy.da.InsertCursorNullNullNullPolygonSDE(ORA)ArcMap EditorEmptyN/AN/APolygonSDE(ORA)arcpy.InsertCursorNullErrorEmptyPolygonSDE(ORA)arcpy.da.InsertCursorNullNullNullPolygonストレージ
タイプ
取得
方法
注意:
異なるツールが NULL 値を許可するフィーチャクラスに何もないものや空のジオメトリを挿入する方法には、いくつか違い、言い換えれば不整合があることは明らかです。 同じツールでも、異なる種類のジオデータベース間で何もないものや空のジオメトリが異なって扱われる状況があります。 また、異なるサーチカーソル、そしておそらくアップデートカーソルがフィーチャクラスから空のジオメトリを取得する方法にも違いがあります。
これがすべて何を意味するかは言えませんが、私にとって目立った点がいくつかあります。
サインインしたメンバーは投稿、更新のフォローなどができます。初めてですか?無料アカウントを登録してください。
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.