ভেক্টর পয়েন্টের উপর ভিত্তি করে নিকটতম রাস্টার সেল সন্ধান করছেন?


9

আর্কজিআইএসে আমার দুটি স্তর রয়েছে: একটি ভেক্টর পয়েন্ট এবং অন্যটি একটি রাস্টার স্তর। আমি রাস্টার ডেটা গ্রিডের মান ভেক্টর পয়েন্টে যুক্ত করতে চাই। সমস্যাটি হ'ল ভেক্টর পয়েন্টটি বিদ্যমান কোনও রাস্টার গ্রিড থেকে দূরে রয়েছে, সুতরাং "নমুনা" কমান্ডটি সেই ভেক্টর পয়েন্টের জন্য কোনও মান দেয় না।

সুতরাং আমার প্রশ্নটি হল: আমি কীভাবে নিকটবর্তী রাস্টার সেলটি একটি ভেক্টর পয়েন্ট দেওয়া এবং সেই ঘর থেকে মানটি বের করতে পারি?

আসলে আমার দুটি জিনিস করতে হবে:

  1. একটি রেঞ্জারের মধ্যে আউটলাইনার সনাক্ত করুন (সাধারণত আমার বিদ্যমান রাস্টার থেকে 1-2 কোষ দূরে থাকে)
  2. তাদের নিকটবর্তী রাস্টার থেকে একটি মান নির্ধারণ করুন, যদি তারা একটি ব্যাপ্তিতে থাকে

সম্পাদিত: আমার প্রায় 3000 ভেক্টর পয়েন্ট রয়েছে এবং আমার সমস্যাটি হ'ল: এখানে চিত্র বর্ণনা লিখুন

আমাকে ভেক্টর পয়েন্টগুলিতে অবস্থানের ভিত্তিতে রাস্টার মান যুক্ত করতে হবে। আমি "নমুনা" সরঞ্জামটি ব্যবহার করেছি এবং এটি বেশিরভাগ পয়েন্টের জন্য ভাল কাজ করে।

তবে এরকম পরিস্থিতি আছে এখানে চিত্র বর্ণনা লিখুন

ডান পয়েন্ট রাস্টার থেকে মূল্য পেতে পারে ("নমুনা" কাজ করে) তবে বাম দিকটি বিন্যাস সংক্রান্ত সমস্যার কারণে পারে না cannot

পোলিগন থেকে রাস্টার কাজ করছে না কারণ আমি ত্রুটি বার্তা পেয়েছি যে আমি তাদের ভেক্টরে পরিণত করতে পারি না কারণ তারা ডোমেনের বাইরে। এছাড়াও আমার এই মত পয়েন্ট আছেএখানে চিত্র বর্ণনা লিখুন

এই উপরের পয়েন্টগুলির কোনও মান পাওয়া উচিত নয় কারণ তারা রাস্টার থেকে খুব দূরে।

আমি কিছুটা হলেও কাজ করার কথা ভেবেছিলাম:

পদক্ষেপ 1. প্রথমে "নমুনা" করুন

পদক্ষেপ 2. "নমুনা" ক্রিয়াকলাপের পরে নাল মানটি নির্বাচন করুন

পদক্ষেপ 3. নাল পয়েন্টের উপর ভিত্তি করে বাফার অঞ্চলগুলি (1 দশমিক ডিগ্রির মধ্যে) তৈরি করুন

পদক্ষেপ ৪. জোনাল পরিসংখ্যান ব্যবহার করবেন ?? ? বাফারের সমস্ত রাস্টার কোষ থেকে লুপ করতে অন্যান্য সরঞ্জামগুলি, নিকটতমটি সন্ধান করুন, এর মানটি বের করুন এবং এটি ভেক্টর পয়েন্টে রাখুন।

আমি ৪ র্থ ধাপে আটকে আছি Arc আমি জানি না আর্কএসডিকে কোন সরঞ্জামটি আমি এই ফাংশনটি অর্জন করতে ব্যবহার করতে পারি।

অন্যথায় ... এটি মোকাবেলা করার জন্য আপনার কি আরও ভাল ধারণা আছে?

আমার কাছে 20 টি রাস্টার স্তর রয়েছে এবং আমি এটি স্বয়ংক্রিয়ভাবে তৈরি করতে চাই (মডেল বিল্ডার এবং আরকোবজেক্ট ব্যবহার করে)।


@ হুইবার: আপনার পদ্ধতিটি খুব চালাক বলে মনে হচ্ছে। আমার প্রশ্ন হ'ল আমি বিশ্বব্যাপী ডেটা পরিচালনা করছি এবং আমি কীভাবে আউটলাইনিং রাস্টারটির জন্য x0 এবং x1 নির্ধারণ করতে পারি?
দেখা হয়েছে

প্রকল্পে যুক্ত করার পরে এর বৈশিষ্ট্যগুলি পর্যালোচনা করুন।
হোয়বার

1
জোনাল পরিসংখ্যান একটি মৃত শেষ। আপনার সম্পাদনার উপর ভিত্তি করে, একটি সহজ প্রত্যক্ষ সমাধান রয়েছে: রাস্টারটিকে তার সীমানার চারদিকে কিছুটা প্রসারিত করুন এবং প্রসারিত রাস্টারকে নমুনা করুন। এটি করার অনেকগুলি উপায় রয়েছে তবে রাস্টার গণনার সাথে তাদের সকলের জন্য একটু সুবিধা দরকার। সর্বাধিক সহজগুলির মধ্যে একটি হ'ল বিশ্লেষণের পরিমাণ বাড়ানো, একটি কেন্দ্রিক গড় গণনা করা এবং ('কন' ব্যবহার করে) এর মানগুলি নোডাটা সীমানা অঞ্চলে আটকানো। এটি প্রতিটি অফ-রাস্টার নমুনা অবস্থানে নিকটবর্তী রাস্টার মানগুলিকে বোঝায়।
whuber

@ হুবহু আরেকটি সমস্যা হ'ল আমি জানি না যে আউটলাইনাররা কোথায়। সুতরাং আমার প্রক্রিয়াটিতে আসলে 2 টি পদ্ধতি রয়েছে: আউটলাইনারগুলি সনাক্ত করুন এবং তাদের মান নির্ধারণ করুন।
দেখা হয়েছে

"আউটলাইনার" কী? যদি এটি কোনও বিন্দু রাস্টার মান দ্বারা আচ্ছাদিত না হয় তবে আপনি সহায়তা করতে পারবেন না তবে তাদের সন্ধান করতে পারেন: এটি এমন পয়েন্ট যা আপনি Sampleসরঞ্জামটি প্রয়োগ করার সময় কোনও মান পাবেন না ।
whuber

উত্তর:


8

একটি রাস্টার বাহ্যরেখা মূলের নীচে বাম দিকে আবদ্ধ আয়তক্ষেত্র ধারণ করে, স্থানাঙ্ক (বলে) (x0, y0) এবং উপরের ডানদিকে (x1, y1): এগুলি যে কোনও রাস্টার সহজেই আবিষ্কার করা বৈশিষ্ট্য। আপনি এই তথ্য ব্যবহার করে রাস্টার এর সীমার বাইরে যে কোনও পয়েন্টকে রাস্টার সীমানার নিকটতম বিন্দুতে সরাতে এবং নতুন স্থানে রাস্টার মানগুলি বের করতে পারেন।

এর মতো কাজগুলি প্রায়শই নিম্ন মাত্রা বিবেচনা করে সহজেই কাজ করা হয় । এক-মাত্রিক রাস্টার এর মাত্রা কেবল সংখ্যার বিরতি, x0 থেকে x1> x0, প্রচলিতভাবে লেখা [x0, x1] বলুন। ধরুন আপনি প্রদত্ত সংখ্যার x এর ব্যবধানে নিকটতম পয়েন্টটি সন্ধান করতে চান। এখানে তিনটি কেস রয়েছে: x <x0 (x বাম দিকে রয়েছে), x0 <= x <= x1 (এক্স ব্যবধানে রয়েছে), এবং x1 <x (এক্স ডানদিকে)। স্পষ্টত নিকটতম পয়েন্টগুলি যথাক্রমে x0, x এবং x1। এই ফলাফলের জন্য একটি সূত্র হ'ল

x -> মিনিট (সর্বোচ্চ (x, x0), x1),

যেমন আপনি তিনটি ক্ষেত্রে পৃথক পৃথকভাবে বিবেচনা করে দেখতে পারেন।

কারণ একজন রাস্টারের পরিধি দুটি অন্তর, [x0, x1] * [y0, y1] এর কার্টেসিয়ান পণ্য, একই সূত্রটি দুটি মাত্রায় কাজ করে। প্রতিটি বিরতিতে কেবল এটি প্রয়োগ করুন। সুতরাং প্রজেক্ট পয়েন্টের স্থানাঙ্কগুলি হিসাবে গণনা করা যেতে পারে (একটি ফিল্ড ক্যালকুলেটরে, বলুন)

(x, y) -> (মিনিট (সর্বোচ্চ (x, x0), x1), নূন্যতম (সর্বোচ্চ (y, y0), y1)

এই সূত্রটি এখানে 100 পয়েন্টের সাথে এলোমেলোভাবে এবং গ্রিডের সীমার মধ্যে রেখে দেওয়া হয়েছে:

ব্যক্তিত্ব

ড্যাশযুক্ত রেখাগুলি দৃষ্টিভঙ্গি করে এমন স্থানগুলিতে সীমাবদ্ধ করে যেখানে তারা সরানো হবে।

এই গণিত স্থানাঙ্কগুলি থেকে একটি পয়েন্ট স্তর তৈরি করুন এবং Sampleরাস্টার মানগুলি বের করার জন্য সরঞ্জামটি প্রয়োগ করুন । ফলাফলগুলিকে মূল পয়েন্ট স্তরটিতে ফিরে যান।

একটি ব্যবহারিক বিষয় হিসাবে , ভাসমান পয়েন্ট রাউন্ডঅফের সমস্যাগুলি এড়াতে যা গ্রিডের সীমার মধ্যে থাকা নতুন পয়েন্টগুলিকে আটকাতে পারে, তার জন্য X0 এবং y0 কে সত্যিকারের উত্সের চেয়ে কিছুটা বড় করা বুদ্ধিমানের কাজ হবে (আপনি তাদের মধ্যে অর্ধেক সেলসাইজ যুক্ত করতে পারেন) এবং, একইভাবে, x1 এবং y1 সামান্য ছোট করুন।

সংক্ষেপে , কর্মপ্রবাহে মূল পয়েন্ট স্তরটির টেবিলের দুটি ক্ষেত্র (নতুন স্থানাঙ্ক) গণনা করা, সেই নতুন স্থানাঙ্কগুলি থেকে একটি পয়েন্ট ইভেন্ট স্তর তৈরি করা, Sampleসরঞ্জামটি চালানো , এবং একটি ডেটাবেস জয়েন (একটি স্থানিক যোগ নয়) সম্পাদন করা থাকে।


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

বিকল্পভাবে, আপনি কেবল তার সীমানা বরাবর মানগুলির সাথে একটি পূর্ণসংখ্যার গ্রিড তৈরি করতে একটি রাস্টার গণনা ব্যবহার করে সেলেনিয়াসের সমাধানটি ত্বরান্বিত করতে পারেন । রূপান্তর যে একটি বিন্দু স্তরে দ্রুত এবং সহজ, কারণ এটি কয়েক পয়েন্ট থাকবে। এটিকে "সীমানা স্তর" বলি call সীমানা স্তর বিন্দুতে গ্রিডের নমুনা করুন, এর ফলে গ্রিডের মানগুলি সীমানা স্তরটির বৈশিষ্ট্য সারণীতে অনুলিপি করুন। Sampleমূল পয়েন্ট স্তরটি নিয়ে চলার পরে , সমস্ত পয়েন্টগুলি সরিয়ে ফেলুন যেখানে একটি নমুনা সফলভাবে প্রাপ্ত হয়েছিল। স্থানিকভাবে স্যাম্পলিং প্রক্রিয়াটি শেষ করতে বাকি পয়েন্টগুলিতে সীমানা স্তরটিতে যোগদান করুন।

( কেবলমাত্র তার সীমানা বরাবর মান সহ গ্রিড তৈরির একটি উপায় হ'ল সীমানাটি ব্যর্থ হয়ে ফোকাস পাড়ার অপারেশন প্রয়োগ করা: উদাহরণগুলির মধ্যে রয়েছে opালু সন্ধান, পাহাড়ের ঝাঁকুনি, 3 এক্স 3 পাড়ার ফোকাসের পরিসংখ্যান This এটি একটি একক সেল- সহ গ্রিড তৈরি করে- তার প্রান্ত কাছাকাছি NoData এর পুরু রিং। NoData কোষ এবং NoData এবং তথ্য কোষের মধ্যে ধর্মান্তরিত সনাক্ত করতে IsNull এবং SetNull ব্যবহার একটি গ্রিড NoData মূল্যবোধের পূর্ণ উত্পাদন করে ছাড়া সীমানা প্রায়।)


সংক্ষেপে, কর্মপ্রবাহটি মূল পয়েন্ট স্তরটির টেবিলের দুটি ক্ষেত্র (নতুন স্থানাঙ্ক) গণনা করে, সেই নতুন স্থানাঙ্ক থেকে একটি পয়েন্ট ইভেন্ট স্তর তৈরি করে, নমুনা সরঞ্জামটি চালাচ্ছে এবং একটি ডেটাবেস জয়েন (একটি স্থানিক যোগ নয়) সম্পাদন করে। আপনি কীভাবে এটি ব্যাখ্যা করতে পারেন? (আপনি আমার সমস্যার জন্য আমার ছবিগুলি দেখতে পারেন)। ধন্যবাদ!
দেখা

আমার প্রায় 15% পয়েন্টে এই সমস্যা রয়েছে। আপনি প্রতিটি পয়েন্টের জন্য x0 এবং x1 কীভাবে নির্ধারণ করতে পারেন?
দেখা

1
গ্রিডগুলির জন্য @ x0, y0, x1, y1 দেখুন আর্কজিআইএস সহায়তা বা এই সাইটের বেশ কয়েকটি থ্রেডে বর্ণিত ক্ষেত্র ক্যালকুলেটরে বিন্দু স্থানাঙ্ক (x, y) গণনা করা যেতে পারে। একটি এক্সওয়াই পয়েন্ট স্তর তৈরি করার জন্য মেনু আইটেম রয়েছে এবং ডাটাবেস যোগ দেয়: এগুলি মানক, বেসিক ক্রিয়াকলাপ।
হোয়বার

4

আপনি রাস্টারকে পয়েন্টগুলিতে ( রেফ ) রূপান্তর করতে পারেন এবং তারপরে পয়েন্টগুলিতে (রাস্টারগুলি থেকে) পয়েন্টে স্থানিক সংযোগ করতে পারেন।

(আমি কেবল শিখেছি যে পয়েন্টগুলি স্থানগতভাবে গতকাল এখানে যোগদান করা যেতে পারে )


1
চতুর পদ্ধতির জন্য +1। বড় গ্রিডগুলির জন্য, যেখানে এটি অচল হয়ে যায়, কেবলমাত্র রাস্টার সীমানা কোষগুলিকে পয়েন্টে রূপান্তর করুন । (আমি আমার উত্তর শেষে আলোচনা করা হয়েছে।)
whuber

আমি প্রতিটি রাস্টার স্তর কোষ হাজার হাজার আছে এবং আমি 20 স্তর যে ভালো সময় গ্রাসকারী থাকে ... তাই ভেক্টর পয়েন্ট ঐ বাঁক ...
দেখা

এছাড়াও, যখন আমি বহুভুজকে রাস্টার করার চেষ্টা করি তখন আমি ERROR 000864 ইনপুট রাস্টার হিসাবে একটি ত্রুটি বার্তা পাই: ইনপুটটি নির্ধারিত ডোমেনের মধ্যে নেই। ত্রুটি 000863: অবৈধ জিপি ডেটা টাইপ
দেখা হয়েছে

রাস্টারকে পয়েন্টে রূপান্তর করার সময় আপনি কি ত্রুটি পান?
djq

@ সেলেনিয়াস এটি কাজ করে তবে এটি একটি দীর্ঘ সময় নিয়েছে।
দেখা হয়েছে

1

আপনি রাস্টারকে বহুভুজ সরঞ্জামটি ব্যবহার করে একটি বহুভুতে রূপান্তর করতে পারেন এবং স্থানিক জোড় চালাতে পারেন (পয়েন্ট স্তরটিতে ডান ক্লিক করুন এবং যোগদান এবং সংযুক্তি নির্বাচন করুন - যোগদান করুন, প্রথম ড্রপ ডাউন স্পেসিয়াল জয়েন বিকল্পটি নির্বাচন করুন এবং নিকটতম নির্বাচন করুন পাঠ্য বোতামে বিকল্প করতে) বা নিকটবর্তী সরঞ্জামটি ব্যবহার করুন।


যথাযথ রাস্টার মানটি বের করতে আপনি স্থানিক যোগদানের ফলাফলটি কীভাবে ব্যবহার করবেন?
whuber

@ হুবুহু, আপনি যখন "এটির নিকটতম" বিকল্পটি বেছে নেবেন তখন স্থান সংযুক্তি নিকটবর্তী বহুভুজ বৈশিষ্ট্যটি নির্বাচন করে (রাস্টার থেকে বহুভোজন সরঞ্জামে ফলাফল) এবং বিন্যাস বৈশিষ্ট্যে এই বৈশিষ্ট্যটির তথ্য যুক্ত করে। আপনি কি এই প্রশ্ন জিজ্ঞাসা করা হয়েছে? আমার প্রাথমিক উত্তরটি তার সম্পাদনার আগে পোস্ট করা হয়েছিল। আমি অনুমান করছি শেনের রাস্টার বহুভুতে রূপান্তর করতে খুব বড় হতে পারে?
আর্টওয়ার্ক 21

ধারণাটি নিকটতম রাস্টার খুঁজে পাওয়া যায় না। সত্যিই, যা চেয়েছিল তা হ'ল কোনও রাষ্টারের মানগুলি তার মূল সীমা ছাড়িয়ে যাওয়ার এক উপায়। প্রশ্নটি নিকটতম প্রতিবেশী পদ্ধতির প্রস্তাব দেয়: রাস্টারটির কাছাকাছি নয় এমন যে কোনও নিকটে অবস্থিত, রাস্টারটির নিকটতম সেলটি সন্ধান করুন এবং সেই ঘরের মানটি ব্যবহার করুন।
whuber

আপনার শেষ মন্তব্যটি পুনরায় পড়ার পরে, মনে হচ্ছে আপনি রাস্টারটিকে "বহুভুজ" হিসাবে নয় বরং প্রতিটি কোষের জন্য একটি বহুভুজ (বা কোষের সংলগ্ন সেট) দিয়ে বহুভুজ স্তরতে পরিণত করার প্রস্তাব দিচ্ছেন । যদি তা হয় তবে এটি খুব ছোট রাস্টারদের সাথে সফল হতে পারে তবে আপনি কেন এটি প্রস্তাব করেন - এটি একটি জটিল, ব্যয়বহুল অপারেশন (এবং কেবলমাত্র পূর্ণসংখ্যার গ্রিডগুলির জন্য কাজ করে) - এর আগে প্রস্তাবিত অনুরূপ তবে আরও দক্ষ সমাধানের পরিবর্তে? আপনার সমাধান কি সুবিধা দেয়?
whuber

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