আমার বিশ্বে একটি কাস্টম এসআরআইডি (গুগল ম্যাপের জন্য) ব্যবহার করে এরকম কিছু কাজ করা হয়েছে:
SELECT * FROM addresses WHERE ST_DWithin(location, ST_SetSRID(ST_MakePoint(longitude, latitude), 3785), radius);
যেখানে ধরণ location
একটি জ্যামিতি (পয়েন্ট, 3785), এবং longitude
, latitude
এবং radius
হয় ভাসে (যেমন -100, 44, 100W / 44N / 30 "ইউনিট" এর জন্য 30 - নিচে দেখুন)
দেখুন অন্য কোনও বস্তুর ব্যাসার্ধের মধ্যে সমস্ত বস্তু সন্ধান করার সর্বোত্তম উপায় কী? পোস্টগিস ডক্সে:
ST_DWithin(geometry, geometry, distance)
ফাংশন একটি সূচীবদ্ধ দূরত্ব অনুসন্ধান সম্পাদন একটি কুশলী উপায়। এটি দূরত্বের ব্যাসার্ধটি ঘিরে রাখার জন্য পর্যাপ্ত পরিমাণে অনুসন্ধানের আয়তক্ষেত্র তৈরি করে ফলাফলের সূচীত উপসেটটিতে একটি সঠিক দূরত্ব অনুসন্ধান করে কাজ করে।
আপডেট: ইউনিটগুলি এসআরআইডি ৩8585৮ এর জন্য মাইল নয় ... তারা মনে হয় হয় রেডিয়ান বা ডিগ্রি বা এর মতো কিছু। তবে আমার এসআরআইডি-র স্পেসিফিকেশন বলছে এর ইউনিটগুলি মিটার বা ডিগ্রি এবং এটি অবশ্যই কোনও একটি নয়, কমপক্ষে কোনও রূপান্তর ছাড়াই নয়:
alex=# select * from spatial_ref_sys where srid=3785;
srid | auth_name | auth_srid | srtext | proj4text
3785 | EPSG | 3785 | PROJCS["Popular Visualisation CRS / Mercator (deprecated)",GEOGCS["Popular Visualisation CRS",DATUM["Popular_Visualisation_Datum",SPHEROID["Popular Visualisation Sphere",6378137,0,AUTHORITY["EPSG","7059"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["EPSG","6055"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4055"]],UNIT["metre",1,AUTHORITY["EPSG","9001"]],PROJECTION["Mercator_1SP"],PARAMETER["central_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",0],EXTENSION["PROJ4","+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs"],AUTHORITY["EPSG","3785"],AXIS["X",EAST],AXIS["Y",NORTH]] | +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs