J'ai trouvé l'expression suivante pour convertir 5.1234 en 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) || '"'
Voici le problème: pour certains points comme 5.1234, cela fonctionne. mais pour d'autres, ce n'est pas le cas. Je soupçonne que le problème est la conversion entière qui arrondit les chiffres décimaux au lieu de la tronquer.
Y a-t-il une autre option? Merci.
qgis
latitude-longitude
calculator
Obsidianz
la source
la source
Réponses:
Je aime l'expression que vous avez mis ensemble - probablement pas de solution dans QGIS 1.8, mais dans QGIS 1.9-dev il y a une
floor()
fonction d' arrondi qui arrondit vers le bas . Pour D ° M'S '':Notez l'apostrophe échappée (
\'
).Pour D ° M.MMM ':
Pour limiter le nombre de minutes décimales affichées, remplacez # dans l'expression ci-dessous par le nombre de chiffres:
la source
L'opérateur modulo peut être utilisé pour faire de la troncature, mais l'expression résultante serait très moche. Il est plus joli d'utiliser la substitution de chaînes, mais malheureusement QGIS n'expose pas de strpos ou de fonctions similaires. Utilisez
regexp_replace($x, '\\..*', '')
pour obtenir la partie entière etregexp_replace($x, '^[0-9]*\\.', '')
pour obtenir la partie décimale. Utiliseztoreal
au lieu detoint
pour les calculs avec la deuxième expression pour vous assurer qu'il n'y aura pas d'arrondi.la source