2015-06-08 27 views
29

मैं Google मानचित्र से आता है, इस समय मैं अपने उपयोगकर्ताओं के स्थान को रेखांश और अक्षांश का उपयोग करना चाहता हूं, लेकिन मैं जियोडैंगो का उपयोग करूँगा और कुछ बिंदुओं के बीच दूरी को दूर करने के लिए भी कुछ बिंदु उपयोग करूँगा।रेखांश और अक्षांश मूल्यों को संग्रहीत करने के लिए Django में किस मॉडल फ़ील्ड का उपयोग करना है?

हालांकि, मेरा पहला भ्रम यह है कि Django I में कौन सा क्षेत्र रेखांश और अक्षांश मूल्यों को संग्रहीत करने के लिए उपयोग करना चाहिए? मुझे जो जानकारी मिल रही है वह विवादित है।

आधिकारिक दस्तावेज का उपयोग करता है एक FloatField https://docs.djangoproject.com/en/dev/ref/contrib/gis/tutorial/#geographic-models

lon = models.FloatField() 
lat = models.FloatField() 

कहाँ लगभग stackoverflow पर हर सवाल का जवाब एक DecimalField

long = models.DecimalField(max_digits=8, decimal_places=3) 
lat = models.DecimalField(max_digits=8, decimal_places=3) 

तो मैं क्या उपयोग करना चाहिए पता चलता है?

+0

मैं एक FloatField का प्रयोग करेंगे स्टोर करने के लिए। – Brandon

+3

यदि आपके पास स्थानिक बैकएंड है, तो आप उन स्थानों को पॉइंटफ़ील्ड में स्टोर कर सकते हैं, इससे स्थानिक क्वेरीिंग बहुत आसान हो जाएगी। https://docs.djangoproject.com/en/1.8/ref/contrib/gis/model-api/#pointfield – yellowcap

उत्तर

46

फ्लोट आमतौर पर अनुमानित होता है, कुछ सरल उदाहरणों के लिए here देखें। आप अपने मॉडल को DecimalField(max_digits=9, decimal_places=6) जैसे कुछ संशोधित करने के बहुत अच्छे परिणाम प्राप्त कर सकते हैं, क्योंकि निर्देशांक में दशमलव बहुत महत्वपूर्ण हैं लेकिन 6 से अधिक का उपयोग मूल रूप से व्यर्थ है।

+0

यह। और जो भी सटीकता आपको चाहिए उसे प्राप्त करने के लिए बस पर्याप्त दशमलव स्थानों का उपयोग करें। फ़्लोटिंग पॉइंट नंबर अच्छे होते हैं जब आपको परिमाण के क्रम की एक बड़ी श्रृंखला का समर्थन करने की आवश्यकता होती है। आप कई मूल्यों को एक साथ जोड़ते समय कभी-कभी आश्चर्यजनक गोलिंग आदि के साथ भुगतान करते हैं। –

+6

[अधिकतम लंबाई समन्वय के लिए यहां देखें।] (Http://stackoverflow.com/questions/15965166/what-is-the- अधिकतम- लम्बाई-of-latitude-and- longitude) मैं 'दशमलव दशमलव (max_digits = 9) की अनुशंसा करता हूं , दशमलव_प्लेस = 6) 'क्योंकि "समन्वय दशमलव डिग्री में प्रत्येक .000001 अंतर लगभग 10 सेमी लंबाई है।" और मुझे संदेह है कि आप उससे अधिक सटीकता का उपयोग करेंगे;) – grokpot

+0

@grokpot सुपर रोचक, धन्यवाद! – mccc

8

PointField उपयोग अक्षांश देशांतर

p = Point(85.3240, 27.7172,srid=4326) 

https://docs.djangoproject.com/en/1.10/ref/contrib/gis/model-api/#pointfield

+0

क्या यह MySQL डीबी में उपलब्ध है? –

+0

अपनी सेटिंग्स में django.contrib.gis.db.backends.mysql सेट करें। डेटाबेस इंजन डीबी कॉन्फ़िगरेशन –

संबंधित मुद्दे