التعامل مع نقاط مكانية LAT / طويلة و MySQL في القضبان

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

سؤال

كان هناك كمية لائقة من الأسئلة حول أنواع البيانات المكانية MySQL، مهما كانت الألغام أكثر تحديدا أفضل للتعامل معهم داخل القضبان المعمارية MVC.

لدي نموذج مدخل حيث يمكن للمستخدم المسؤول إنشاء نقطة اهتمام جديدة، دعنا نقول، مطعم وإدخال بعض المعلومات. يمكنهم أيضا إدخال خطوط خطوط وطويلة مقروءة الإنسان في شكل عشري.

ومع ذلك، للحصول على حسابات المسافة، إلخ ... أنا تخزين بيانات الموقع كأجور مكانية في قاعدة البيانات.

سؤالي لذلك، هو كيفية التعامل مع هذا في بنية MVC في القضبان؟

فيما يلي بعض الأفكار التي كان لدي، ولكن لا شيء يبدو نظيفا حقا:

  • استدعاء: After_filter الأسلوب الذي يأخذ المثيل الجديد للكائن وقم بتحديث SQL الخام الذي يعالج "GEOMFROMTEXT (" النقطة (طويلة) ")" الخير ". المشكلة مع هذا هي أن "Lat / Long" ستكون حقول نصية في نموذج "الخلق"، على الرغم من أن هذا يعطل Form_For النظيفة: هندسة الكائنات التي توفرها القضبان لأن Lat / Long لا ترسم حقا، فهي موجودة فقط قيم المدخلات البشرية التي ليست مكانية mysql.

  • ربما إنشاء مشغل في DB لتشغيل بعد إدراج صف يقوم بتحديث هذا الصف؟ ليس لدي أي فكرة ولا يبدو أن هذه المشغلات ستحصل على الوصول إلى Lat / Long، إلا إذا قمت بتخزين جهاز Lat / Long بالإضافة إلى النقطة المكانية، ثم أنشأ الصف في DB مع العشرات اللات / العشرية الطويلة ثم ركض الزناد بعد الإبداع لتحديث المكاني. أعتقد أنني يمكن أن أفعل ذلك أيضا مع after_filter إذا أضفت الأعمدة اللات / الطويلة إلى النموذج.

أي أفكار أخرى؟ أعتقد أن تخزين LAT / Long Risestant منذ ذلك الحين لأنني سأستخدم النقطة المكانية لحسابات المسافة، إلخ ... ولكن قد يكون من الضروري إذا سمحت بالتحرير البشري.

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

المحلول

الدفع البرنامج المساعد Geokit-Rails للضباط الذي يقوم بحسابات المسافة باستخدام أعمدة LAT / LNG عادي كطابع (ويستخدم جوكيت جوهرة). ومع ذلك، إذا كنت ترغب في استخدام قدرات قاعدة البيانات الخاصة بك، جوربي يدعم الميزات المكانية الأساسية مثل النقطة أو LINERING كأنواع للأعمدة. آمل هذه المساعدة.

نصائح أخرى

وأنا أتفق مع ميؤوس منها، Geokit جميل، واستخدمها أيضا.

إذا كنت تريد أن تفعل ذلك بنفسك، فسأفعل بعد_filter ولكن خارج طريقة التحديث إلى مؤشر ترابط. مثل هذا ليس لديك تباطؤ أثناء التوفير ولكن لا يزال رمز لطيف وأعمدة محدثة في الوقت المناسب.

المشغلات ليست لطيفة، يجب أن تسليم قاعدة البيانات البيانات ولكن لا تفعل المنطق.

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