Saya datang dengan ungkapan berikut untuk mengonversi 5.1234 ke 5 ° 7`24.24 "
toint ($ x) || '°' || toint ((($ x) - toint ($ x)) * 60) || '`' || substr ((tostring (((($ x) - toint ($ x)) * 60) - toint ((($ x) - toint ($ x)) * 60)) * 60), * 60), 1,5) || '"
Inilah masalahnya: untuk beberapa poin seperti 5.1234, ia berfungsi. tetapi bagi orang lain, tidak. Saya menduga masalahnya adalah konversi bilangan bulat yang mengumpulkan angka desimal alih-alih memotongnya.
Apakah ada opsi lain? Terima kasih.
qgis
latitude-longitude
calculator
Obsidianz
sumber
sumber
Jawaban:
Saya suka ungkapan yang Anda kumpulkan - mungkin tidak ada solusi di QGIS 1.8, tetapi di QGIS 1.9-dev ada
floor()
fungsi pembulatan yang membulatkan ke bawah . Untuk D ° M'S ':Perhatikan apostrof lolos (
\'
).Untuk D ° M.MMM ':
Untuk membatasi jumlah menit desimal yang ditampilkan, gantilah # dalam ekspresi di bawah ini dengan jumlah digit:
sumber
Operator modulo dapat digunakan untuk melakukan pemotongan, tetapi ekspresi yang dihasilkan akan sangat jelek. Lebih cantik menggunakan substitusi string, tetapi sayangnya QGIS tidak memaparkan fungsi strpos atau fungsi serupa. Gunakan
regexp_replace($x, '\\..*', '')
untuk mendapatkan seluruh bagian danregexp_replace($x, '^[0-9]*\\.', '')
untuk mendapatkan bagian desimal. Gunakantoreal
alih-alihtoint
untuk perhitungan dengan ekspresi kedua untuk memastikan tidak ada pembulatan.sumber