আরটিরির সাথে স্থানিক সূচীর ব্যবহার বুঝতে আমার সমস্যা হচ্ছে।
উদাহরণ: আমার 300 টি বাফার পয়েন্ট রয়েছে এবং একটি বহুভুজ শেফফাইলের সাথে প্রতিটি বাফারের ছেদ ক্ষেত্রটি আমার জানতে হবে। বহুভুজ আকৃতির ফাইলটিতে> 20,000 বহুভুজ রয়েছে। প্রক্রিয়াটি গতিতে স্থানিক সূচকগুলি ব্যবহার করার পরামর্শ দেওয়া হয়েছিল।
সুতরাং ... আমি যদি আমার বহুভুজ শেফফিলের জন্য একটি স্থানিক সূচক তৈরি করি তবে এটি কোনও উপায়ে ফাইলের সাথে "সংযুক্ত" হবে, বা সূচিটি কি একা দাঁড়িয়ে থাকবে? এটি হ'ল, এটি তৈরি করার পরে আমি কী কেবল বহু ছেঁড়া ফাইলটিতে আমার ছেদ ফাংশনটি চালাতে পারি এবং দ্রুত ফলাফল পেতে পারি? চৌরাস্তাটি "দেখবে" যে স্থানিক সূচকগুলি রয়েছে এবং কী করতে হবে তা জানেন? বা, আমাকে সূচীতে এটি চালানো দরকার, তারপরে এফআইডি বা এই জাতীয় কিছুগুলির মাধ্যমে ফলাফলগুলি আমার মূল বহুভুজ ফাইলের সাথে আবার যুক্ত করতে পারি?
আরটিআর ডকুমেন্টেশন আমাকে খুব বেশি সহায়তা করছে না (সম্ভবত আমি কেবল প্রোগ্রামিং শিখছি বলে)। তারা ম্যানুয়ালি তৈরি পয়েন্টগুলিতে পড়ার মাধ্যমে সূচি তৈরির উপায়টি প্রদর্শন করে এবং তারপরে এটি অন্যান্য ম্যানুয়ালি তৈরি করা পয়েন্টগুলির বিরুদ্ধে অনুসন্ধান করে, যা উইন্ডোর মধ্যে থাকা আইডিগুলি দেয়। বোধ হয়। তবে, তারা ব্যাখ্যা করে না যে এটি সূচক থেকে আসা কোনও মূল ফাইলের সাথে কীভাবে সম্পর্কিত।
আমি ভাবছি এটি অবশ্যই এরকম কিছু হবে:
- আমার বহুভুজ শেফফাইল থেকে প্রতিটি বহুভুজ বৈশিষ্ট্যের জন্য বাক্সগুলি টানুন এবং একটি স্থানিক সূচীতে এগুলি রাখুন, তাদের একটি আইডি প্রদান করুন যা শেফফাইলে তাদের আইডি হিসাবে একই।
- ছেদকৃত আইডিগুলি পেতে সূচকটি অনুসন্ধান করুন।
- তারপরে আমার ছেদটি কেবল আমার মূল শেফফিলের বৈশিষ্ট্যগুলিতে পুনরায় চালনা করুন যা আমার সূচককে জিজ্ঞাসা করে চিহ্নিত করা হয়েছিল (আমি নিশ্চিত না যে আমি এই শেষ অংশটি কীভাবে করব)।
আমার কি সঠিক ধারণা আছে? আমি কি কিছু মিস করছি?
এই মুহুর্তে আমি এই কোডটি এক পয়েন্টের শেফফিলের সাথে কাজ করার চেষ্টা করছি যা কেবলমাত্র একটি পয়েন্ট বৈশিষ্ট্য এবং> 20,000 বহুভুজন বৈশিষ্ট্যযুক্ত একটি বহুভুজ আকৃতি ফাইল রয়েছে।
আমি ফিওনা ব্যবহার করে শেফফিলগুলি আমদানি করছি, আরটি্রি ব্যবহার করে স্থানিক সূচক যুক্ত করছি এবং শ্যাপলি ব্যবহার করে ছেদটি করার চেষ্টা করছি।
আমার পরীক্ষার কোডটি দেখতে এমন দেখাচ্ছে:
#point shapefile representing location of desired focal statistic
traps = fiona.open('single_pt_speed_test.shp', 'r')
#polygon shapefile representing land cover of interest
gl = MultiPolygon([shape(pol['geometry']) for pol in fiona.open('class3_aa.shp', 'r')])
#search area
areaKM2 = 20
#create empty spatial index
idx = index.Index()
#set initial search radius for buffer
areaM2 = areaKM2 * 1000000
r = (math.sqrt(areaM2/math.pi))
#create spatial index from gl
for i, shape in enumerate(gl):
idx.insert(i, shape.bounds)
#query index for ids that intersect with buffer (will eventually have multiple points)
for point in traps:
pt_buffer = shape(point['geometry']).buffer(r)
intersect_ids = pt_buffer.intersection(idx)
তবে আমি টাইপ এরির পেতে থাকি: 'বহুভুজ' অবজেক্ট কল করা যায় না
TypeError: 'Polygon' object is not callable
আপনার আপডেটের উদাহরণটি পেয়ে shape
for i, shape in enumerate(gl):