0

ユーザーが座標を入力してポイントの位置を更新できるようにするスクリプトを作成しています。

 rows = arcpy.UpdateCursor("C:\Users\Hannah\Desktop\Marcellus Shale data\GDB and Maps\Marcellus.gdb\Marcellus_Wells\Update_Cursor")
for row in rows:
    row.Latitude = float(raw_input('Latitude: '))
    rows.updateRow(row)
del row
del rows

rows = arcpy.UpdateCursor("C:\Users\Hannah\Desktop\Marcellus Shale data\GDB and Maps\Marcellus.gdb\Marcellus_Wells\Update_Cursor")
for row in rows:
    row.Longitude = float(raw_input('Longitude: '))
    rows.updateRow(row)
del row
del rows


inFeatures = ["C:\Users\Hannah\Desktop\Marcellus Shale data\GDB and Maps\Marcellus.gdb\Marcellus_Wells\Update_Cursor"]
outLocation = "C:\Users\Hannah\Desktop\Marcellus Shale data\GDB and Maps\Database Script\Shapefiles"
arcpy.FeatureClassToShapefile_conversion(inFeatures, outLocation)

スクリプトは「機能します」。つまり、最後に作成したシェープファイルには、古い座標の代わりに新しい座標が含まれています。ただし、新しいシェープファイルを ArcMap 画面にドラッグすると、属性テーブルに新しい座標が表示されていても、ポイントが古い座標の場所に移動します。

何かご意見は?ありがとう!

4

1 に答える 1

5

緯度と経度のフィールドを更新していますが、実際のジオメトリは更新していません。レコードのジオメトリを更新するには、新しいポイント オブジェクトを作成し、それを shape フィールドに保存する必要があります。

rows = arcpy.UpdateCursor("C:\Users\Hannah\Desktop\Marcellus Shale data\GDB and Maps\Marcellus.gdb\Marcellus_Wells\Update_Cursor")
for row in rows:
    point = new arcpy.point()
    latitude = float(raw_input('Latitude: '))
    longitude = float(raw_input('Longitude: '))
    row.Latitude = latitude
    row.Longitude = longitude
    point.Y = latitude
    point.X = longitude        
    pointGeometry = arcpy.PointGeometry(point)
    row.setValue('SHAPE', pointGeometry)
    rows.updateRow(row)
del row
del rows

それはあなたをかなり近づけるはずです。可能であれば、データ アクセス カーソルを使用してください。それらははるかに高速で簡単に操作できます。

于 2013-08-27T01:27:33.080 に答える