تحديد ما إذا كانت دائرة منذ فترة طويلة خطوط الطول ودائرة على تداخل المجال

StackOverflow https://stackoverflow.com/questions/610496

سؤال

وأنا خلق تطبيق مع القدرة جيو القرب البحث باستخدام PHP كلغة برمجة الخادم والخلية كما زرع قاعدة البيانات.

والنظر في هذه الحالة:

وأين لدينا مجموعة معينة من الأجسام وجود خطوط الطول والعرض مواقف assosciated مع الأشياء منها. على تحديد تفاصيل الموقع مثل البلد و / أو المدينة جنبا إلى جنب مع مجموعة / دائرة نصف قطرها في KM أننا نحصل على الكائنات التي يتم الكذب WITHING أن نصف قطرها / مجموعة باستخدام ماي الاستعلام على سبيل المثال:

SELECT [columns] 
FROM [column] 
WHERE 1=1 
AND 3963.191 * 
    ACOS(
    (SIN(PI() * [latitude] / 180) * SIN(PI() * [column].latitude / 180)) + 
    (COS(PI() * [latitude] /180) * cos(PI() * [column].latitude / 180) * COS(PI() * [column].longitude / 180 - PI() * [longitude] / 180)) ) 
    <= 10

وفوق حسابات سيعطي الكائنات التي تقع ضمن منطقة 10 كم من نقطة المركز بلد / مدينة على وجه الأرض.

والآن لنفترض لدي كائن واحد (مع خطوط الطول والعرض) وهي ليست في هذا المجال KM 10، ولكن على سبيل المثال 15 كم من نقطة المركز بلد / مدينة على وجه الأرض. هذا الكائن لديها مجموعة وخدمة 10 KM (إعطاء خدمة تصل 10 منطقة KM).

والسؤال الآن هو إذا أنا أبحث عن الكائنات ضمن نطاق 10 كم من نقطة / مركز المدينة البلاد ثم الكائن (15 KM بصرف النظر عن بلد / نقطة وسط المدينة) وجود مجموعة خدمة 10 KM ينبغي أيضا أن تدرج في البحث .

وكيف يمكنني جعل من الممكن؟ لدي مركز الدولة / المدينة اللات، الإحداثيات طويلة، ومجموعة / دائرة نصف قطرها (التي لدينا لمعرفة الأشياء) وجوه وجود دائرة نصف قطرها تسليم (لe.g.10 KM) والإحداثيات المقابلة لها.

ويمكنك توجيه لي كيف نفعل ذلك باستخدام PHP و MySQL؟

هل كانت مفيدة؟

المحلول

استخدم الخلية ملحقات المكانية http://dev.mysql.com/doc/refman/ 5.1 / EN / المكانية وextensions.html

ومن ناحية أخرى، إذا كنت ترغب فقط في تحديد الدوائر الأخرى التي تتقاطع مع إعطاء واحدة، فإنها ستكون كل هذه، والتي المسافة بين مراكز الدائرة أقل ثم مبلغ نصف قطرها. وبعبارة أخرى، على افتراض أن تعطى النقطة الأصلية ومجموعة من ثلاثة أضعاف (<م> س <الفرعية> 0 ، <م> ص <الفرعية> 0 ، ص <الفرعية> 0 )، تحتاج فقط (<م> س <الفرعية> ن ، <م> ص <الفرعية> ن ، <م> ص <الفرعية> ن ) التي

و√ ((<م> س <الفرعية> 0 - <م> س <الفرعية> ن ) ² + (<م> ص <الفرعية> 0 - <م> ص <الفرعية> ن ) ²) ≤ <م> ص <الفرعية> 0 + <م> ص <الفرعية> ن

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top