Ich habe mir den folgenden Ausdruck ausgedacht, um 5.1234 in 5 ° 7`24.24 umzuwandeln. "
toint ($ x) || '°' || toint ((($ x) - toint ($ x)) * 60) || '`' || substr ((tostring (((($ x) - toint ($ x)) * 60) - toint ((($ x) - toint ($ x)) * 60)) * 60), 1,5) || '"'
Hier ist das Problem: Für einige Punkte wie 5.1234 funktioniert es. aber für andere nicht. Ich vermute, das Problem ist die Ganzzahlkonvertierung, die die Dezimalzahlen aufrundet, anstatt sie abzuschneiden.
Gibt es eine andere Option? Vielen Dank.
qgis
latitude-longitude
calculator
Obsidianz
quelle
quelle
Antworten:
Ich mag den Ausdruck , den Sie haben zusammen - wahrscheinlich keine Lösung in QGIS 1.8, aber in QGIS 1.9-dev gibt es eine
floor()
Rundungsfunktion , die rundet unten . Für D ° M'S '':Beachten Sie das entkommene Apostroph (
\'
).Für D ° M.MMM ':
Um die Anzahl der angezeigten Dezimalminuten zu begrenzen, ersetzen Sie # im folgenden Ausdruck durch die Anzahl der Ziffern:
quelle
Der Modulo-Operator kann zum Abschneiden verwendet werden, aber der resultierende Ausdruck wäre sehr hässlich. Es ist schöner, die Zeichenfolgensubstitution zu verwenden, aber leider macht QGIS keine Strpos oder ähnliche Funktionen verfügbar. Verwenden Sie
regexp_replace($x, '\\..*', '')
diese Option , um den gesamten Teil undregexp_replace($x, '^[0-9]*\\.', '')
den Dezimalteil abzurufen. Verwenden Sietoreal
statttoint
für Berechnungen mit dem zweiten Ausdruck, um sicherzustellen, dass keine Rundung erfolgt.quelle