আমার একটি পোস্টজিআইএস ডিবি রয়েছে এবং আমি কোনও কোনও অঞ্চলের (একটি সীমাবদ্ধ বাক্স) পয়েন্টগুলি খুঁজে পেতে চাই। আমার দুটি সেট স্থানাঙ্ক রয়েছে, যা থেকে আমি বক্সটি গঠন করার জন্য চারটি আয়তক্ষেত্র পয়েন্ট পেতে পারি (যদি প্রয়োজন হয়)। আমার প্রশ্নের ডেটা কলামটির নাম দেওয়া হয়েছে 'পয়েন্ট' এবং এটি টাইপ পয়েন্টও।
- স্থানাঙ্কের চারটি সেট (ল্যাট / লম্বা) নির্দিষ্ট করতে এবং বাক্সের মধ্যে থাকা সমস্ত পয়েন্ট পেতে কোনও উপায় আছে কি?
- অথবা দুটি পয়েন্ট নির্দিষ্ট করুন এবং ডিবিটিকে আয়তক্ষেত্রের কোণগুলি কার্যকর করতে দিন এবং পয়েন্টগুলি এর মধ্যে ফিরিয়ে দিন
আমি কী অর্জন করতে চাই সে সম্পর্কে কেবল পরিষ্কার হয়ে যাচ্ছি না। 'ভ্যানিলা' বর্গক্ষেত্রের সমতুল্য যদি আমার বিন্দুটির পরিবর্তে লম্বা এবং দীর্ঘ ক্ষেত্র থাকে:
SELECT * FROM myTable where lat> xMin AND lat < xMax AND long > yMin and long < yMax
আপডেট সম্পাদনা:
আমি আন্ডারডार्কের সমাধানটি চেষ্টা করছি। প্রথমে আমার কাছে ST_MakePoint কনডাক্টর ছিল না (এখন আমি করি) এবং আমি এখনও একটি খুব অনুরূপ ত্রুটি পেয়েছি (কেবল একটি ভিন্ন চরিত্রের উপরে)।
SELECT * FROM myTable WHERE ST_Within(ST_MakePoint(point),GeometryFromText('POLYGON((75 20,80 30,90 22,85 10,75 20))',4326))
এবং আমি এই ত্রুটি পাচ্ছি:
ERROR: function st_makepoint(point) does not exist
LINE 1: SELECT * FROM triples WHERE ST_Within(ST_MakePoint(point),Ge...
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
********** Error **********
ERROR: function st_makepoint(point) does not exist
SQL state: 42883
Hint: No function matches the given name and argument types. You might need to add explicit type casts.
Character: 39
সম্পাদনা করুন:
স্বল্পমেয়াদে আমি এটির সাথে সমাধান করতে পারি:
SELECT * FROM triples WHERE box '((point1),(point2))' @> point
তবে পোস্টজিআইএস-এর কোনও কার্যই কেন আমার পক্ষে কাজ করছে না তা আমাকে কাজ করতে হবে।