17.6. CRS와 재투영

주석

이 강의에서 공간처리 프레임워크의 CRS 이용법을 배울 것입니다. 또 재투영이라는 매우 유용한 알고리듬도 살펴볼 것입니다.

QGIS 공간처리 사용자는 대부분 CRS를 혼란스러워합니다. 따라서 새 레이어 생성 시 공간 알고리듬이 CRS를 어떻게 다루는지에 대한 몇몇 일반적인 규칙을 설명하겠습니다.

  • 입력 레이어가 있을 경우 첫 번째 레이어의 CRS를 사용합니다. 모든 레이어의 CRS가 동일해야 하기 때문에, 첫 번째 레이어의 CRS를 모든 레이어의 CRS라고 가정하는 것입니다. 서로 일치하지 않는 CRS를 사용하는 레이어들을 쓸 경우, QGIS가 경고 메시지를 띄울 것입니다. 파라미터 대화 창에 입력 레이어의 CRS가 레이어명과 함께 나타난 다는 사실을 명심하십시오.

../../../_images/crs_layer.png
  • 입력 레이어가 없을 경우, 알고리듬이 (이전 강의의 격자선 알고리듬처럼) 특정 CRS 필드를 담고 있지 않는 이상, 프로젝트 CRS를 사용합니다.

이 강의에 해당하는 프로젝트를 열어보면 230304326 이라는 두 레이어를 볼 수 있습니다. 양쪽 다 동일한 포인트들을 담고 있지만, 서로 다른 CRS( EPSG:23030EPSG:4326 )를 사용합니다. QGIS가 실시간 재투영으로 프로젝트 CRS( EPSG:4326 )로 재투영하기 때문에 같은 위치에 있는 것으로 보일 뿐, 실제로 동일한 레이어는 아닙니다.

Export/Add geometry columns 알고리듬을 실행하십시오.

../../../_images/add_geom.png

이 알고리듬이 벡터 레이어의 속성 테이블에 새 열을 추가합니다. 해당 열의 내용은 레이어의 도형 유형에 따라 달라집니다. 포인트일 경우 각 포인트의 X 및 Y 좌표를 담은 새 열들을 추가합니다.

입력 레이어 항목에서 찾은 사용 가능한 레이어 목록에서, 각 레이어를 그에 대응하는 CRS와 함께 보게 될 것입니다. 즉 아무리 사용자의 맵 캔버스 위에 동일한 위치로 나타나더라도, 서로 다르게 다루어질 것이라는 의미입니다. 4326 레이어를 선택하십시오.

이 알고리듬의 또 하나의 파라미터로 어떻게 알고리듬이 좌표를 이용, 산출물 레이어에 추가할 새 값을 계산하는지 설정할 수 있습니다. 알고리듬 대부분은 이런 옵션을 지원하지 않고, 좌표를 직접 이용할 뿐입니다. Layer CRS 옵션을 선택해서 좌표 그자체로 이용하십시오. 대부분의 공간 알고리듬도 이렇게 작동합니다.

다른 두 레이어와 정확하게 동일한 포인트를 담은 새 레이어를 얻게 될 것입니다. 레이어명을 오른쪽 클릭해서 속성을 열어보면, 입력 레이어의 CRS인 EPSG:4326 을 사용한다는 사실을 알게 될 것입니다. QGIS가 이 레이어를 불러올 때, 해당 레이어의 CRS를 입력하라고 묻지 않을 것입니다. QGIS가 이미 알고 있기 때문입니다.

새 레이어의 속성 테이블을 열어보면 각 포인트의 X 및 Y 좌표를 담은 2개의 새 필드를 담고 있는 것을 보게 될 것입니다.

../../../_images/attribs2.png

이 좌표값들은 레이어의 CRS를 사용합니다. 해당 옵션을 선택했기 때문입니다. 그러나 사용자가 다른 옵션을 선택했더라도, 입력 레이어의 CRS를 사용해 산출물 레이어의 CRS를 설정하기 때문에, 산출물의 CRS는 동일했을 것입니다. 다른 옵션을 선택했더라면 값은 달라졌겠지만 산출 포인트가 달라지거나 산출물 레이어의 CRS가 입력 레이어의 CRS와 달라지지는 않습니다.

이제 다른 레이어를 사용해 동일한 계산을 하십시오. 산출물 레이어가 다른 레이어들과 정확히 동일한 위치에 렌더링됩니다. 이 레이어는 입력 레이어의 CRS인 EPSG:23030 을 사용할 것입니다.

해당 레이어의 속성 테이블을 열어보면, 첫 번째로 생성한 레이어와는 다른 값들을 볼 수 있을 것입니다.

../../../_images/attribs.png

원래 데이터가 (다른 CRS를 사용했기 때문에) 다르며, 이 다른 데이터에서 좌표를 가져왔기 때문입니다.

여기에서 무엇을 배울 수 있을까요? 이 예제의 중요한 의미는 공간 알고리듬이 레이어를 원래 데이터소스 그대로 사용하며, QGIS가 렌더링하기 전에 어떤 재투영을 하더라도 그것을 철저히 무시한다는 사실입니다. 다시 말해 맵 캔버스에 보이는 것을 믿지 말고, 원래 데이터가 사용된다는 사실을 항상 기억해야 한다는 뜻입니다. 이 경우에는 한 번에 하나의 레이어만 사용했기 때문에 그렇게 중요한 사실은 아니지만, 복수의 레이어가 필요한 (클리핑 알고리듬 같은) 알고리듬의 경우 일치하거나 겹치는 것처럼 보이는 레이어들이 서로 다른 CRS를 사용하고 있을 수도 있기 때문에 실제로는 서로 매우 다를 수도 있습니다.

알고리듬은 (다음에 배울 재투영 알고리듬을 제외하면) 재투영을 수행하지 않습니다. 따라서 레이어들이 동일한 CRS를 사용하도록 사용자가 확인해야 합니다.

재투영 알고리듬은 CRS를 다루는 흥미로운 모듈입니다. 이 알고리듬은 매우 특별한 경우인데, (재투영하게 될) 입력 레이어를 사용하지만, 입력 레이어의 CRS를 산출물의 CRS로 사용하지 않기 때문입니다.

Reproject layer 알고리듬을 실행하십시오.

../../../_images/reprojection.png

아무 레이어나 입력 레이어로 선택한 다음, 산출물의 CRS로 EPSG:23029 를 선택하십시오. 알고리듬을 실행하면 입력 레이어와 동일하지만, 다른 CRS를 사용하는 새 레이어를 얻게 됩니다. QGIS가 실시간 재투영을 하기 때문에 다른 레이어들과 마찬가지로 맵 캔버스의 동일한 지역에 나타나지만, 원래 좌표는 다릅니다. 이 새 레이어를 입력 레이어로 사용해 Export/Add geometry columns 알고리듬을 실행해서, 먼저 계산했던 두 레이어의 속성 테이블에 있는 값과는 다른 좌표가 추가되었다는 사실을 확인할 수 있습니다.