আমি বিভিন্ন বৈশিষ্ট্যের উপর ভিত্তি করে আচরণের মধ্যে জিপিএস টাইম-এনকোডড পয়েন্ট ডেটার একটি সেট শ্রেণিবদ্ধ করার চেষ্টা করছি।
আমি অবস্থানের উপর ভিত্তি করে 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
....
আমার ডেটা সেটটি অ্যাট্রিবিউট টেবিলের প্রতিটি ট্রিপটিতে ম্যানুয়ালি যেতে এবং সংখ্যাটি নির্ধারণের জন্য খুব বড়, সুতরাং বাড়ি / দূরের বৈশিষ্ট্যটি কীভাবে অর্ডার করা হয় এবং প্রতিটি পয়েন্টের "ক্লাম্প" কে হিসাবে চিহ্নিত করা হয় তার ভিত্তিতে ক্ষেত্রটি গণনা করার কোনও উপায় আছে? হোঁচট?
এগুলি পাইথন কোডটির মতো দেখতে খালি হাড় (আমি কোড নিয়ে অভিজ্ঞ নই)।
এক্সপ্রেশন:
trip = Reclass(!home!)
উবুন্টুতে:
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 এ ফিরে গণনা করুন খুব সুন্দরভাবে অর্ডার করা ভ্রমণের।
trip
ভেরিয়েবলটি যেকোন স্বেচ্ছাসেবী সংখ্যার পুনরায় সূচনা হতে পারে।