Necesito separar puntos con coordenadas idénticas.
Tengo una capa de puntos en la que puede haber hasta 4 puntos superpuestos (misma coordenada). Quiero separar estos puntos entre sí (con una distancia definida en x e y), utilizando un pyscript. Ahora mismo, sólo funciona la primera parte del script (Parte 1), pero luego por alguna razón el script deja de mover los puntos en el segundo "bucle del cursor". ¿Hay alguna forma mejor de resolver la tarea?
#------------------------------------------------------
#Enviroments
import arcpy
arcpy.env.overwriteOutput = True
workspace = r"*"
arcpy.env.workspace = workspace
fc = "*"
fields = ['SHAPE@X', 'SHAPE@Y']
#Copy feature class:
arcpy.CopyFeatures_management(fc, fc + "Copy")
#Set FC to Copied data
fcCopy = fc + "Copy"
edit = arcpy.da.Editor(workspace)
----------------------Part 1----------------------
Xlist1 = []
Ylist1 = []
edit.startEditing(False, False)
edit.startOperation()
with arcpy.da.UpdateCursor(fcCopy, fields) as cursor:
for row in cursor:
if row[0] in Xlist1 and row[1] in Ylist1:
row[0] = row[0] + 10.0 #Move the point 10 meters in X
if row[0] not in Xlist1 and row[1] not in Ylist1:
Xlist1.append(row[0])
Ylist1.append(row[1])
cursor.updateRow(row)
print(Xlist1, Ylist1)
del row
del cursor
edit.stopOperation()
edit.stopEditing(True)
print("Script Part Done 1")
#----------------------Part 2 ----------------------
Xlist = []
Ylist = []
edit.startEditing(False, False)
edit.startOperation()
with arcpy.da.UpdateCursor(fcCopy, fields) as cursor:
for row in cursor:
if row[0] in Xlist and row[1] in Ylist:
row[1] = row[1] + 10.0 #Move the point 10 meters in Y
if row[0] not in Xlist and row[1] not in Ylist:
Xlist.append(row[0])
Ylist.append(row[1])
cursor.updateRow(row)
del row
del cursor
edit.stopOperation()
edit.stopEditing(True)
print("Script Part Done 2")
Para:
0 votos
¿Podrías añadir una captura de pantalla mostrando cómo quieres que acaben los cuatro coordiantes en el mismo punto?
1 votos
Hola, aprox. como esta esto