আরকিজি ব্যবহার করে আর্কজিআইএস ডেস্কটপে বিন্দু দিয়ে আরকিএসডিডি বহুভুজ নির্বাচন করছেন?


15

আমি ভাবতে থাকি যে আমি অবশ্যই কিছু মিস করছি, তবে আরকিজিএস 10 এর মাধ্যমে আরকিপিসের মাধ্যমে একটি বিন্দুতে (এক্স, ওয়াই) অবস্থানের একটি স্তর থেকে বৈশিষ্ট্যগুলি (বিশেষত বহুভুজগুলিতে) নির্বাচন করার জন্য আর্কজিআইএস 10 তে কোনও সরঞ্জাম বলে মনে হচ্ছে না। এই জাতীয় সরঞ্জামের পরামিতিগুলি কেবলমাত্র একটি স্তর নাম এবং একটি এক্সওয়াই অবস্থান হবে।

এই মুহুর্তে আমি পয়েন্টটি সম্বলিত একটি পয়েন্ট ফিচারক্লাস তৈরি করে এবং এটিতে একটি সিলেক্টায়ারবাইলোকেশন সম্পাদন করে কাজটি করব। যাইহোক, যখন বহুভুজ বৈশিষ্ট্য শ্রেণিটি ওরাকল এ থাকে (আরকএসডিই 9.x এর মাধ্যমে অ্যাক্সেস করা হয়) এবং 3.5 মিলিয়ন বহুভুজ থাকে যখন নির্বাচন করতে সময় লাগে 5 মিনিটের বেশি হতে পারে যখন আমার মনে হয় একটি দ্বিতীয় বা দুটি (কম কোড সহ) হবে আরো যথার্থ. বৈশিষ্ট্য শ্রেণীর একটি স্থানিক সূচক রয়েছে এবং আমি ভৌগলিক অ্যাক্সেস সীমাবদ্ধ করতে আরকিপি.এনভি.একসেন্ট (যা সিলেক্ট লেয়ারবাইলোশন উপেক্ষা করে বলে মনে হচ্ছে) ব্যবহার করার চেষ্টা করেছি তবে কার্য সম্পাদন খুব কম রয়েছে।

আরকিজিআইএস ডেস্কটপ 10 এবং আরকপি ব্যবহার করে এটি করার কি আরও দ্রুত উপায় আছে?


ফোরামস.আর্কগিজ.থ্রেডস / / -এ এখন এই সমাধানের সমাধান রয়েছে এবং আমি আজই এই তথ্যটি এখানে পরে সম্পাদনা করব - অনেক ধন্যবাদ জেসন শায়িয়ার এবং ক্রিস স্নাইডার
পলিজিও

2
এটির জন্য একটি নোট হিসাবে, আপনি সরঞ্জামটির রেফারেন্স পৃষ্ঠার নীচে একটি সরঞ্জাম দ্বারা সম্মানিত পরিবেশগুলি খুঁজে পেতে পারেন। সিলেক্টবাইকেশন কেবল বর্তমান ওয়ার্কস্পেস এবং আউটপুট সমন্বয় সিস্টেমকে সম্মান করে। help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//…
blord-castillo

উত্তর:


9

এর আর একটি পদ্ধতির স্থানগত সংযোজন সরঞ্জামটি ব্যবহার করা। উপরে হিসাবে আপনার ইনপুট বৈশিষ্ট্য স্তর হিসাবে পয়েন্ট এবং আপনার পরিচয় বৈশিষ্ট্য হিসাবে বহুভুজ স্তর ব্যবহার করুন।
SelectLayerByLocation মতো SpatialJoin করে ব্যাপ্তি পরিবেশ সম্মান।

targetlayer = layername
joinlayer=arcpy.PointGeometry(arcpy.Point(x, y))
fieldmappings = arcpy.FieldMappings()
fieldmappings.addTable(targetlayer)
arcpy.SpatialJoin_analysis(targetlayer, joinlayer, outputlayer, "JOIN_ONE_TO_MANY", "KEEP_COMMON", fieldmappings)

JOIN_ONE_TO_MANY পাল্টা স্বজ্ঞাত মনে হতে পারে, তবে যেহেতু আপনার কেবলমাত্র একটিতে যোগদানের বৈশিষ্ট্য রয়েছে তাই এই বিকল্পটির মূল কাজটি হ'ল সংহতকরণ এবং মার্জ বিধিগুলি বন্ধ করা। KEEP_COMMON নিশ্চিত করবে যে আপনার আউটপুট কেবলমাত্র বহুবিত্রে সীমাবদ্ধ যা আপনার পয়েন্টকে ছেদ করে। ফিল্ডম্যাপিংস কেবলমাত্র বহুভুজ স্তরটির আকার এবং বৈশিষ্ট্যগুলিতে আউটপুট বৈশিষ্ট্যগুলিকে সীমাবদ্ধ করবে; ডিফল্টটিতে বিন্দু স্তরের বৈশিষ্ট্যগুলিও অন্তর্ভুক্ত থাকে।

বাকি ডিফল্টগুলি সূক্ষ্মভাবে কাজ করবে, তাই আপনি বাকী যুক্তিগুলি ছেড়ে দিতে পারেন।


এই কোডটির জন্য অনেক ধন্যবাদ যাতে আমি চেষ্টা করি নি এমন বেশ কয়েকটি কৌশল রয়েছে। আমি এর আগে স্প্যাটিয়ালজয়িন চেষ্টা করেছিলাম (যাতে ভূ-প্রসেসিংয়ের পরিবেশকে আমি সম্মান করতে পারি) তবে সেই পরীক্ষার পাশাপাশি আপনার কৌশলটির পরীক্ষা এখন 10-10 সেকেন্ডের তুলনায় 4-5 মিনিটের প্রতিক্রিয়া বার দিয়ে আমাকে ছেড়ে গেছে ক্রিস স্নাইডার আমাকে নিয়ে গেলেন।
পলিজিও

আপনি কি স্পেশালজয়িনের সাথে ক্রিস স্নাইডারের কৌশল চেষ্টা করেছেন? আমি মনে করি বাফার কৌশলটি এত দ্রুত হওয়ার প্রধান কারণ হ'ল এটি বহুভুজ শ্রেণীর মেমরি অনুলিপি ব্যবহার করে। আমি-ভাবনা- স্থান অনুসারে নির্বাচনটি স্থানিক যোগদানের চেয়ে দ্রুত হওয়া উচিত, তবে আমি নিশ্চিত নই।
blord-castillo

ইন_ মেমরি বিটটি ব্যবহার না করে শেষ হয়েছে। এটি ইতিমধ্যে এতটা ছড়িয়ে পড়েছিল যে আমি তা রিজার্ভে রেখেছি। আমি মনে করি যে মূল জিনিসটি এক / কয়েকটি বহুভুজ (৩.৫ মিলিয়ন থেকে) পাওয়ার সীমা নির্ধারণ করছিল, যেটির জন্য আমাকে এক্স, ওয়াইয়ের চেক করা দরকার, তাড়াতাড়ি একটি স্থানীয় ফাইল জিওডাটাবেজে অনুলিপি করে ফেললাম। সুতরাং স্পেশালজয়িনের আগে সেই অংশটি করা আমার মনে হবে একই / অনুরূপ পারফরম্যান্স উন্নতির দিকে নিয়ে যায়।
পলিজিও

1

আমি ঠিক কিছু বুঝতে পেরেছি ...

আপনি যদি কোনও জিওপ্রসেসিং পরিষেবা বাস্তবায়নের জন্য এটি ব্যবহার করে থাকেন তবে আপনি তার পরিবর্তে আপনার বহুভুজ স্তর সহ একটি বৈশিষ্ট্য পরিষেবাটি প্রয়োগ করতে পারেন এবং বৈশিষ্ট্য পরিষেবাটিতে ক্যোয়ারী অপারেশনটি ব্যবহার করতে পারেন।

আপনি বৈশিষ্ট্য পরিষেবা ক্যোয়ারী অপারেশন সহ একটি সাধারণ এক্সওয়াই অবস্থান ব্যবহার করতে পারেন, পাশাপাশি আকার সহ আউটপুট বৈশিষ্ট্যগুলিও নিয়ন্ত্রণ করতে পারেন।

বহুভুজ বৈশিষ্ট্য শ্রেণিটি আপনি কতটা প্রকাশ করতে পারেন তার উপর আপনার বিধিনিষেধ থাকতে পারে, তবে আপনি যদি ইতিমধ্যে ভূ-প্রসেসিং পরিষেবাটিতে এটিকে অ্যাক্সেসযোগ্য করে তুলছেন তবে আপনার পাশাপাশি একটি বৈশিষ্ট্য পরিষেবাও তৈরি করতে সক্ষম হওয়া উচিত।


অন্যান্য প্রয়োজনীয়তা মেটাতে এটি একটি দরকারী চিন্তাভাবনা তবে এই ক্ষেত্রে ক্লায়েন্টের আবেদনটি খুব সহজ এবং আমার নিয়ন্ত্রণের বাইরে, সুতরাং আমি কেবল একটি জিওপ্রসেসিং পরিষেবা সরবরাহ করতে সক্ষম।
পলিজিও

আমি বুঝতে পেরেছিলাম যে কোনও জিওপ্রসেসিং পরিষেবা ব্যতীত অন্য যে কোনও কিছু ব্যবহারে নিষেধাজ্ঞা থাকতে পারে :) ব্যঙ্গাত্মকভাবে, আমি মনে করি যে একটি ফিচার পরিষেবা বাস্তবায়ন এবং রক্ষণাবেক্ষণের জন্য আরও অনেক সহজ একটি উপায়। এটি আপনাকে ব্যাখ্যা করতে পারে যে আপনি যে কার্যকারিতা চান তা কেন উপলব্ধ নয়; আপনি ইতিমধ্যে প্রতিটি প্রয়োগের স্তরে এটি করতে পারেন। নিশ্চিত হয়ে নিন যে আপনি পরবর্তী সংস্করণে একটি সরঞ্জাম হিসাবে এটি প্রয়োগের জন্য ESRI- কে একটি অনুরোধ প্রেরণ করেছেন।
blord-castillo

1

পুরানো আরকজিআইএস আলোচনা ফোরাম থেকে এই উত্তরটি এসেছে ।

আরও কিছু সংক্ষিপ্ত কোডের জন্য জেসন শিকারারকে ধন্যবাদ:

SelectLayerByLocation(in_layer=arcpy.PointGeometry(arcpy.Point(x, y)), select_features="mylayer") 

এবং বিশেষত ক্রিস স্নাইডারের কাছে একটি পারফরম্যান্স টিপের জন্য:

চারপাশে একটি দ্রুত কাজ আপনার পয়েন্টটি কিছুটা বাফার করতে পারে এবং তারপরে আপনার এসডিই ডেটার একটি ইন-মেমরি কপি (কপি ফিচারস সরঞ্জাম) তৈরি করতে বিশ্লেষণের পরিমাণ হিসাবে বাফার পরিমাণটি ব্যবহার করতে পারে এবং তারপরে ছোট এবং স্থানীয় ইন-মেমরি ডেটাসেটে একটি সিলেকবাইলোকেশন করতে পারে। এইভাবে আপনি সিলেকবাইকেশন সরঞ্জামটিকে বিশ্লেষণের পরিমাণের পরিবেশকে সম্মানিত করে যা এটি সাধারণত না করে। বিটিডাব্লু: বিশ্লেষণের পরিমাণের সাথে ওভারল্যাপ হওয়া কোনও বৈশিষ্ট্য অনুলিপি করা হবে কপিফিটচার্স সরঞ্জাম দিয়ে। আমি অবশ্যই সিলেকবাইকেশন সরঞ্জাম এবং কার্সার পদ্ধতি বিশ্লেষণের পরিমাণকে সম্মানিত করতে চাই ...

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.