現在、ArcGIS Pro 3.3で作業しているときに問題が発生しています。具体的には、Z 値を持つポリラインとポリゴンの両方を作成しようとしていますが、フィーチャクラスへの挿入時に Z 値が 0 に設定されています。
以下は、私のプロセスの概要です。
- 「ExampleDatabase.gdb」という名前のファイル ジオデータベースと、Z が有効なポリライン フィーチャクラスを作成します。
- 指定したZ値でポリラインジオメトリを作成します。
- an を使用して、ポリラインをフィーチャクラスに追加します。カーソルの挿入
- ポリゴン フィーチャクラスを作成する場合も同様の手順を実行しますが、Z 値が 0 に設定されている場合でも同じ問題が発生します。
これらの手順を実行しても、挿入されたポリラインとポリゴンの両方の Z 値は常に 0 として返されます。
参考までに私のコードのスニペットを次に示します。
import arcpy
import os
# Create a file geodatabase
output_folder = r"D:/temp"
gdb_name = "ExampleDatabase.gdb"
gdb_full_path = os.path.join(output_folder, gdb_name)
if not arcpy.Exists(gdb_full_path):
arcpy.management.CreateFileGDB(out_folder_path=output_folder, out_name=gdb_name)
# Create a polyline feature class
feature_class_name_polyline = "counties_polyline"
arcpy.CreateFeatureclass_management(
out_path=gdb_full_path,
out_name=feature_class_name_polyline,
geometry_type="POLYLINE",
has_z="ENABLED" # Enable Z values
)
# Create polyline geometry with Z values
array_polyline = arcpy.Array([arcpy.Point(1000.0, 2000.0, 50.0),
arcpy.Point(1500.0, 2500.0, 75.0),
arcpy.Point(2000.0, 3000.0, 100.0)])
polyline = arcpy.Polyline(array_polyline)
# InsertCursor to add new polyline geometry
with arcpy.da.InsertCursor(os.path.join(gdb_full_path, feature_class_name_polyline), ['SHAPE@']) as cursor:
cursor.insertRow([polyline])
# Create a polygon feature class
feature_class_name_polygon = "counties_polygon"
arcpy.CreateFeatureclass_management(
out_path=gdb_full_path,
out_name=feature_class_name_polygon,
geometry_type="POLYGON",
has_z="ENABLED" # Enable Z values
)
# Create polygon geometry with Z values
array_polygon = arcpy.Array([arcpy.Point(1000.0, 2000.0, 50.0),
arcpy.Point(1500.0, 2000.0, 50.0),
arcpy.Point(1500.0, 2500.0, 50.0),
arcpy.Point(1000.0, 2500.0, 50.0),
arcpy.Point(1000.0, 2000.0, 50.0)]) # Closing the polygon
polygon = arcpy.Polygon(array_polygon)
# InsertCursor to add new polygon geometry
with arcpy.da.InsertCursor(os.path.join(gdb_full_path, feature_class_name_polygon), ['SHAPE@']) as cursor:
cursor.insertRow([polygon])
# Check Z values for polyline
with arcpy.da.SearchCursor(os.path.join(gdb_full_path, feature_class_name_polyline), ['SHAPE@']) as cursor:
for row in cursor:
geometry = row[0]
for part in geometry:
for p in part:
print("Polyline - X:", p.X, "Y:", p.Y, "Z:", p.Z) # Output Z values
# Check Z values for polygon
with arcpy.da.SearchCursor(os.path.join(gdb_full_path, feature_class_name_polygon), ['SHAPE@']) as cursor:
for row in cursor:
geometry = row[0]
for part in geometry:
for p in part:
print("Polygon - X:", p.X, "Y:", p.Y, "Z:", p.Z) # Output Z values
両方のフィーチャクラスが Z 値を有効にして作成されていますが、挿入されたポリラインとポリゴンの Z 値は常に 0 として報告されることを確認しました。
なぜこれが起こっているのかを理解するのを手伝ってくれませんか?ご指導やご提案をいただければ幸いです。
ご協力いただきありがとうございます!
よろしくお願いいたします