QGIS फ़ील्ड कैलकुलेटर का उपयोग करके डिग्री मिनट सेकंड (DMS) में अक्षांश / देशांतर कैसे प्राप्त करें?


9

मैं निम्नलिखित अभिव्यक्ति के साथ 5.1234 को 5 ° 7`24.24 में बदलने के लिए आया हूं।

टिंट ($ x) || '°' || toint ((($ x) - toint ($ x)) * 60) || '`' || पदार्थ (tostring ((((($ x) - toint ($ x)) * 60) - toint ((($ x) - toint ($ x)) * 60)) * 60), 1,5) || ' "'

यहाँ समस्या है: कुछ बिंदुओं जैसे कि 5.1234 के लिए, यह काम करता है। लेकिन दूसरों के लिए, यह नहीं है। मुझे संदेह है कि समस्या पूर्णांक रूपांतरण है जो दशमलव आंकड़ों को रौंदने के बजाय गोल करती है।

क्या कोई और विकल्प है? धन्यवाद।


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

1
नकारात्मक इनपुट से सावधान रहें।
whuber

बस spatialthought के जवाब में जोड़ने के लिए: गोलाई नीचे निकटतम डिग्री करने के लिए Excel में काम मंजिल () फ़ंक्शन का उपयोग होगा।
मीका

जवाबों:


3

मुझे आपके द्वारा एक साथ रखा गया अभिव्यक्ति पसंद है - शायद QGIS 1.8 में कोई हल नहीं है, लेकिन QGIS 1.9-dev में एक floor()राउंडिंग फंक्शन है जो नीचे गोल होता है । D ° M'S '' के लिए:

(CASE WHEN $x < 0 THEN '-' ELSE '' END) || floor (abs($x)) || '° ' || floor(((abs($x)) - floor (abs($x))) * 60) ||'\'' || substr( (tostring((((abs($x)) - floor (abs($x))) * 60) - floor(((abs($x)) - floor (abs($x))) * 60)) * 60),1,5) || '"'

बच गए एपोस्ट्रोफ ( \') पर ध्यान दें ।

D ° M.MMM के लिए:

(CASE WHEN $x < 0 THEN '-' ELSE '' END) || floor (abs($x)) || '° ' || ((abs($x) - floor(abs($x))) * 60) ||'\''

प्रदर्शित दशमलव मिनटों की संख्या को सीमित करने के लिए, अंकों की संख्या के साथ नीचे अभिव्यक्ति में # स्थानापन्न करें:

(CASE WHEN $x < 0 THEN '-' ELSE '' END) || floor (abs($x)) || '° ' ||  format_number( (abs($x) - floor(abs($x))) * 60, #) ||'\'

जिज्ञासा से बाहर, डिग्रियों, मिनटों के लिए सूत्र कैसा दिखेगा?
गदा

एक उदाहरण और जोड़ा; यह QGIS 2.6 में काम करता है (और शायद 2.0 और ऊपर कुछ भी) लेकिन अब और अधिक सुरुचिपूर्ण स्वरूपण कार्य उपलब्ध हो सकते हैं।
सिमबामुंग

1
बस एक नुकसान: आपका सूत्र केवल ईस्टिंग और नॉर्थिंग के सकारात्मक मूल्यों के लिए काम करता है। नकारात्मक एक बहुत छोटा है। और मुझे आश्चर्य है कि 0.5 ° E और 0.5 ° W कैसे प्रतिष्ठित हो सकते हैं। फर्श (+/- 0.5) हमेशा 0 होगा, -0 नहीं।
आंद्रे जे

Aaargh। अपर्याप्त परीक्षण के नुकसान ... और यहां मुझे दक्षिणी (नकारात्मक) गोलार्ध में भी काम करना है। शीघ्र ही अद्यतन किया जा रहा है।
Simbamangu

1

मॉडुलो ऑपरेटर का उपयोग ट्रंकेशन करने के लिए किया जा सकता है, लेकिन परिणामी अभिव्यक्ति बहुत बदसूरत होगी। यह स्ट्रिंग प्रतिस्थापन का उपयोग करने के लिए बेहतर है, लेकिन दुर्भाग्य से QGIS किसी भी स्ट्रैप या इसी तरह के कार्यों को उजागर नहीं करता है। regexp_replace($x, '\\..*', '')पूरे भाग regexp_replace($x, '^[0-9]*\\.', '')को पाने के लिए और दशमलव भाग को प्राप्त करने के लिए उपयोग करें । दूसरी अभिव्यक्ति के साथ गणना torealके tointलिए उपयोग करें यह सुनिश्चित करने के लिए कि कोई गोलाई नहीं होगी।


2
अब एक strpos समारोह नहीं था लेकिन करता है;) github.com/qgis/Quantum-GIS/commit/...
नाथन डब्ल्यू

tsk tsk tsk, इतना व्हॉट्सएप शोर।
lynxlynxlynx

हाँ अनदेखा करें कि पहले यह नए कार्य से असंबंधित था।
नाथन डब्ल्यू

बदसूरत यह है ... इसे बाहर काम करने की कोशिश करेंगे।
ओब्सीडियनज
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.