আমার কাছে জিপ কোডগুলির একটি টেবিল রয়েছে যাতে প্রতিটি জিপ কোডের জন্য সেন্টার ল্যাট, এলএনজি অন্তর্ভুক্ত থাকে। আমি যেকোন স্বেচ্ছাচারী বিন্দু থেকে প্রদত্ত মাইল ব্যাসার্ধের মধ্যে জিপ কোডগুলির একটি তালিকা পেতে এটি ব্যবহার করি।
এটি আমার কাছে কেবল ঘটেছিল, কারণ একটি জিপের কেন্দ্র বিন্দু প্রদত্ত ব্যাসার্ধের মধ্যে নয়, এর অর্থ এই নয় যে জিপটি নিজেই ব্যাসার্ধের মধ্যে নেই।
আমি এখানে আমার অতি উন্নত শিল্প দক্ষতা ব্যবহার করে পয়েন্টটি চিত্রিত করতে:
সবুজ স্ট্রিপি ব্লবগুলি এ, বি এবং সি এর জিপ কোডগুলি উপস্থাপন করে
লাল smudges প্রতিটি জিপ কোডের জন্য ভৌগলিক কেন্দ্র
ফুচিয়া ডট হ'ল লক্ষ্য অবস্থান এবং ..
গলদা নীল বৃত্ত লক্ষ্য অবস্থান থেকে 1 মাইল ব্যাসার্ধ
আমি যদি গোলাপী ধর্ষণ থেকে 1 মাইল ব্যাসার্ধের মধ্যে সমস্ত জিপ কোডগুলির জন্য একটি কোয়েরি চালনা করি তবে কেবল জিপ কোড বি এবং সি ফিরে আসবে কারণ জিপ এ এর কেন্দ্র বিন্দু এক মাইল ব্যাসার্ধের মধ্যে নয়, যদিও গোলাপী ধূলা নিজেই স্পষ্টভাবে জিপ কোড এ is
SELECT *,
p.distance_unit
* DEGREES(ACOS(COS(RADIANS(p.latpoint))
* COS(RADIANS(z.y))
* COS(RADIANS(p.longpoint) - RADIANS(z.x))
+ SIN(RADIANS(p.latpoint))
* SIN(RADIANS(z.y)))) AS dist
FROM standard_zip AS z
JOIN ( /* these are the query parameters */
SELECT $lat AS latpoint, $lng AS longpoint,
$miles AS radius, 69 AS distance_unit
) AS p ON 1=1
WHERE z.y
BETWEEN p.latpoint - (p.radius / p.distance_unit)
AND p.latpoint + (p.radius / p.distance_unit)
AND z.x
BETWEEN p.longpoint - (p.radius / (p.distance_unit * COS(RADIANS(p.latpoint))))
AND p.longpoint + (p.radius / (p.distance_unit * COS(RADIANS(p.latpoint))))
ORDER BY dist
আমি কীভাবে এই প্রশ্নটি লিখব যাতে ফলাফলগুলিতে জিপ এ অন্তর্ভুক্ত থাকবে?
প্রতিটি জিপ কোডের জন্য আমার স্থানিক / জ্যামিতির অ্যাক্সেস রয়েছে যা প্রয়োজনে আমি টেবিলে যুক্ত করতে পারি, তবে মাইএসকিউএলে এই উদ্দেশ্যে কীভাবে এটি ব্যবহার করব তা আমার কোনও ধারণা নেই।
সম্পাদনা : আমি স্থিতিশীল ডেটার জন্য ওরাকল এবং মাইএসকিউএল ডক্স পড়তে একদিন ব্যয় করেছি এবং আমার স্থানিক ডেটা সফলভাবে মাইএসকিউএলে রূপান্তরিত করতে পরিচালিত হয়েছি । আমি কীভাবে অনুরূপ ক্যোয়ারী লিখতে যাব যাতে ল্যাট এবং লম্বার পরিবর্তে জ্যামিতি কলাম ব্যবহার করা হয়? আমি 2 ডি ডেটা ব্যবহার করছি .. জ্যামিতিটি হ'ল বহুভুজ এবং কেবলমাত্র বহুগুণ ..
আমি মনে করি আমি এটি এক ধরণের খুঁজে পেয়েছি ..
select
*
from
(
select
MIN(st_distance(geom, POINT(-82.765136, 28.0914015))) * 69 as miles,
zip
from
zip_spatial
group by
zip
order by
miles asc
) d
where
d.miles < 5
কারওর আরও ভাল, আরও কার্যকর সমাধান হওয়ার ক্ষেত্রে আমি এখনই অনুগ্রহ উন্মুক্ত রেখে দেব।