Outdated version of the documentation. Find the latest one here.

7.1. Lesson: 데이터 재투영 및 변환

좌표계(CRS) 얘기를 다시 해봅시다. 이전에 간략하게 언급했지만, 실제로 어떤 의미를 가지고 있는지에 대해서는 설명하지 않았습니다.

이 강의의 목표: 벡터 데이터를 재투영하고 변환하기.

7.1.1. basic Follow Along: 투영

맵 자체는 물론 모든 데이터는 현재 WGS84라는 CRS를 사용하고 있습니다. WGS84는 데이터를 표현하는 데 쓰이는 매우 흔한 지리좌표계(GCS)입니다. 그러나 이제 곧 설명할 문제점도 가지고 있습니다.

  • 현재 맵을 저장하십시오.

  • 그 다음 exercise_data/world/world.qgs 경로에 있는 세계 지도를 여십시오.

  • Zoom In 도구를 사용해서 남아프리카 공화국으로 줌인하십시오.

  • 창 맨 아래의 Status Bar 에 있는 Scale 항목으로 통해 축척을 설정해보십시오. 남아프리카 공화국이 보이는 상태에서 1:5000000 (5백만 분의 1)로 값을 설정합니다.

  • Scale 항목에 주의를 기울이면서 맵을 이리저리 이동해보십시오.

축척이 변하는 것을 보셨습니까? 여러분이 1:5000000 축척으로 줌인한, 화면 정중앙에 있던 포인트를 벗어났기 때문입니다. 그 포인트를 벗어나면 축척이 달라집니다.

그 이유를 이해하려면, 지구의를 생각해보십시오. 남북 방향으로 선이 뻗어 있습니다. 이 경도 선들은 적도에서는 멀리 떨어져 있지만 남극/북극에서 만납니다.

GCS는 이 구체 상에서 정의되지만, 여러분의 모니터는 평면입니다. 평면에서 구체를 표현하려 할 때, 마치 테니스 공을 잘라서 평평하게 펼치려고 할 때처럼, 왜곡이 발생합니다. 즉 맵 상에서는 경도 선들이 (서로 만나야 할) 극지방에서도 평행하게 떨어져 있습니다. 다시 말해 맵 상에서 적도로부터 멀어질수록, 여러분이 보는 오브젝트의 축척이 점점 커진다는 뜻입니다. 한 마디로 말하자면 맵 상의 위치에 따라 축척이 계속 변한다는 말이지요!

이 문제를 해결하기 위해 투영좌표계(PCS)를 대신 사용해봅시다. PCS는 축척 변화를 감안하여 바로잡는 방식으로 데이터를 “투영”하거나 변환합니다. 따라서 축척을 일정하게 유지하려면 PCS를 이용해서 데이터를 재투영해야 합니다.

7.1.2. basic Follow Along: “실시간” 재투영

QGIS는 “실시간(on the fly)”으로 데이터를 재투영할 수 있습니다. 데이터 자체가 다른 좌표계를 이용하고 있더라도, 사용자가 바라는 좌표계로 데이터를 투영할 수 있다는 뜻입니다.

  • 이 “실시간” 투영을 활성화하려면, QGIS 창의 맨 아래의 Status Bar 에 있는 CRS Status 버튼을 클릭하십시오.

../../../_images/crs_status_button.png
  • 대화 창이 나타나면, Enable ‘on the fly’ CRS transformation 옆에 있는 체크박스를 체크합니다.

  • Filter 입력란에 global 이라는 텍스트를 입력합니다. 아래쪽의 목록에 좌표계(NSIDC EASE-Grid Global)가 하나 나타날 것입니다.

  • NSIDC EASE-Grid Global 을 클릭해서 선택한 다음, OK 를 클릭하십시오.

  • 남아프리카 공화국의 형태가 어떻게 변하는지 보셨습니까? 투영체를 바꾸면 지구 상의 오브젝트의 형태가 바뀝니다.

  • 이전과 마찬가지로 1:5000000 축척으로 줌인하십시오.

  • 맵을 이리저리 이동해보십시오.

  • 축척이 일정하게 유지됩니다!

서로 다른 CRS를 이용하는 데이터셋을 결합하는 데에도 “실시간” 재투영을 사용할 수 있습니다.

  • 다음과 같이 “실시간” 재투영을 비활성화합니다.

    • CRS Status 버튼을 다시 클릭하십시오.

    • Enable ‘on the fly’ CRS transformation 체크박스를 해제합니다.

    • OK 를 클릭합니다.

  • In QGIS 2.0, the ‘on the fly’ reprojection is automatically activated when

layers with different CRSs are loaded in the map. To understand what ‘on the fly’ reprojection does, deactivate this automatic setting:

  • 메뉴에서 Settings ‣ Options... 를 선택합니다.

  • 대화 창의 왼쪽 패널에서 CRS 를 선택하십시오.

  • Un-check :guilabel:`Automatically enable ‘on the fly’ reprojection if layers

have different CRS`. * Click OK.

  • 남아프리카 공화국의 데이터만을 가지고 있는 다른 벡터 레이어를 맵에 추가해보십시오. exercise_data/world/RSA.shp 경로에서 찾을 수 있습니다.

보이십니까?

레이어가 보이지 않습니다! 그래도 이 문제는 쉽게 해결할 수 있죠?

  • Layers list 에서 RSA 레이어를 오른쪽 클릭합니다.

  • Zoom to Layer Extent 를 선택합니다.

네, 이제 남아프리카 공화국이 보이는군요... 그런데 세계 지도는 어디로 갔을까요?

이 두 레이어를 하나씩 볼 수는 있지만, 동시에 볼 수는 없습니다. 두 레이어가 이용하는 좌표계가 서로 너무나 다르기 때문입니다. continents 데이터셋은 도(degrees) 단위로 돼 있지만, RSA 데이터셋은 미터(meters) 단위로 돼 있습니다. 그러니까, RSA 데이터셋에 있는 케이프타운의 어떤 지점이 적도로부터 약 4,100,000 미터 떨어져 있다고 해봅시다. 그런데 continents 데이터셋의 동일한 지점은 적도로부터 약 33.9 도 떨어져 있습니다.

이 거리는 똑같습니다. 하지만 QGIS는 그걸 모르죠. 데이터를 재투영하라고 하지 않았으니까요. 즉 QGIS 입장에서는, RSA 데이터셋이 담고 있는 남아프리카 공화국 버전의 케이프타운이 적도에서 4,100,000 미터라는 정확한 거리에 있습니다. 그러나 continents 데이터셋에서는 적도에서 33.9 미터 거리에 있는 겁니다! 이제 문제가 뭔지 아시겠습니까?

QGIS는 케이프타운이 있어야 할 곳을 모릅니다. 데이터가 그걸 알려줘야 하는 것이죠. 데이터가 QGIS에 케이프타운이 적도에서 34 미터 떨어져 있고 남아프리카 공화국의 남북 길이가 12 미터라고 한다면, QGIS는 그렇게 그릴 것입니다.

이 문제를 해결하려면,

  • Click on the CRS Status button again and switch

Enable ‘on the fly’ CRS transformation on again as before. * Zoom to the extents of the RSA dataset.

이제 동일한 CRS를 이용해 재투영되고 있기 때문에 다음과 같이 두 데이터셋이 딱 맞춰집니다.

../../../_images/with_reprojection.png

서로 다른 데이터셋들로부터 데이터를 결합하는 경우, 동일한 CRS를 이용하지 않을 수도 있다는 점을 기억해야 합니다. “실시간” 재투영 기능으로 두 데이터셋을 함께 표출할 수 있습니다.

다음 단계로 넘어가기 전에 서로 다른 CRS를 이용하는 데이터셋들을 열 때마다 ‘실시간’ 재투영이 자동적으로 활성화되도록 만드는 편이 좋겠죠?

  • 메뉴에서 Settings ‣ Options... 를 다시 클릭한 다음 CRS 를 선택합니다.

  • Automatically enable ‘on the fly’ reprojection if layers have different CRS 를 활성화합니다.

7.1.3. moderate Follow Along: 다른 CRS로 데이터셋 저장

‘범주화’ 강의에서 건물들의 면적을 계산했던 일을 기억하십니까? 면적을 기준으로 건물들을 범주화하기 위한 작업이었습니다.

  • (Swellendam 데이터를 담고 있는) 기본 맵을 다시 여십시오.

  • buildings 레이어의 속성 테이블을 여십시오.

  • AREA 열이 보일 때까지 오른쪽으로 스크롤합니다.

면적 값들이 얼마나 작은지 보이십니까? 0 값도 있을 겁니다. 면적을 도(degree)로 계산했기 때문입니다. 데이터가 투영좌표계를 이용하고 있지 않은 겁니다. 농장들의 면적을 평방미터로 계산하려면 데이터도 미터 단위를 이용해야 합니다. 따라서 재투영해야 할 필요가 있습니다.

그러나 ‘실시간’ 재투영만으로는 안 됩니다. ‘실시간’라는 말 그대로 데이터를 변경하지 않은 채 맵 상에 나타나는 레이어를 재투영하는 기능이기 때문입니다. 데이터 자체를 진짜로 재투영하려면, 새 투영체를 이용하는 새 파일로 내보내야 합니다.

  • Layers listbuildings 레이어를 오른쪽 클릭합니다.

  • 콘텍스트 메뉴의 Save As... 를 선택하십시오. Save vector layer as... 대화 창이 나타날 것입니다.

  • Save as 항목 옆에 있는 Browse 버튼을 클릭하십시오.

  • exercise_data/ 경로를 찾아가서 새 레이어의 파일명을 buildings_reprojected.shp 로 설정합니다.

  • Encoding 은 그대로 두십시오.

  • Layer CRS 드롭다운 메뉴의 값을 Selected CRS 로 변경합니다.

  • 드롭다운 메뉴 아래에 있는 Browse 버튼을 클릭합니다.

  • CRS Selector 대화 창이 나타날 것입니다.

  • Filter 란에서 34S 를 찾으십시오.

  • 목록에서 WGS 84 / UTM zone 34S 를 선택합니다.

  • Symbology export 는 그대로 두십시오.

이제 Save vector layer as... 대화 창이 다음처럼 보일 것입니다.

../../../_images/save_vector_dialog.png
  • OK 를 클릭합니다.

  • 새 맵을 시작해서 방금 생성한 재투영된 레이어를 불러옵니다.

‘범주화’ 강의에서 어떻게 면적을 계산했는지 떠올려보십시오.

  • 이전과 동일한 표현식을 실행해서 AREA 항목을 업데이트(또는 추가)합니다.

../../../_images/new_area_field.png

각 건물의 면적이 평방미터 단위로 AREA 열에 추가될 것입니다.

  • 다른 계산 단위로, 예를 들어 헥타르로 면적을 계산하려면 다음과 같이 AREA 열을 사용해서 두 번째 열을 생성해야 합니다.

../../../_images/new_hectare_field.png

Look at the new values in your attribute table. This is much more useful, as people actually quote building size in metres, not in degrees. This is why it’s a good idea to reproject your data, if necessary, before calculating areas, distances, and other values that are dependent on the spatial properties of the layer.

7.1.4. hard Follow Along: 사용자 지정 투영체 생성

QGIS에 기본으로 포함된 투영체 외에도 많은 투영체가 있습니다. 여러분 자신만의 투영체를 생성할 수도 있습니다.

  • 새 맵을 시작하십시오.

  • world/oceans.shp 데이터셋을 로드합니다.

  • 메뉴에서 Settings ‣ Custom CRS... 를 선택하면 다음 대화 창이 나타날 것입니다.

../../../_images/custom_crs.png
  • 새 투영체를 생성하려면 Add new CRS 버튼을 클릭하십시오.

Van der Grinten I 라는 투영체를 사용해볼 만합니다.

  • Name 란에 이 명칭을 입력하십시오.

이 투영체는 다른 대부분 투영체와는 달리 사각 면이 아니라 원형 면에 지구를 표현합니다.

  • 투영체의 파라미터로 다음 문자열을 입력하십시오.

+proj=vandg +lon_0=0 +x_0=0 +y_0=0 +R_A +a=6371000 +b=6371000 +units=m +no_defs

../../../_images/new_crs_parameters.png
  • OK 를 클릭합니다.

  • “실시간” 재투영을 활성화하십시오.

  • 새로 정의한 투영체를 (Filter 항목에서 명칭을 찾아서) 선택하십시오.

  • 이 투영체를 적용하면 맵이 다음과 같이 재투영될 것입니다.

../../../_images/van_grinten_projection.png

7.1.5. In Conclusion

목적에 따라 유용한 투영체도 달라집니다. 올바른 투영체를 선택함으로써 사용자 맵 상에 피처를 정확하게 표현할 수 있게 됩니다.

7.1.6. Further Reading

이 강의의 고급 내용을 위한 자료는 다음 포스팅 에서 빌려온 것입니다.

좌표계에 대한 자세한 정보는 이 곳 을 참조하십시오.

7.1.7. What’s Next?

다음 강의에서는 QGIS의 다양한 벡터 분석 도구들을 이용해 벡터 데이터를 분석하는 방법에 대해 배워보겠습니다.