Tôi đang cố gắng phân loại một tập hợp dữ liệu điểm được mã hóa theo thời gian gps thành các hành vi dựa trên các thuộc tính khác nhau.
Tôi đã tạo một thuộc tính là 0 cho nhà và 1 cho đi dựa trên vị trí và bây giờ muốn đánh số các chuyến đi xa nhà (một tập hợp các điểm 01111111111110
sẽ là một chuyến vì nó bắt đầu và kết thúc tại nhà). Tôi đã thêm trường thuộc tính sẽ có số chuyến đi, nhưng không biết cách tính toán trường để nó dựa trên trường nhà / sân khách.
Dưới đây là ví dụ về dữ liệu GPS (sử dụng "*" để chỉ ra thông tin không liên quan và chỉ đơn giản là lập chỉ mục thời gian là 1, 2, v.v.), chỉ báo "Nhà / Đi" được mô tả ở trên và chỉ báo chuyến đi mong muốn, "Chuyến đi", mà tôi cần tính toán:
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
....
Tập dữ liệu của tôi quá lớn để tự đi qua và đánh số mỗi chuyến đi trong bảng thuộc tính, vì vậy có cách nào để tính toán trường dựa trên cách đặt thuộc tính home / Away và mỗi "cụm" điểm đi được chỉ định là một chuyến đi?
Đây là những cốt lõi của mã Python có thể trông như thế nào (Tôi không có kinh nghiệm với mã).
Biểu hiện:
trip = Reclass(!home!)
Cơ sở mã hóa:
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
Sau khi sử dụng kịch bản được đề xuất của matt wilk, tôi đã thực hiện một số thay đổi để chuyến đi đầu tiên của tôi là số 1, lần thứ hai là 2, v.v.
Đây là mã được sửa đổi từ 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
Sau đó, tôi chỉ cần chọn cho nhà = 0 và tính toán trường chuyến đi của tôi trở về 0. Các chuyến đi được sắp xếp gọn gàng.
trip
biến có thể được khởi tạo lại bất kỳ số lần tùy ý.