QGIS 필드 계산기를 사용하여 위도 / 경도를 초 단위 (DMS) 단위로 얻는 방법은 무엇입니까?


9

5.1234를 5 ° 7`24.24로 변환하기 위해 다음 식을 생각해 냈습니다. "

색조 ($ x) || '°'|| toint ((((xx)-toint ($ x)) * 60) || '`'|| substr ((tostring (((((xx-Toint ($ x)) * 60)-toint ((((xx)-toint ($ x)) * 60)) * 60), 1,5) || ' "'

문제는 다음과 같습니다. 5.1234와 같은 일부 지점에서는 작동합니다. 그러나 다른 사람들에게는 그렇지 않습니다. 문제는 소수점을 자르는 대신 반올림하는 정수 변환이라고 생각합니다.

다른 옵션이 있습니까? 감사.


해결 방법을 제안 할 수 있습니다. 최적은 아니지만 지금 막혀 있다면 작업을 완료 할 수 있습니다. 마우스 오른쪽 버튼을 클릭하고 CSV로 저장. Excel 또는 Google Docs에서 CSV를 열고 수식을 입력하십시오 (더 깨끗하고 쉬워야 함). 고유 식별자 및 변환 된 DMS 문자열을 제외한 모든 필드를 삭제하십시오. 저장해. 기존 레이어와 테이블 조인을 수행하면 설정됩니다.
공간 생각

1
음의 입력에주의하십시오.
whuber

그냥 spatialthought의 대답에 추가 : 반올림 아래 () 함수 FLOOR를 사용하여 Excel에서 작동합니다 가까운 정도.
Micha

답변:


3

QGIS 1.8 아마 해결책을하지만, QGIS 1.9 DEV에있다 - 나는 표현처럼 함께 넣지 한 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) || '"'

이스케이프 된 아포스트로피 ( \')에 유의하십시오 .

D ° M.MMM '의 경우 :

(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 이상)에서 작동하지만 현재 사용할 수있는보다 우아한 서식 기능이있을 수 있습니다.
Simbamangu

1
하나의 함정 : 공식은 Easting과 Northing의 긍정적 인 가치에 대해서만 작용합니다. 음수가 너무 작습니다. 0.5 ° E와 0.5 ° W가 어떻게 구별되는지 궁금합니다. floor (+/- 0.5)는 항상 -0이 아니라 0입니다.
AndreJ

아아아. 불충분 한 테스트의 함정 ... 그리고 여기 남쪽 (음수) 반구에서도 일하고 ​​있습니다. 곧 업데이트 중입니다.
Simbamangu

1

모듈러스 연산자를 사용하여 잘라내기를 수행 할 수 있지만 결과 표현식은 매우 추악합니다. 문자열 대체를 사용하는 것이 더 좋지만 불행히도 QGIS는 strpos 또는 유사한 기능을 노출하지 않습니다. regexp_replace($x, '\\..*', '')전체 부분 regexp_replace($x, '^[0-9]*\\.', '')을 얻고 소수 부분 을 얻는 데 사용하십시오 . 반올림이 없는지 확인하기 위해 두 번째 표현식을 사용한 계산 toreal대신 사용하십시오 toint.


2
strpos 함수는 없지만 지금은;) github.com/qgis/Quantum-GIS/commit/…
Nathan W

tsk tsk tsk, 너무 많은 공백 노이즈.
lynxlynxlynx 10

네, 첫 번째 비트는 새로운 기능과 관련이없는 약간의 정리 일뿐입니다.
Nathan W

못 생겼어 .. 해결하려고 노력할 것이다.
Obsidianz
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.