হ্যাঁ, এর থেকে আরও ভাল উপায় আছে। আপনাকে একটি স্থানিক সূচক ব্যবহার করতে হবে । এই সূচকগুলি খুব দ্রুত জ্যামিতিগুলিকে খুব দ্রুত ফিল্টার করতে জ্যামিতির সম্পর্কে মেটাডেটা সংগঠিত করে, আপনার বর্ণিত কম্পিউটেশনগুলি এড়িয়ে অনেকগুলি সিপিইউ চক্র সাশ্রয় করে। আপনার নিজের একটি প্রয়োগ করার ঝামেলা করা উচিত নয় কারণ সমস্ত বড় রিলেশনাল ডেটাবেসগুলি তাদের সাথে যেতে একটি স্থানিক জ্যামিতির ধরণ এবং সূচি সরবরাহ করে।
আপনি যে বিষয়টি দেখতে চান তা হ'ল "দূরত্বের মধ্যে" ক্যোয়ারী (অন্য কোনও জ্যামিতির নির্দিষ্ট দূরত্বে জ্যামিতির জন্য ক্যোয়ারী)। এগুলি খুব স্ট্যান্ডার্ড এবং খুব বেশি সমস্যার সমাধান এবং উপরের সমস্ত ডাটাবেসে (এবং কয়েকটিতে নির্মিত) এটি সম্ভব:
- PostGIS:
ST_DWithin
- এসকিউএল সার্ভার:
STDistance
(এই ফাংশনের 3 ডি জিওগ্রাফিক সংস্করণে সূচক ব্যবহার সমর্থিত নয়)
- ওরাকল:
SDO_WITHIN_DISTANCE
(এটি সুস্পষ্টভাবে বলে না যে এটি সূচক ব্যবহারের সূত্রপাত করবে SDO_FILTER
the
- মাইএসকিউএল: এখনও এটি খুঁজে বের করছি।
সূচকের ব্যবহার ট্রিগার করার জন্য কার্যক্ষম
সবচেয়ে খারাপ ক্ষেত্রে যেখানে আপনার এই প্রশ্নের সাথে স্থানিক সূচকটি ব্যবহার করতে সিস্টেমকে পেতে সমস্যা হয়, আপনি একটি অতিরিক্ত ফিল্টার যুক্ত করতে পারেন। আপনি দৈর্ঘ্য 2 * (সার্চ দূরত্ব) এর পক্ষের সঙ্গে একটি বর্গক্ষেত্র সীমান্ত বক্স তৈরি চাই আপনার অনুসন্ধানের সময়ে কেন্দ্রিক এবং টেবিল জ্যামিতি 'বিরুদ্ধে বক্স সীমান্ত তুলনা যে প্রকৃত দূরত্ব পরীক্ষণ আগে। ST_DWithin
উপরের পোস্টজিআইএস এটি অভ্যন্তরীণভাবেই করে।
জিআইএস-এ দূরত্ব
যদিও স্থানিক সূচকগুলি দুর্দান্ত এবং আপনার সমস্যার একদম সঠিক সমাধান, দূরত্ব গণনাটি যৌক্তিকভাবে জটিল হয়ে উঠতে পারে। বিশেষত, আপনার ডেটা সঞ্চিত কী প্রক্ষেপণ (মূলত স্থানাঙ্ক সিস্টেমের জন্য সমস্ত প্যারামিটার) নিয়ে চিন্তা করতে হবে Most বেশিরভাগ 2 ডি প্রজেকশন (বিভিন্ন ল্যাট / লম্বা অনুমানের মতো কৌণিক স্থানাংক সিস্টেম ছাড়া অন্যান্য জিনিস) দৈর্ঘ্যটি উল্লেখযোগ্যভাবে বিকৃত করে। উদাহরণস্বরূপ, ওয়েব মার্কেটর প্রজেকশন (গুগল, বিং এবং প্রতিটি অন্যান্য প্রধান বেস মানচিত্র সরবরাহকারী ব্যবহার করেন) ক্ষেত্রটি নিরক্ষীয় স্থান থেকে আরও বাড়ার সাথে সাথে অঞ্চলগুলি এবং দূরত্বগুলি ক্রমশ প্রসারিত করে । আমি ভুল হতে পারি যেহেতু আমি জিআইএসে আনুষ্ঠানিকভাবে শিক্ষিত নই, তবে 2 ডি অনুমানের জন্য আমি যে সেরাটি দেখেছি তা হ'ল নির্দিষ্ট কিছু যা একটি থেকে সঠিক দূরত্বের প্রতিশ্রুতি দেয়সমগ্র বিশ্বের একক, ধ্রুবক পয়েন্ট । (না, প্রতিটি প্রশ্নের জন্য আলাদা প্রক্ষেপণ ব্যবহার করা ব্যবহারিক নয়; এটি আপনার সূচিগুলি অকেজো করে দেবে))
নীচের লাইনটি হ'ল আপনার গণিতটি সঠিক কিনা তা নিশ্চিত হওয়া দরকার। উন্নয়নের দৃষ্টিকোণ থেকে এটি করার সহজতম উপায় হ'ল কৌণিক প্রজেকশনগুলি (এগুলিকে প্রায়শই "ভৌগলিক" হিসাবে অভিহিত করা হয়) এবং ফাংশনগুলি যা একটি গোলক মডেল ব্যবহার করে গণিত করতে সহায়তা করে তবে এই গণনাগুলি 2 ডি সমকক্ষগুলির তুলনায় কিছুটা ব্যয়বহুল are এবং কিছু ডিবি তাদের সূচকগুলি সমর্থন করতে পারে না। আপনি যদি এগুলি ব্যবহার করে গ্রহণযোগ্য পারফরম্যান্স পেতে পারেন তবে, সম্ভবত এটিই যাওয়ার উপায়। আর একটি সাধারণ বিকল্প হ'ল আঞ্চলিক অনুমান (ইউটিএম অঞ্চলগুলির মতো) যা আপনার ডেটা বিশ্বের কোনও নির্দিষ্ট অংশে সীমাবদ্ধ থাকলে সঠিকভাবে দূরত্ব এবং অঞ্চল দুটিই পায়। আপনার অ্যাপ্লিকেশনটির জন্য সর্বোত্তম কী আপনার নির্দিষ্ট প্রয়োজনীয়তার উপর নির্ভর করবে,
আপনি স্থানিক সূচকগুলিতে অন্তর্নির্মিত ব্যবহার না করলেও এটি প্রযোজ্য। আপনি বর্তমানে ভবিষ্যতে কোন প্রযুক্তি বা কৌশল ব্যবহার করছেন বা ব্যবহার করছেন তা নির্বিশেষে আপনার ডেটাতে কিছুটা প্রক্ষেপণ রয়েছে এবং এটি ইতিমধ্যে বর্তমানে আপনার তৈরি করা কোনও প্রশ্ন এবং গুণাগুণকে প্রভাবিত করছে।