मैं विभिन्न विशेषताओं के आधार पर व्यवहार में जीपीएस समय-एन्कोडेड बिंदु डेटा के एक सेट को वर्गीकृत करने का प्रयास कर रहा हूं।
मैंने एक विशेषता बनाई है जो घर के लिए 0 है और 1 स्थान के आधार पर दूर है, और अब यात्रा को घर से दूर करना चाहते हैं (बिंदुओं का एक सेट 01111111111110
एक यात्रा होगी क्योंकि यह शुरू हुआ और घर पर समाप्त हो गया)। मैंने विशेषता फ़ील्ड को जोड़ा है जिसमें यात्रा संख्याएँ होंगी, लेकिन यह नहीं पता कि फ़ील्ड की गणना कैसे की जाए ताकि यह घर / दूर के क्षेत्र पर आधारित हो।
यहाँ जीपीएस डेटा का एक उदाहरण है ("*" का उपयोग अप्रासंगिक सूचना और केवल 1, 2, आदि के रूप में अनुक्रमण समय को इंगित करने के लिए), ऊपर वर्णित "होम / अवे" संकेतक और वांछित ट्रिप इंडिकेटर, "ट्रिप", जिसे मुझे गणना करने की आवश्यकता है:
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
....
मेरा डेटा सेट मैन्युअल रूप से जाने और विशेषता तालिका में प्रत्येक यात्रा को क्रमांकित करने के लिए बहुत बड़ा है, इसलिए घर / दूर की विशेषता का आदेश देने के आधार पर फ़ील्ड की गणना करने का कोई तरीका है और दूर बिंदुओं में से प्रत्येक "clump" को एक के रूप में नामित किया गया है ट्रिप?
ये नंगे हड्डियां हैं जो पायथन कोड की तरह लग सकती हैं (मैं कोड के साथ अनुभवी नहीं हूं)।
अभिव्यक्ति:
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
मैट विल्की की अनुशंसित स्क्रिप्ट का उपयोग करने के बाद मैंने कुछ बदलाव किए हैं ताकि मेरी पहली यात्रा नंबर 1 हो, मेरी दूसरी 2 है, आदि।
यहाँ मैट से संशोधित कोड है:
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
तब मैं सिर्फ घर = 0 के लिए चयन करता हूं और अपने यात्रा क्षेत्र की गणना 0. 0 तक करता हूं।
trip
चर को किसी भी समय की मनमानी संख्या को फिर से शुरू किया जा सकता है।