এই মাসে আমি জিআইএসের প্রতি পিএইচপি এবং মাইএসকিউএলে বেশ কিছুটা প্রোগ্রামিং করেছি। নেট ঘুরে বেড়ানো, আমি আসলে কিছু খুঁজে পেতে খুব কষ্ট পেয়েছিলাম hard ভৌগলিক গণনা দুটি অবস্থানের মধ্যে দূরত্ব সন্ধান করতে যাতে আমি সেগুলি এখানে ভাগ করে নিতে চাই।
দুটি পয়েন্টের মধ্যে দূরত্ব গণনা করার সহজ উপায়টি হচ্ছে একটি ত্রিভুজের হাইপেনটিউজ (A² + B² = C²) গণনা করার জন্য পাইথাগোরিয়ান সূত্র ব্যবহার করা। এটি হিসাবে পরিচিত ইউক্লিডীয় দূরত্ব.
এটি একটি আকর্ষণীয় সূচনা কিন্তু এটি ভূগোলের সাথে প্রযোজ্য নয় যেহেতু অক্ষাংশ এবং দ্রাঘিমাংশের রেখাগুলির মধ্যে দূরত্ব রয়েছে সমান দূরত্ব নয় পৃথক্. নিরক্ষীয় অঞ্চলের কাছাকাছি যাওয়ার সাথে সাথে অক্ষাংশের রেখাগুলি আরও আলাদা হয়ে যায়। আপনি যদি কিছু ধরণের সরল ত্রিভুজ সমীকরণ ব্যবহার করেন তবে এটি পৃথিবীর বক্রতার কারণে এক জায়গায় দূরত্ব সঠিকভাবে পরিমাপ করতে পারে এবং অন্যদিকে মারাত্মক ভুল হতে পারে।
দুর্দান্ত বৃত্তের দূরত্ব
যে পথগুলি পৃথিবী জুড়ে দীর্ঘ দূরত্বে ভ্রমণ করে সেগুলি হিসাবে পরিচিত দুর্দান্ত বৃত্তের দূরত্ব। এটি হচ্ছে ... একটি গোলকের দুটি পয়েন্টের মধ্যে সংক্ষিপ্ততম দূরত্ব একটি ফ্ল্যাট মানচিত্রে থাকা পয়েন্টগুলির চেয়ে পৃথক is অক্ষাংশ এবং দ্রাঘিমাংশ রেখাগুলি সামঞ্জস্যপূর্ণ নয় এর সাথে একত্রিত করুন ... এবং আপনি একটি কঠিন গণনা পেয়েছেন।
দুর্দান্ত চেনাশোনাগুলি কীভাবে কাজ করে তার একটি দুর্দান্ত ভিডিও ব্যাখ্যা এখানে।
দ্য হাভারসাইন সূত্র ula
পৃথিবীর বক্রতা ব্যবহার করে দূরত্বটি অন্তর্ভুক্ত করা হয়েছে হ্যাভারসাইন সূত্রযা পৃথিবীর বক্রতার জন্য ত্রিকোণমিতি ব্যবহার করে। যখন আপনি পৃথিবীতে 2 টি জায়গার মধ্যে দূরত্বটি খুঁজে পাচ্ছেন (কাকটি উড়ে যাওয়ার সাথে সাথে), একটি সরল রেখাটি সত্যই একটি খিলান।
এটি এয়ার ফ্লাইটে প্রযোজ্য - আপনি কি কখনও ফ্লাইটের প্রকৃত মানচিত্রের দিকে লক্ষ্য করেছেন এবং লক্ষ্য করেছেন যে তারা খিলানযুক্ত রয়েছে? এর কারণ এটি সরাসরি অবস্থানের চেয়ে দুটি পয়েন্টের মধ্যে একটি খিলানটিতে উড়ে যাওয়া ছোট।
পিএইচপি: অক্ষাংশ এবং দ্রাঘিমাংশের 2 পয়েন্টের মধ্যে দূরত্ব গণনা করুন
যাইহোক, এখানে দুটি পয়েন্টের মধ্যে দূরত্ব গণনার জন্য পিএইচপি সূত্রটি (মাইল বনাম কিলোমিটার রূপান্তর সহ) দুটি দশমিক জায়গায় গোল করা হয়েছে।
function getDistanceBetweenPointsNew($latitude1, $longitude1, $latitude2, $longitude2, $unit = 'miles') {
$theta = $longitude1 - $longitude2;
$distance = (sin(deg2rad($latitude1)) * sin(deg2rad($latitude2))) + (cos(deg2rad($latitude1)) * cos(deg2rad($latitude2)) * cos(deg2rad($theta)));
$distance = acos($distance);
$distance = rad2deg($distance);
$distance = $distance * 60 * 1.1515;
switch($unit) {
case 'miles':
break;
case 'kilometers' :
$distance = $distance * 1.609344;
}
return (round($distance,2));
}
এসকিউএল: অক্ষাংশ এবং দ্রাঘিমাংশ ব্যবহার করে মাইলের মধ্যে দূরত্ব গণনা করে একটি সীমার মধ্যে সমস্ত রেকর্ড পুনরুদ্ধার করা
নির্দিষ্ট দূরত্বের মধ্যে সমস্ত রেকর্ড সন্ধানের জন্য গণনা করার জন্য এসকিউএল ব্যবহার করাও সম্ভব। এই উদাহরণস্বরূপ, আমি মাইএসটিউলে আমার টেবিলটি অনুসন্ধান করতে যাচ্ছি $ অক্ষাংশ এবং $ দ্রাঘিমাংশে আমার অবস্থানের ভেরিয়েবল $ দূরত্বের (মাইলসে) এর চেয়ে কম বা সমান সমস্ত রেকর্ড সন্ধান করতে:
একটি নির্দিষ্ট মধ্যে সমস্ত রেকর্ড পুনরুদ্ধার জন্য ক্যোয়ারী দূরত্ব অক্ষাংশ এবং দ্রাঘিমাংশের দুটি পয়েন্টের মধ্যে মাইল দূরত্ব গণনা করে হ'ল:
$query = "SELECT *, (((acos(sin((".$latitude."*pi()/180)) * sin((`latitude`*pi()/180)) + cos((".$latitude."*pi()/180)) * cos((`latitude`*pi()/180)) * cos(((".$longitude."- `longitude`)*pi()/180)))) * 180/pi()) * 60 * 1.1515) as distance FROM `table` WHERE distance <= ".$distance."
আপনার এটি কাস্টমাইজ করতে হবে:
- itude দ্রাঘিমাংশ - এটি একটি PHP পরিবর্তনশীল যেখানে আমি বিন্দুর দ্রাঘিমাংশ পার করছি passing
- itude অক্ষাংশ - এটি একটি PHP পরিবর্তনশীল যেখানে আমি বিন্দুর দ্রাঘিমাংশ পার করছি passing
- $ দূরত্ব - এটিই সেই দূরত্ব যা আপনি সমস্ত রেকর্ড কম বা সমান খুঁজতে চাইবেন।
- টেবিল - এটি টেবিল… আপনি এটি আপনার টেবিলের নামের সাথে প্রতিস্থাপন করতে চাইবেন।
- অক্ষাংশ - এটি আপনার অক্ষাংশের ক্ষেত্র।
- দ্রাঘিমা - এটি আপনার দ্রাঘিমাংশের ক্ষেত্র।
এসকিউএল: অক্ষাংশ এবং দ্রাঘিমাংশ ব্যবহার করে কিলোমিটারগুলিতে দূরত্ব গণনা করে একটি সীমার মধ্যে সমস্ত রেকর্ড পুনরুদ্ধার করা হচ্ছে
এবং মাইএসকিউএলে কিলোমিটার ব্যবহার করে এসকিউএল ক্যোয়ারী এখানে রয়েছে:
$query = "SELECT *, (((acos(sin((".$latitude."*pi()/180)) * sin((`latitude`*pi()/180)) + cos((".$latitude."*pi()/180)) * cos((`latitude`*pi()/180)) * cos(((".$longitude."- `longitude`) * pi()/180)))) * 180/pi()) * 60 * 1.1515 * 1.609344) as distance FROM `table` WHERE distance <= ".$distance."
আপনার এটি কাস্টমাইজ করতে হবে:
- itude দ্রাঘিমাংশ - এটি একটি PHP পরিবর্তনশীল যেখানে আমি বিন্দুর দ্রাঘিমাংশ পার করছি passing
- itude অক্ষাংশ - এটি একটি PHP পরিবর্তনশীল যেখানে আমি বিন্দুর দ্রাঘিমাংশ পার করছি passing
- $ দূরত্ব - এটিই সেই দূরত্ব যা আপনি সমস্ত রেকর্ড কম বা সমান খুঁজতে চাইবেন।
- টেবিল - এটি টেবিল… আপনি এটি আপনার টেবিলের নামের সাথে প্রতিস্থাপন করতে চাইবেন।
- অক্ষাংশ - এটি আপনার অক্ষাংশের ক্ষেত্র।
- দ্রাঘিমা - এটি আপনার দ্রাঘিমাংশের ক্ষেত্র।
আমি এই কোডটি একটি এন্টারপ্রাইজ ম্যাপিং প্ল্যাটফর্মে ব্যবহার করেছি যা আমরা উত্তর আমেরিকা জুড়ে এক হাজারেরও বেশি অবস্থানের সাথে খুচরা দোকানে ব্যবহার করেছি এবং এটি সুন্দরভাবে কাজ করেছে।
ভাগ করে নেওয়ার জন্য আপনাকে অনেক ধন্যবাদ। এটি ছিল একটি সহজ অনুলিপি এবং পেস্ট কাজ এবং দুর্দান্ত কাজ করে। আপনি আমাকে অনেক সময় বাঁচিয়েছেন।
সি-তে যে কারও কাছে পোর্টিংয়ের জন্য এফওয়াইআই:
দ্বিগুণ ডিগ্রি 2 ডিগ্রি (ডাবল ডিগ্রি) {রিটার্ন ডিগ্রি * (3.14159265358979323846 / 180.0); }
পোস্ট করার খুব সুন্দর টুকরো - খুব সুন্দর কাজ করেছে - আমাকে কেবল দীর্ঘস্থায়ী টেবিলের নামটি পরিবর্তন করতে হয়েছিল। এটি খুব দ্রুত কাজ করে .. আমার কাছে যথেষ্ট সংখ্যক ল্যাট-ল্যাং রয়েছে (<400) তবে আমি মনে করি এটি সুন্দরভাবে স্কেল করবে। দুর্দান্ত সাইটটিও - আমি এটি কেবল আমার ডেল.ইসিও.উস অ্যাকাউন্টে যুক্ত করেছি এবং নিয়মিত ফিরে যাব।
পিটার এবং কেরিকে অনেক ধন্যবাদ! আপনি যদি জিআইএস প্রকল্পগুলিতে কাজ করতে চান তবে আমি সুপারিশ করব:
আপনাকে অনেক ধন্যবাদ ... 😀
আমি দূরত্বের গণনার জন্য পুরো দিন অনুসন্ধান করেছি এবং হার্ভারসাইন অ্যালগরিদমটি পেয়েছি, কীভাবে এটি একটি বর্গ স্টেটমেন্টে রাখতে হবে তার উদাহরণ দেওয়ার জন্য আপনাকে ধন্যবাদ। ধন্যবাদ এবং শুভেচ্ছা, ড্যানিয়েল
সাহায্য করতে পেরে খুশি, বন্ধু!
এখন আমি এমন একটি 'বহুভুজ' পিএইচপি ফাংশনের সন্ধান করছি যা অনুক্রমিক দ্রাঘিমাংশ এবং দ্রাঘিমাংশ স্থানাঙ্কগুলির একটি অ্যারে নেবে এবং বহুবর্ণের মধ্যে বা বাহিরে অন্য কোনও বিন্দু রয়েছে কিনা তা খুঁজে বের করবে।
আমি খুঁজে পাওয়া যায় নি বহুভুজের কোন বিন্দু নির্ধারণের জন্য সমীকরণ!
আমি মনে করি আপনার এসকিউএল একটি বিবৃতি প্রয়োজন।
WHERE দূরত্বের পরিবর্তে <= $ দূরত্বের আপনার প্রয়োজন হতে পারে
HAVING দূরত্ব <= $ দূরত্ব ব্যবহার করুন
অন্যথায় আমাকে সময় এবং শক্তি একগুচ্ছ সাশ্রয় জন্য ধন্যবাদ।
হাই ডেভিড,
আপনি যদি বিবৃতি দ্বারা কোনও ধরণের গ্রুপ করেন তবে আপনার দরকার হবে। উপরের উদাহরণে আমি তা করছি না।
ডগ
মাইএসকিউএল ৫.x হিসাবে, আপনি যেখানে একটি ক্লাউজ দর্শন দেখতে কোনও উপনাম ব্যবহার করতে পারবেন না http://dev.mysql.com/doc/refman/5.0/en/problems-with-alias.html
উপরের কোয়েরিতে WHERE এর পরিবর্তে HAVING ব্যবহার করুন
আপনাকে অনেক ধন্যবাদ. আপনি দুর্দান্ত কাজ করেছেন এটাই আমি আসলে যা চাই তা চাই। অনেক ধন্যবাদ.
এই কোডটি ভাগ করে নেওয়ার জন্য অনেক ধন্যবাদ। এটি আমার উন্নয়নের অনেক সময় সাশ্রয় করেছে। এছাড়াও, মাইএসকিউএল ৫.x এর জন্য একটি আবশ্যক বিবৃতি আবশ্যক তা উল্লেখ করার জন্য আপনার পাঠকদের ধন্যবাদ thanks খুব উপকারী.
আমি আমার চেয়ে অনেক বেশি স্মার্ট পাঠককে আশীর্বাদ করছি!
🙂
উপরের সূত্রটি আমাকে অনেক সময় সাশ্রয় করছে। আপনাকে অনেক ধন্যবাদ.
আমাকে এনএমইএ ফর্ম্যাট এবং ডিগ্রির মধ্যেও যেতে হবে। পৃষ্ঠার নীচে এই URL এ আমি একটি সূত্র পেয়েছি। http://www.errorforum.com/knowledge-base/16273-converting-nmea-sentence-latitude-longitude-decimal-degrees.html
কেউ কীভাবে এটি যাচাই করতে জানেন?
ধন্যবাদ!
লুণ্ঠন করা
হ্যালো,
আরেকটি প্রশ্ন. নীচের মত এনএমইএ স্ট্রিংগুলির জন্য কি কোনও সূত্র রয়েছে?
1342.7500, এন, 10052.2287, ই
$GPRMC,032731.000,A,1342.7500,N,10052.2287,E,0.40,106.01,101106,,*0B
ধন্যবাদ,
লুণ্ঠন করা
আমি আরও জানতে পেরেছি যে WHERE আমার পক্ষে কাজ করে নি। এটি হ্যাভিং-এ পরিবর্তিত হয়েছে এবং সবকিছু নিখুঁতভাবে কাজ করে। প্রথমে আমি মন্তব্যগুলি পড়তে পারি নি এবং নেস্টেড সিলেক্ট করে এটি আবার লিখেছিলাম। দুজনেই ঠিক কাজ করবে work
মাইএসকিএল-তে লিখিত স্ক্রিপ্টটির জন্য আপনাকে অনেক ধন্যবাদ, কেবলমাত্র কয়েকটি ছোটখাটো সামঞ্জস্য করতে হয়েছিল (হচ্ছে) 🙂
গ্রেট জব
অবিশ্বাস্যভাবে সহায়ক, আপনাকে অনেক ধন্যবাদ! আমি "যেখানে" না হয়ে নতুন "হ্যাভিং" নিয়ে কিছু সমস্যা পেয়েছি, তবে একবার আমি এখানে মন্তব্যগুলি পড়েছিলাম (হতাশায় আমার দাঁত পিষানোর প্রায় আধা ঘন্টা পরে = পি), আমি এটি সুন্দরভাবে কাজ করতে পেয়েছি। ধন্যবাদ ^ _ ^
অনেক অনেক ধন্যবাদ
মনে রাখবেন যে এর মতো একটি নির্বাচনের বিবৃতিটি খুব গণনার তীব্র এবং অতএব ধীর হবে। আপনার যদি এই জাতীয় অনেক প্রশ্ন থাকে তবে তা খুব তাড়াতাড়ি জিনিসকে ছুঁড়ে ফেলতে পারে।
একটি খুব কম তীব্র পদ্ধতির একটি গণনা করা দূরত্ব দ্বারা নির্ধারিত একটি স্কয়ার অঞ্চল ব্যবহার করে প্রথম (অশোধিত) নির্বাচন পরিচালনা করা হয় যেমন "টেবিল নাম থেকে ল্যাটিনটি যেখানে ল্যাট 1 এবং ল্যাট 2 এর মধ্যে দ্রাঘিমাংশ এবং লেন 1 এবং লোন 2 এর মধ্যে দ্রাঘিমাংশ" নির্বাচন করুন। ল্যাট 1 = টার্গেটলিটটিটিড - ল্যাটডিফ, ল্যাট 2, টারলিটটিটিউড + ল্যাটফ অক্ষাংশের 111 ডিগ্রি থেকে ল্যাডডিফ distance = দূরত্ব / 69 (কিমিটার জন্য), বা দূরত্ব / 1 মাইলের জন্য 111 কিলোমিটার (পৃথিবী থেকে সামান্য প্রকরণটি কিছুটা ডিম্বাকৃতি, তবে এই উদ্দেশ্যে যথেষ্ট)। লন্ডিফ = দূরত্ব / (অ্যাবস (কোস (ডিগ 2 এক্স (অক্ষাংশ)) * ১১১)) - বা মাইলের জন্য 111৯ (আপনি পরিবর্তনের জন্য অ্যাকাউন্টে কিছুটা বড় স্কোয়ার নিতে পারেন)। তারপরে ফলাফল নিন এবং এটি রেডিয়াল সিলেক্টে খাওয়ান। কেবল সীমার বাইরে স্থানাঙ্কগুলির জন্য অ্যাকাউন্ট করতে ভুলবেন না - যেমন গ্রহণযোগ্য দ্রাঘিমাংশের সীমা -69 থেকে +180 এবং গ্রহণযোগ্য অক্ষাংশের পরিসীমা -180 থেকে +90 হয় - যদি আপনার ল্যাডডিফ বা লন্ডিফ এই সীমার বাইরে চলে যায় তবে । মনে রাখবেন যে বেশিরভাগ ক্ষেত্রে এটি প্রযোজ্য নয় কারণ এটি কেবল মেরু থেকে মেরুতে প্রশান্ত মহাসাগরের মধ্য দিয়ে একটি রেখার উপর দিয়ে গণনাগুলিকে প্রভাবিত করে, যদিও এটি চুকোটকার অংশ এবং আলাস্কার অংশকে ছেদ করে।
এর মাধ্যমে আমরা যা অর্জন করি তা হ'ল পয়েন্টগুলির সংখ্যার উল্লেখযোগ্য হ্রাস যা আপনি এই গণনাটি করেন। আপনার যদি ডাটাবেসে মিলিয়ন গ্লোবাল পয়েন্টগুলি প্রায় সমানভাবে বিতরণ করা হয় এবং আপনি 100 কিলোমিটারের মধ্যে অনুসন্ধান করতে চান, তবে আপনার প্রথম (দ্রুত) অনুসন্ধানটি 10000 বর্গ কিমি এলাকা এবং সম্ভবত প্রায় 20 টি ফলাফল (একেরও বেশি বিতরণের উপর ভিত্তি করে) পাওয়া যাবে প্রায় 500M বর্গ কিলোমিটারের পৃষ্ঠের ক্ষেত্রফল, যার অর্থ আপনি এই ক্যোয়ারির জন্য এক মিলিয়ন বারের পরিবর্তে 20 বার জটিল দূরত্ব গণনা চালাচ্ছেন।
উদাহরণে ছোটখাটো ভুল… এটি 50 কিলোমিটারের মধ্যে হবে (100 নয়) যেহেতু আমরা আমাদের… বর্গের "ব্যাসার্ধ" দেখছি।
কল্পনাপ্রসূত পরামর্শ! আমি প্রকৃতপক্ষে এমন কোনও বিকাশকারীর সাথে কাজ করেছি যিনি একটি ফাংশন লিখেছেন যা ভেতরের স্কোয়ারটি টেনে নিয়েছিল এবং তারপরে একটি পুনরাবৃত্তি ফাংশন যা পেরিমেটারের চারপাশে 'স্কোয়ার' তৈরি করেছিল এবং বাকি পয়েন্টগুলি অন্তর্ভুক্ত করতে এবং বাদ দিতে পারে। ফলাফলটি অবিশ্বাস্যভাবে দ্রুত ফলাফল ছিল - তিনি মাইক্রোসেকেন্ডে কয়েক মিলিয়ন পয়েন্ট মূল্যায়ন করতে পারেন।
আমার উপরের পদ্ধতিটি অবশ্যই 'অপরিশোধিত' তবে সক্ষম। আবার ধন্যবাদ!
ডগ,
বহুবর্ণের মধ্যে কোনও লম্বা দীর্ঘ বিন্দু রয়েছে কিনা তা মূল্যায়নের জন্য আমি mysql এবং php ব্যবহার করার চেষ্টা করছি। আপনি কী জানেন যে আপনার বিকাশকারী বন্ধু কীভাবে এই কাজটি সম্পাদন করতে পারে তার কোনও উদাহরণ প্রকাশ করেছে। অথবা আপনি কোন ভাল উদাহরণ জানেন। আগাম ধন্যবাদ.
সবাইকে হাই, এটি আমার পরীক্ষার এসকিউএল বিবৃতি:
SELECT DISTINCT area_id, (
(
(
acos( sin( ( 13.65 * pi( ) /180 ) ) * sin( (
`lat_dec` * pi( ) /180 ) ) + cos( ( 13.65 * pi( ) /180 ) ) * cos( (
`lat_dec` * pi( ) /180 )
) * cos( (
( 51.02 - `lon_dec` ) * pi( ) /180 )
)
)
) *180 / pi( )
) *60 * 1.1515 * 1.609344
) AS distance
FROM `post_codes` WHERE distance <= 50
এবং মাইএসকিএল আমাকে জানিয়েছে যে দূরত্বটি, একটি কলাম হিসাবে উপস্থিত নেই, আমি আদেশটি ব্যবহার করতে পারি, আমি এটি যেখানেই না করতে পারি, এবং এটি কার্যকর হয়, তবে এটি দিয়ে নয় ...
"যেখানে দূরত্ব রয়েছে" দিয়ে "যেখানে দূরত্ব" প্রতিস্থাপন করুন।
একটি মোহন মত কাজ করে, ধন্যবাদ, ডগলাস!
এটি দুর্দান্ত, তবে এটি পাখিদের উড়ে যাওয়ার মতোই। গুগল ম্যাপস এপিআই এটিকে কোনওভাবে (সম্ভবত রাস্তা ব্যবহার করা ইত্যাদি) ব্যবহার করে চেষ্টা করা এবং একত্রীকরণ করা দুর্দান্ত হবে কেবল পরিবহণের ভিন্ন রূপ ব্যবহার করে একটি ধারণা দেওয়ার জন্য। আমার এখনও পিএইচপি-তে একটি সিমুলেটেড অ্যানিলিং ফাংশন করতে হবে যা ভ্রমণ বিক্রয়কর্মী সমস্যার কার্যকর সমাধান দিতে সক্ষম হবে। তবে আমি মনে করি যে এটি করতে আমি আপনার কিছু কোড পুনরায় ব্যবহার করতে সক্ষম হতে পারি।
হাই ডগলাস,
এই নিবন্ধটির জন্য আপনাকে অনেক ধন্যবাদ - আপনি আমাকে অনেক সময় বাঁচিয়েছেন।
যত্ন নিবেন,
নিমরোড @ ইস্রায়েল
ভাল নিবন্ধ! আমি দুটি পয়েন্টের মধ্যে কীভাবে দূরত্ব গণনা করতে হবে তার বর্ণনা দিয়ে প্রচুর নিবন্ধ পেয়েছি তবে আমি সত্যিই এসকিউএল স্নিপেটের সন্ধান করছিলাম।
ধন্যবাদ অনেক ভাল কাজ করে
এই সূত্রের জন্য আপনাকে অনেক ধন্যবাদ। এটি আমার কাছে খাচ্ছিল এমন একটি স্টোরের লোকেশন প্রকল্পে কিছুক্ষণ শেভ করে।
ধন্যবাদ একটি বান্ডিল এই ছোট্ট কোড কোডটি স্টোর লোকেশন প্রকল্পে আমাকে বেশ কিছুটা সময় সাশ্রয় করেছে!
# 1054 - অজানা কলামে 'দূরত্ব' যেখানে 'ক্লজ'
অনুমোদন করা
একই অবস্থা! সমস্যা কি :-/? "দূরত্ব" - কলাম সমস্যা কীভাবে সমাধান করবেন? আমাদের সাহায্য করুন, দয়া করে !! 🙂
WHERE এর পরিবর্তে HAVING ব্যবহার করে দেখুন
2 দিনের গবেষণার অবশেষে এই পৃষ্ঠাটি সন্ধান করুন যা আমার সমস্যার সমাধান করে। দেখে মনে হচ্ছে আমি আমার ওল্ফ্রামআল্ফাকে আরও ভালভাবে জানাব এবং আমার গণিতে ব্রাশ করব up WHERE থেকে HAVING এ পরিবর্তনের কার্যক্রমে আমার স্ক্রিপ্ট রয়েছে। ধন্যবাদ
যেখানে ক্লজ ব্যবহারের পরিবর্তে:
দূরত্ব <50
ধন্যবাদ জর্জি আমি কলাম 'দূরত্ব' পাওয়া যায়নি। একবার আমি যেখানে WHEE এ পরিবর্তিত হয়েছি এটি একটি কবজির মতো কাজ করেছে!
আমি এই প্রথম পৃষ্ঠায় এটি খুঁজে পেতে চাই। অনেকগুলি বিভিন্ন কমান্ড চেষ্টা করার পরে সঠিকভাবে কাজ করার জন্য এটিই ছিল একমাত্র এবং আমার নিজের ডাটাবেসের সাথে ফিট করার জন্য ন্যূনতম পরিবর্তনগুলির প্রয়োজন।
অনেক ধন্যবাদ!
আমি এই প্রথম পৃষ্ঠায় এটি খুঁজে পেতে চাই। অনেকগুলি বিভিন্ন কমান্ড চেষ্টা করার পরে সঠিকভাবে কাজ করার জন্য এটিই ছিল একমাত্র এবং আমার নিজের ডাটাবেসের সাথে ফিট করার জন্য ন্যূনতম পরিবর্তনগুলির প্রয়োজন।
অনেক ধন্যবাদ!
অনেক ধন্যবাদ!
অনেক ধন্যবাদ!
আমি মনে করি না কোডটি আর প্রদর্শিত হচ্ছে। এটা কি ফায়ার ফক্স?
আমি সবেমাত্র ফায়ারফক্স এবং ক্রোম উভয়ই পরীক্ষা করে দেখেছি। আবার চেষ্টা করুন?
ওহে. অনেক ধন্যবাদ. এটি একটি কবজির মতো কাজ করে।
অনেক অনেক ধন্যবাদ ডগলাস। এটি নিখুঁতভাবে কাজ করছে।
আমি জানি যে এই সূত্রটি কাজ করে, তবে পৃথিবীর ব্যাসার্ধটি কোথায় নেওয়া হয় তা আমি দেখতে পাচ্ছি না। দয়া করে কেউ কি আমাকে আলোকিত করতে পারেন?
টিম, হাভারসাইন সূত্রের পুরো ব্যাখ্যার জন্য (এটি কোড নয়), উইকিপিডিয়ায় নিবন্ধটি দেখুন: http://en.wikipedia.org/wiki/Haversine_formula
সুন্দর! এটি আমাকে প্রচুর সাহায্য করেছে!
দুর্দান্ত জিনিস ডগলাস। আপনি কি দুটি পয়েন্ট দীর্ঘ / ল্যাট / ভারবহন দেওয়া ছেদ পয়েন্ট পাওয়ার চেষ্টা করেছেন?
এখনও করেনি, খান!
আপনাকে ডগলাসকে ধন্যবাদ, এসকিউএল ক্যোয়ারী হ'ল আমার যা প্রয়োজন তা হ'ল এবং আমি ভেবেছিলাম আমাকে এটি লিখতে হবে। আপনি আমাকে কয়েক ঘন্টা অক্ষাংশ দ্রাঘিমাংশ শেখার বক্ররেখা থেকে বাঁচিয়েছেন!
আমি ত্রুটিযুক্তি পেতে থাকি: মাইএসকিউএল কোয়েরিতে 'যেখানে' ক্লজ 'তে অজানা কলাম' দূরত্ব '।
পিটার, অন্যান্য মন্তব্য পড়ুন দয়া করে। এটি প্রদর্শিত হয় যে কিছু লোককে WHEE / HAVING এর জন্য আলাদা সিনট্যাক্স ব্যবহার করতে হয়েছিল।
এই মহান নিবন্ধ করার জন্য আপনাকে ধন্যবাদ! আমার ডিবিতে সবেমাত্র কোডটি পরীক্ষা করে দুর্দান্ত কাজ করেছেন!
ডগলাস, এই আশ্চর্যজনক কোডের জন্য আপনাকে ধন্যবাদ। আমার জিপিএস সম্প্রদায় পোর্টালে কীভাবে এটি করা যায় তা সম্পর্কে আমার মাথা ক্র্যাক করা হয়েছে। আপনি আমার ঘন্টা বাঁচিয়েছেন।
শুনে দুর্দান্ত, অ্যাশ!
এই সহায়ক নিবন্ধটি পোস্ট করার জন্য ধন্যবাদ,
তবে কোনও কারণে আমি জিজ্ঞাসা করতে চাই
কীভাবে mysql db এর মধ্যে স্থানাঙ্কগুলি ব্যবহারকারীর দ্বারা পিএইচপি করার জন্য sোকানো হয়?
আরও স্পষ্টভাবে বর্ণনা করার জন্য:
1. ব্যবহারকারীকে ডিবি এবং ব্যবহারকারীর নিজস্ব সমন্বয়গুলি থেকে নির্দিষ্ট ডেটা নির্বাচন করার জন্য [আইডি] inোকাতে হবে
2. পিএইচপি ফাইলটি [আইডি] ব্যবহার করে লক্ষ্যযুক্ত ডেটা (কর্ডগুলি) পায় এবং তারপরে ব্যবহারকারী এবং লক্ষ্য বিন্দুর মধ্যে দূরত্ব গণনা করে
বা কেবল নীচের কোড থেকে কেবল দূরত্ব পেতে পারেন?
$ ক্রি = “নির্বাচন করুন *, ((একোস (পাপ ((। $ দ্রাঘিমাংশ। ))) * 180 / পাই ()) * 180 * 180 * 180) দূরত্ব হিসাবে `মাই টেবিল - যেখানে দূরত্ব> =" $ দূরত্ব ”" >>>> আমি কি এখান থেকে দূরত্ব "বের করতে" পারি?
আবার ধন্যবাদ,
টিমি এস
কিছু মনে করবেন না, আমি পিএইচপি মধ্যে "ফাংশন" কীভাবে কাজ করে তা বুঝতে পেরেছি
$ ডিস্ক = getDistanceBetweenPPointNew ($ ইউজারলটি, $ ইউজারলঙ্গী, $ লাটি, $ লম্বি, $ ইউনিট = 'কিমি')
অনেক ধন্যবাদ!!
ঠিক আছে, আমি চেষ্টা করেছি সবকিছু কাজ করছে না। আমি বলতে চাইছি আমার কী কাজ আছে তবে দূরত্ব খুব দূরে।
এই কোডটিতে কী ভুল আছে তা কেউ কি দেখতে পাবে?
যদি (আইসেট ($ _ পোষ্ট ['সাবমিট']]) {$ z = $ _POST ['জিপকোড']; $ r = $ _POST ['ব্যাসার্ধ']; প্রতিধ্বনিত করুন "এর ফলাফল"। $ z; $ sql = mysql_query ("নির্বাচন DISTINCT m.zipcode, m.MktName, m.LocAddSt, M.LocAddity, m.LocAddState, m.x1, m.y1, m.verified, z1.lat, z2.lon, z1। শহর, z1.state থেকে এমআরকে এম, জিপ জেড 1, জিপ জি 2 WHME জিপকোড = z1.zipcode এবং z2.zipcode = $ z এবং (3963 * একোস (ট্রানকেট (পাপ (z2.lat / 57.2958) * পাপ (মি। y1 / 57.2958) + cos (z2.lat / 57.2958) * cos (m.y1 / 57.2958) * cos (m.x1 / 57.2958 - z2.lon / 57.2958), 8%)) <= $ r ") বা মারা (mysql_error ()); যখন ($ সারি = mysql_fetch_array ($ sql)) {$ store1 = $ সারি ['MktName']। ""; $ store = $ সারি ['LocAddSt' '] ”"; । store। = $ قطار ['LocAddCity']। ","।। সারি ['লোকএডস্টেট']। " "। $ সারি ['জিপকোড']; $ অক্ষাংশ 1 = $ সারি ['ল্যাট']; $ দ্রাঘিমাংশ 1 = $ সারি ['দীর্ঘ']; $ অক্ষাংশ 2 = $ সারি ['y1']; $ দ্রাঘিমাংশ 2 = $ সারি ['x1']; $ শহর = $ সারি ['শহর']; $ রাষ্ট্র = $ সারি ['রাষ্ট্র']; $ ডিস = getnew ($ অক্ষাংশ 1, $ দ্রাঘিমাংশ 1, $ অক্ষাংশ 2, $ দ্রাঘিমাংশ 2, $ ইউনিট = 'এমআই'); // $ ডিস = দূরত্ব ($ লাত 1, $ লোন 1, $ ল্যাট 2, $ লোন 2); $ যাচাইকৃত = $ সারি ['যাচাইকৃত']; যদি ($ যাচাই করা == '1') {প্রতিধ্বনি ""; প্রতিধ্বনি ""। $ স্টোর। ""; প্রতিধ্বনি " মাইল দূরে"; প্রতিধ্বনি ""; } অন্যথায় {প্রতিধ্বনি "" $ স্টোর ”" ”"; প্রতিধ্বনি " মাইল দূরে"; প্রতিধ্বনি ""; }}}
আমার ফাংশন.এফপি কোড
ফাংশন getnew ($ অক্ষাংশ 1, $ দ্রাঘিমাংশ 1, $ অক্ষাংশ 2, $ দ্রাঘিমাংশ 2, $ ইউনিট = 'মাই') {ta থিতা = ta দ্রাঘিমাংশ 1 - $ দ্রাঘিমাংশ 2; $ দূরত্ব = (পাপ (ডিগ্রোড্রেড ($ অক্ষাংশ ২)) * পাপ (ডিগ ২ রেড ($ অক্ষাংশ ২)) + (কোস (ডিগ ২ রেড ($ অক্ষাংশ ২)) * কোস (ডিগ 2 রেড ($ অক্ষাংশ 1)) কোস (ডিগ 2 ডিগ্রি ($ থাটা)) ); $ দূরত্ব = আকোস ($ দূরত্ব); $ দূরত্ব = Rad2deg ($ দূরত্ব); $ দূরত্ব = $ দূরত্ব * 2 * 1; স্যুইচ ($ ইউনিট) {কেস 'এমআই': বিরতি; কেস 'কিমি': $ দূরত্ব = $ দূরত্ব * 2; } প্রত্যাবর্তন (বৃত্তাকার ($ দূরত্ব, 2)); }
তুমাকে অগ্রিম ধন্যবাদ
এই নিবন্ধটি জন্য আপনাকে ধন্যবাদ। আমার কোড সহ ভাল কাজ করছে। 🙂
আরে ডগলাস, দুর্দান্ত নিবন্ধ। আমি আপনার ভৌগলিক ধারণা এবং কোডটি সত্যই আকর্ষণীয় বলে ব্যাখ্যা পেয়েছি। আমার একমাত্র পরামর্শ হ'ল স্পেস এবং প্রদর্শনের জন্য কোডটি প্রবেশ করানো (উদাহরণস্বরূপ স্ট্যাকওভারফ্লো)। আমি বুঝতে পারি যে আপনি স্থান সংরক্ষণ করতে চান, তবে প্রচলিত কোড স্পেসিং / ইনডেন্টেশন এটি প্রোগ্রামার হিসাবে আমার পক্ষে পড়া এবং বিচ্ছিন্নকরণকে অনেক সহজ করে তুলেছিল। যাইহোক, এটি একটি ছোট জিনিস। মহান কাজ আপ রাখুন.
ধন্যবাদ! আমি পোস্টটি কিছুটা পরিবর্তন করেছি… তবে সমীকরণগুলি এত বেশি জায়গা নেয় এবং এত দীর্ঘ যে আমি নিশ্চিত নই যে এটি খুব বেশি সাহায্য করে।
তোমাকে অনেক ধন্যবাদ.
এখানে ফাংশনটি ব্যবহার করার সময় আমরা এক ধরণের দূরত্ব পাচ্ছি..এছাড়া কোয়েরিটি ব্যবহার করে এর অন্যান্য ধরণের দূরত্ব আসছে
আমি দুটি রাষ্ট্রের মধ্যে দূরত্ব গণনা করব না
মুচস গ্রাস পিস ট্যান হারমোস কোডিগো…
এই আমি ভাল কোসিনাস ফাংশন। আমি গণিত জানি না, তবে ধন্যবাদ!
দুর্দান্ত কাজ ... 🙂 (y)
নির্বাচনের ক্ষেত্রে এবং যেখানে দ্বিগুণ সূত্র ব্যবহার করা দ্রুত (মাইএসকিএল 5.9) বলে মনে হচ্ছে:
$ সূত্র = "(((একোস (পাপ (("। $ অক্ষাংশ। "* পিআই () / 180)))) পাপ ((` অক্ষাংশ * পাই () / 180)) কোস (("। $ অক্ষাংশ)। "* পাই () / 180)) কোস ((` অক্ষাংশ * পাই () / 180)) কোস ((("। $ দ্রাঘিমাংশ।" - `দ্রাঘিমাংশ)) * পাই () / 180%))) * 180 / পাই ()) * 60 * 1.1515 * 1.609344) ";
$ sql = 'নির্বাচন করুন', '$ সূত্র' ' যেখানে টেবিল থেকে দূরত্ব হিসাবে '.. $ সূত্র। <= '। $ দূরত্ব;
ধন্যবাদ ...
যদি কাজ না
"যেখানে দূরত্ব"
কাজ যদি
“দূরত্ব রয়েছে”
এই নিবন্ধটি শিয়ার জন্য অনেক ধন্যবাদ। এটি অত্যন্ত সহায়ক।
পিএইচপি প্রথমে একটি সহজ স্ক্রিপ্টিং প্ল্যাটফর্ম হিসাবে তৈরি হয়েছিল "ব্যক্তিগত হোম পৃষ্ঠা" called আজকাল পিএইচপি (হাইপারটেক্সট প্রিপ্রসেসরের সংক্ষিপ্ত) মাইক্রোসফ্টের অ্যাক্টিভ সার্ভার পেজ (এএসপি) প্রযুক্তির একটি বিকল্প।
পিএইচপি একটি ওপেন সোর্স সার্ভার-সাইড ল্যাঙ্গুয়েজ যা ডায়নামিক ওয়েব পৃষ্ঠাগুলি তৈরি করতে ব্যবহৃত হয়। এটি এইচটিএমএলে এম্বেড করা যেতে পারে। পিএইচপি সাধারণত লিনাক্স / ইউনিক্স ওয়েব সার্ভারে মাইএসকিউএল ডাটাবেসের সাথে একত্রে ব্যবহৃত হয়। এটি সম্ভবত সর্বাধিক জনপ্রিয় স্ক্রিপ্টিং ভাষা।
আমি উপরের সমাধানটি সঠিকভাবে কাজ না করে দেখেছি।
আমার এতে পরিবর্তন করা দরকার:
$ কিউকিউ = "নির্বাচন করুন", ((একোস (পাপ ((।।। অক্ষাংশ। "* পিআই () / 180)) * পাপ ((` লাট্টি * পাই () / 180)) কোস ((""। itude অক্ষাংশ। "* পাই () / 180)) কোস ((` লাট্টি * পাই () / 180)) * কোস ((("। $ দ্রাঘিমাংশ।" - `লম্বা)) পাই () / 180) ))) * 180 / পাই ()) * 60 * 1.1515) দূরত্ব হিসাবে FROM `নিবন্ধন করুন`;
ধন্যবাদ কূপেন্দ্র!
ধন্যবাদ স্যার নিখুঁতভাবে ডুবে গেছেন .. তবে আমার একটা প্রশ্ন আছে যদি আমি দশমিক বিন্দু ছাড়াই আউটপুট দিতে চাই তবে আমি কী করতে পারি ..?
আগাম ধন্যবাদ.
হ্যালো, দয়া করে আমাকে এই বিষয়ে আপনার সাহায্যের দরকার হবে।
আমি আমার ওয়েব সার্ভারে একটি অনুরোধ পেয়েছি http://localhost:8000/users/findusers/53.47792/-2.23389/20/
53.47792 = itude অক্ষাংশ
-2.23389 = itude দ্রাঘিমাংশ
এবং 20 = আমি যে দূরত্বটি পুনরুদ্ধার করতে চাইছি
তবে আপনি সূত্র ব্যবহার করে, এটি আমার ডিবিতে সমস্ত সারি পুনরুদ্ধার করে
$ ফলাফল = ডিবি :: নির্বাচন (ডিবি :: কাঁচা ("নির্বাচন করুন *, ((একোস (পাপ ((।।। $ অক্ষাংশ।" * পিআই () / 180))) * পাপ ((ল্যাট * পিআই () / 180 )) + কোস (("। $ অক্ষাংশ।" * পাই () / 180)) কোস ((ল্যাট * পিআই () / 180)) কোস ((("। $ দ্রাঘিমাংশ।" - এলএনজি) * পিআই ( ) / 180)))) * 180 / পাই ()) * 60 * 1.1515 * 1.609344) দূরত্ব হিসাবে FRM চিহ্নিতকারী থেকে দূরত্ব> = "। $ দূরত্ব));
[{"আইডি": 1, "নাম": "ফ্র্যাঙ্কি জনি এবং লুইগো তো", "ঠিকানা": "939 ডাব্লু এল ক্যামিনো রিয়েল, মাউন্টেন ভিউ, সিএ", "ল্যাট": 37.386337280273, "এলএনজি": - 122.08582305908, "দূরত্ব": 16079.294719663}, {"আইডি": 2, "নাম": "অ্যামিসির ইস্ট কোস্ট পাইজারিয়া", "ঠিকানা": "790 কাস্ত্রো সেন্ট, মাউন্টেন ভিউ, সিএ", "ল্যাট": 37.387138366699, "এলএনজি": -122.08323669434, "দূরত্ব": 16079.175940152}, {"আইডি": 3, "নাম": "ক্যাপসের পিজ্জা বার ও গ্রিল", "ঠিকানা": "191 কাস্ত্রো সেন্ট, মাউন্টেন ভিউ, সিএ", "ল্যাট": 37.393886566162, "Lng": - 122.07891845703, "দূরত্ব": 16078.381373826}, {"আইডি": 4, "নাম": "রাউন্ড টেবিল পিজা: মাউন্টেন ভিউ", "ঠিকানা": "570 এন শোরলাইন ব্লাভডি, মাউন্টেন ভিউ, সিএ", "ল্যাট": 37.402652740479, "এলএনজি": - 122.07935333252, "দূরত্ব": 16077.420540582}, {"আইডি": 5, "নাম": "টনি এবং আলবার পিজ্জা এবং পাস্তা", "ঠিকানা": "619 এসকিউলা অ্যাভে, পর্বত দেখুন, সিএ "," ল্যাট ": 37.394012451172," এলএনজি ": - 122.09552764893," দূরত্ব ": 16078.563225154}, {" আইডি ": 6," নাম ":" ওরেগানোর উড-ফায়ার্ড পিজ্জা "," ঠিকানা ":" 4546 এল কেমিনো রিয়েল, লস আল্টোস, সিএ "," ল্যাট ": 37.401725769043," এলএনজি ": - 122.11464691162," দূরত্ব ": 16077.937560795}, {" আইডি ": 7," নাম ":" দ্য বার এবং গ্রিলস "," ঠিকানা ":" 24 হোয়াইটলে স্ট্রিট, ম্যানচেস্টার "," ল্যাট ": 53.485118865967," এলএনজি ": - 2.1828699111938," দূরত্ব ": 8038.7620112314}]
আমি কেবল 20 মাইল সারি সারি পুনরুদ্ধার করতে চাই তবে এটি সমস্ত সারি নিয়ে আসে। আমি কি ভুল করছি দয়া করে