Alles scheint korrekt zu funktionieren, die Datentabelle und Attribute sind korrekt, die neu hinzugefügten Punkte scheinen relativ zueinander korrekt zu sein. Das Problem tritt auf, wenn ich versuche, eine vorhandene Datei zu aktualisieren. Die neu hinzugefügten Punkte liegen weit woanders. Im Beispiel hier habe ich versucht, genau die gleichen GPS-Koordinaten (in Dezimalgraden) wie ein vorhandener Punkt hinzuzufügen. Sie können den ersten Eintrag sehen, die Y_Koord und Hierbei handelt es sich um eine Art Koordinatenproblem, und Suchvorgänge zu diesem Problem deuten ebenfalls auf ein Koordinatenproblem hin, aber ich habe es millionenfach überprüft, um sicherzustellen, dass das Shapefile, eine Grenzschicht (nur visuelle Überprüfung) und der Datenrahmen alle korrekt sind geografische und Projektionskoordinatensysteme. Das verwendete GCS ist GCS_WGS_1984 (WKID: 4326) und PCS ist WGS_1984_UTM_Zone_16N (WKID: 32616).
Ich habe doppelt, dreifach und eine Million Mal überprüft, um sicherzustellen, dass die Koordinatensysteme korrekt sind richtig. Ich habe versucht, es in Python gezielt zuzuweisen (obwohl ich nicht sicher bin, ob ich es richtig nenne).
Fragen:
Definiere ich den Raumbezug in Python richtig? Ich habe das Gefühl als würde ich das Objekt nur aufrufen, es aber nicht tatsächlich initiieren.
Wenn nicht, gibt es eine Möglichkeit, Python ausdrücklich anzuweisen, dies im richtigen GCS/PCS anzuwenden?
Code: Select all
import arcpy
#one coordinate only for testing
coords = [(1, (43.20779, -89.78513))]
# link to shapefile
shapefile = r'M:\ARC\gis_users\Missing_Wells\Missing_Wells.shp'
# Define the spatial reference (GCS_WGS_1984 = 4326, PCS_WGS_1984_UTM16N = 32616)
arcpy.SpatialReference(32616)
#use SHAPE@XY syntax to add point features to a point feature class
with arcpy.da.InsertCursor(shapefile, ['Well_ID', 'Y_Coord', 'X_Coord', 'SHAPE@XY']) as cursor:
#Insert new rows that include the well ID and a x,y coordinate pair
for Well_ID, (lat, lon) in coords:
cursor.insertRow((Well_ID, lat, lon, (lat, lon)))
print('added')
...
sys.exit()