Wymyśliłem następujące wyrażenie, aby przekonwertować 5.1234 na 5 ° 7`24.24 "
toint ($ x) || „°” || toint ((($ x) - toint ($ x)) * 60) || '' '|| substr ((tostring (((($ x) - toint ($ x)) * 60) - toint ((($ x) - toint ($ x)) * 60)) * 60), 1,5) || „”
Oto problem: w przypadku niektórych punktów, takich jak 5.1234, działa. ale dla innych tak nie jest. Podejrzewam, że problemem jest konwersja liczb całkowitych, która zaokrągla liczby dziesiętne zamiast je obcinać.
Czy jest jakaś inna opcja? dzięki.
qgis
latitude-longitude
calculator
Obsidianz
źródło
źródło
Odpowiedzi:
Podoba mi się wyrażenie, które razem stworzyłeś - prawdopodobnie nie ma rozwiązania w QGIS 1.8, ale w QGIS 1.9-dev jest
floor()
funkcja zaokrąglania, która zaokrągla w dół . Dla D ° M'S '':Zwróć uwagę na apostrof (
\'
).Dla D ° M.MMM ”:
Aby ograniczyć liczbę wyświetlanych minut po przecinku, zamień # w poniższym wyrażeniu na liczbę cyfr:
źródło
Operatora modulo można użyć do obcięcia, ale wynikowe wyrażenie byłoby bardzo brzydkie. Korzystniej jest stosować podstawianie ciągów, ale niestety QGIS nie ujawnia żadnych strpos ani podobnych funkcji. Użyj,
regexp_replace($x, '\\..*', '')
aby uzyskać całą część iregexp_replace($x, '^[0-9]*\\.', '')
uzyskać część dziesiętną. Użyjtoreal
zamiasttoint
do obliczeń z drugim wyrażeniem, aby upewnić się, że nie będzie zaokrąglania.źródło