Mehr

ArcPy Data Access-Einfügecursor schreibt keine Geometrien in die Feature-Class?

ArcPy Data Access-Einfügecursor schreibt keine Geometrien in die Feature-Class?


Ich verwende PyScripter und führe ArcGIS 10.2.1 aus.

Ich habe Probleme mit dem Insert Cursor im arcpy-Modul.

Ich habe eine leere Feature-Class in meiner Geodatabase und habe das folgende kurze Skript erstellt, um das Problem zu finden, aber es war nicht möglich. Wenn ich das Skript ausführe, läuft es gut, aber wenn ich danach in der Attributtabelle der Feature-Class nachschaue, ist es immer noch leer.

import arcpy fc = r"C:UsersdjhDesktop	opo_map	est.gdbwell_location" cursor = arcpy.da.InsertCursor(fc, ["[email protected]"]) xy = (206901.75, 5997594.47) Cursor. insertRow([xy])

Ich habe dieses Skript direkt von der Seite "Geometrien schreiben" auf der ArcGIS-Hilfe-Website kopiert, daher glaube ich nicht, dass es ein Problem mit der Syntax ist. Bitte lassen Sie mich wissen, ob es eine Möglichkeit gibt, dieses Problem zu umgehen.


PyScripter ist etwas lasch mit Objektlebensdauern und behält Dinge bei, nachdem es ausgeführt wurde. Verwenden Sie diemit-Anweisung, um sicherzustellen, dass Sie die Bearbeitungssitzung schließen.

import arcpy fc = r"C:UsersdjhDesktop	opo_map	est.gdbwell_location" xy = (206901.75, 5997594.47) mit arcpy.da.InsertCursor(fc, ["[email protected]"]) als Cursor: Cursor.insertRow([xy])

Mit IDLE habe ich Ihren Test mit ArcGIS 10.2.2 for Desktop direkt nach einem Neustart (zufällig) ausgeführt, sodass nichts von früheren Tests herumliegen sollte. Der Code ist identisch mit dem dritten Beispiel bei Writing Geometries, und ich stimme Ihnen zu, dass der Punkt nicht geschrieben wird.

Ich glaube, dass ein Teil der Dokumentation fehlerhaft ist und Sie stattdessen das Folgende verwenden sollten, das ich erfolgreich getestet habe.

import arcpy fc = r"C:UsersdjhDesktop	opo_map	est.gdbwell_location" cursor = arcpy.da.InsertCursor(fc, ["[email protected]"]) xy = arcpy.Point(206901.75, 5997594.47 ) cursor.insertRow([xy])

Wie @JasonScheirer kommentierte, wird diese Kombination auch funktionieren:

Cursor = arcpy.da.InsertCursor(fc, ["[email protected]"]) xy = (206901.75, 5997594.47)

während dies nicht gilt:

Cursor = arcpy.da.InsertCursor(fc, ["[email protected]"]) xy = arcpy.Point(206901.75, 5997594.47)

aber das sollte:

Cursor = arcpy.da.InsertCursor(fc, ["[email protected]"]) xy = arcpy.PointGeometry(arcpy.Point(206901.75, 5997594.47))

PRJ311-2

public void run()<
System.outprintln(tisAIive()):
System.outprintln("XYZ"):

öffentliches Nichts go(Turing t)<
t.start()

Klasse Turing erweitert Thread<
public void run()<
for(int i =0 i <1 2 i++)<
Systemausdrucklnm

Öffentliche Klasse Test <
public static void main(String[] args) <
JFrame-Frame = neuer JFrame("My Frame")
frame.add(new MyDrawing("Welcome to Java!"))
frame.setSize(300, 300)
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
frame.setVisible(true)
frame.setVisible(true)
>
>

Klasse MyDrawing erweitert JPanel <
String-Nachricht

public MyDrawing(String-Nachricht) <
this.message = Nachricht
>

public void paintcomponent(Grafik g) <
super.paintComponent (g)

public class Test erweitert JFrame <
öffentlicher Test() <
add(new MyDrawing("Willkommen bei Java!"))
>

public static void main(String[] args) <
JFrame-Frame = neuer JFrame()
frame.setSize(300, 300)
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
frame.setVisible(true)
>
>

Klasse MyDrawing erweitert JPanel <
String-Nachricht

public MyDrawing(String-Nachricht) <
this.message = Nachricht
>

public void paintComponent(Grafik g) <
super.paintComponent (g)

java.awt.* importieren
java.awt.event. importieren.*
javax.swing importieren.*

öffentliche Klasse Test1 erweitert JFrame <
öffentlicher Test1() <
add(neue MyCanvas())
>


Schau das Video: Arcpy Data Access Module Insert Cursor