Estoy tratando de clasificar un conjunto de gps vez codificados los datos del punto en comportamientos basados en atributos diferentes. He creado un atributo que es 0 para el hogar y 1 para la distancia basados en la ubicación, y ahora quiere que el número de viajes lejos de casa (un conjunto de puntos 01111111111110
sería un viaje, ya que comenzó y terminó en la casa). He añadido el campo de atributo que tendrán los números de viaje, pero no sé cómo calcular el campo por lo que se basa en la casa/fuera de campo.
Aquí es un ejemplo de los datos del GPS (el uso de "*" para indicar la información irrelevante y simplemente indexación veces como 1, 2, etc.), la "Casa/Fuera" indicador descrito anteriormente, y el indicador de disparo, "Viaje", que necesito para calcular:
Time Lat Lon Home/Away Trip
1 * * 0 0
2 * * 1 1
3 * * 1 1
....
12 * * 1 1
13 * * 0 0
14 * * 0 0
15 * * 1 2
16 * * 1 2
....
34 * * 1 2
35 * * 0 0
36 * * 0 0
37 * * 1 3
....
Mi conjunto de datos es demasiado grande para pasar manualmente a través de y el número de cada viaje en la tabla de atributos, así que es allí cualquier manera de calcular el campo que se basa en cómo la casa/fuera atributo es ordenado y cada "grupo" de distancia de los puntos es designado como un viaje?
ACTUALIZACIÓN: estos son los desnudos huesos de lo que el código de Python que podría parecer (no tengo experiencia con el código).
Expresión:
trip = Reclass(!home!)
Codeblock:
def Reclass(home):
if (home = 0):
return 0
elif (home = 1 and lastValue = 0):
return _(incremental numbering?)_
elif (home = 1 and lastValue = 1):
return lastValue
ACTUALIZACIÓN:
Después de usar matt wilkie recomienda script que he hecho algunos cambios para que mi primer viaje es el número 1, mi segunda el 2, etc etc. Aquí está el código modificado de matt:
import arcpy
rows = arcpy.UpdateCursor("test2")
trip = 0
for row in rows:
if row.home == 0:
prev = row.home
row.TRIP = trip
rows.updateRow(row)
elif row.home == 1 and prev == 0:
trip += 1
prev = row.home
row.TRIP = trip
rows.updateRow(row)
rows.next()
elif row.home == 1 and prev == 1:
prev = row.home
row.TRIP = trip
rows.updateRow(row)
rows.next()
row.TRIP = trip
rows.updateRow(row)
del row, rows
A continuación, sólo tienes que seleccionar para el hogar = 0 y calcular mi viaje de campo a 0. Ordenado viajes. Un millón de gracias a todos!