কিউজিআইএস ফিল্ড ক্যালকুলেটর ব্যবহার করে ডিগ্রি মিনিট সেকেন্ডে (ডিএমএস) অক্ষাংশ / দ্রাঘিমাংশ কীভাবে পাবেন?


9

5.1234 থেকে 5 ° 7°24.24 এ রূপান্তর করতে আমি নীচের অভিব্যক্তিটি নিয়ে এসেছি "

toint ($ x) || '°' || toint ((($ x) - toint ($ x)) * 60) || '`' || সাবস্ট্রাস্ট ((টস্ট্রিং (((((x)) - টোয়েন্ট ($ x)) * 60) - টোয়েন্ট ((($ x) - টোয়েন্ট ($ x)) * 60)) * 60), 1,5) || ' "'

এখানে সমস্যাটি রয়েছে: 5.1234 এর মতো কিছু পয়েন্টের জন্য এটি কাজ করে। কিন্তু অন্যদের জন্য, এটি না। আমার সন্দেহ হয় যে সমস্যাটি পূর্ণসংখ্যার রূপান্তর যা দশমিক পরিসংখ্যানকে কাটানোর পরিবর্তে সজ্জিত করে।

অন্য কোন বিকল্প আছে? ধন্যবাদ।


আমি একটি কাজের প্রস্তাব করতে পারেন। অনুকূল নয়, তবে এখনই আটকে থাকলে আপনি নিজের কাজটি সম্পন্ন করতে পারবেন। ডান ক্লিক করুন এবং একটি CSV হিসাবে সংরক্ষণ করুন। এক্সেল বা গুগল ডক্সে সিএসভি খুলুন, আপনার সূত্রটি প্রবেশ করুন (যা পরিষ্কার এবং সহজ হওয়া উচিত)। একটি অনন্য সনাক্তকারী এবং রূপান্তরিত ডিএমএস স্ট্রিং বাদে সমস্ত ক্ষেত্র মুছুন। এটি সংরক্ষণ করুন. বিদ্যমান স্তরটির সাথে একটি টেবিল যোগ করুন এবং আপনি সেট হয়ে গেছেন।
spatialthoughts

1
নেতিবাচক ইনপুটগুলি সম্পর্কে সতর্কতা অবলম্বন করুন।
whuber

কেবলমাত্র স্পষ্টিলথচয়ের জবাব যুক্ত করতে: নিকটতম ডিগ্রি পর্যন্ত গোল করা FLOOR () ফাংশনটি ব্যবহার করে এক্সেলে কাজ করবে।
মিশা

উত্তর:


3

আপনি যে অভিব্যক্তিটি একসাথে রেখেছেন তা আমি পছন্দ করি - সম্ভবত QGIS 1.8 তে কোনও সমাধান নেই, তবে কিউজিসআইএস 1.9-দেব-তে একটি 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) || '"'

পালিয়ে যাওয়া এস্ট্রোফির নোট করুন ( \')।

ডি ° এমএমএমএম'র জন্য:

(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। অপর্যাপ্ত পরীক্ষার সমস্যা ... এবং এখানে আমি দক্ষিণ (নেতিবাচক) গোলার্ধেও কাজ করছি working শীঘ্রই আপডেট হচ্ছে।
সিম্বামাঙ্গু

1

মডুলো অপারেটরটি কাটা কাটা করতে ব্যবহার করা যেতে পারে, তবে ফলাফলটি প্রকাশ করা খুব কুশ্রী হবে। স্ট্রিং সাবস্টিটিউশন ব্যবহার করা প্রাকৃতিক বিষয়, তবে দুর্ভাগ্যক্রমে কিউজিআইএস কোনও স্ট্রপোস বা অনুরূপ ফাংশন প্রকাশ করে না। ব্যবহার করুন regexp_replace($x, '\\..*', '')পুরো অংশ পেতে এবং regexp_replace($x, '^[0-9]*\\.', '')দশমিক অংশ জন্য। কোনও রাউন্ডিং হবে না তা নিশ্চিত করতে দ্বিতীয় এক্সপ্রেশন সহ গণনাগুলির torealপরিবর্তে ব্যবহার করুন toint



tsc ts ts, এত সাদা জায়গার শব্দ।
lynxlynxlynx

হ্যাঁ প্রথম বিটটি উপেক্ষা করুন এটি নতুন ফাংশনটির সাথে সম্পর্কিত নয় কিছুটা সাফ আপ ছিল।
নাথান ডাব্লু

কুৎসিত এটি ... এটি চেষ্টা করার চেষ্টা করবে।
ওবিসিডিয়ানজ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.