স্থানাঙ্কের একটি সেটের মধ্যে থাকা পয়েন্টগুলি সন্ধান করুন


9

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

  • স্থানাঙ্কের চারটি সেট (ল্যাট / লম্বা) নির্দিষ্ট করতে এবং বাক্সের মধ্যে থাকা সমস্ত পয়েন্ট পেতে কোনও উপায় আছে কি?
  • অথবা দুটি পয়েন্ট নির্দিষ্ট করুন এবং ডিবিটিকে আয়তক্ষেত্রের কোণগুলি কার্যকর করতে দিন এবং পয়েন্টগুলি এর মধ্যে ফিরিয়ে দিন

আমি কী অর্জন করতে চাই সে সম্পর্কে কেবল পরিষ্কার হয়ে যাচ্ছি না। 'ভ্যানিলা' বর্গক্ষেত্রের সমতুল্য যদি আমার বিন্দুটির পরিবর্তে লম্বা এবং দীর্ঘ ক্ষেত্র থাকে:

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

তবে পোস্টজিআইএস-এর কোনও কার্যই কেন আমার পক্ষে কাজ করছে না তা আমাকে কাজ করতে হবে।


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

1
@ শুভ .. সম্পন্ন হয়েছে।
অঙ্কুর

কাজ করে - জ্যামিতিফ্র্যামটেক্সট নির্বাচন করুন ('পলজিগন ((20 20,80 30,90 22,85 10,75 20%))', 4326) - কাজ?
শন

আপনি কি বোঝাতে চাচ্ছেন আমি নিশ্চিত নই? আপনি যা বলেছিলেন এবং সেগুলি কার্যকর হয়নি তার বিবিধ প্রকরণের চেষ্টা করেছি
অঙ্কুর

ST_MakePoint (পয়েন্ট)
আন্ডার ডার্ক

উত্তর:


9
SELECT * FROM myTable WHERE 
ST_Within(the_geom, GeometryFromText ('POLYGON((75 20,80 30,90 22,85 10,75 20))', 4326))

<- প্রয়োজনীয় হিসাবে স্থানাঙ্ক প্রতিস্থাপন


বোকা প্রশ্নের জন্য দুঃখিত, তবে 'দ্য জিওম' কী ... আমি আমার টেবিলের জিজ্ঞাসা থেকে নির্বাচন করুন * নির্বাচন করুন এবং সেই মানটি 'দ্য_জয়ম' হয়ে উঠবে
অঙ্কুর

দুঃখিত, অবশ্যই এটি কলামটি অনুসন্ধান করা হচ্ছে। আমি এটিকে ডিবি_ক্লোনম বা এটির মতো কিছু বলব, কিন্তু পোস্টগিস ডক্স অন্যথায় ভাবেন ... আপনি যখন তা জানেন তখন তা বোধগম্য হয়।
অঙ্কুর

1
আমি এটি চালানোর সময়, আমি একটি ত্রুটি পাচ্ছি যা বলে যে জ্যামিতিফ্র্যামটেক্সট উপস্থিত নেই। আমি postgis 2.0 ব্যবহার করছি। আমি st_geomfromtext চেষ্টাও করেছি।
পিকার্ডো

@unddark সম্ভবত আমি ভুল কিন্তু মনে হচ্ছে একটি প্রথম বন্ধনী অনুপস্থিত।
ডেভিড পাস্তোর

3

আপনার পয়েন্টগুলি থেকে আপনি বিবিওএক্স (বাউন্ডিং বাক্স) চান এমন শব্দগুলি - যাতে ST_Exant অনুকূল হবে।

BBOX2D

http://www.bostongis.com/postgis_extent_expand_buffer_distance.snippet

প্রদান করবে http://postgis.net/docs/ST_Extent.htm পৃষ্ঠা কিন্তু সার্ভারটি থাকার বিষয় নয়


পুনরায়: সার্ভার ... আমি জানি, আমি গুগলের ক্যাশে অনুলিপিগুলি দেখার চেষ্টা করেছি :)
অঙ্কুর
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.