디지타이즈 작업으로 새 데이터를 추가할 때, 피처에 대한 속성을 입력할 수 있는 대화 창이 나타납니다. 그러나 이 기본 대화 창은 한 눈에 파악하기 어렵습니다. 특히 여러분이 대용량 데이터셋을 생성하거나, 다른 사람들에게 디지타이즈 작업을 부탁했는데 기본 서식을 이해하기 어려워 할 경우 유용성 문제가 제기될 수 있습니다.
QGIS를 사용하면, 다행히도 레이어에 대한 사용자 지정 대화 창을 생성할 수 있습니다. 이 강의에서 그 방법을 배워보겠습니다.
이 강의의 목표: 레이어에 대한 서식을 생성하기.
이전과 마찬가지로 Edit Mode 로 들어갑니다.
레이어의 Attribute Table 을 엽니다.
테이블의 아무 셀이나 오른쪽 클릭하십시오. Open form 항목만 있는 간략한 메뉴가 나타납니다.
이 항목을 클릭해서 QGIS가 이 레이어를 위해 생성한 서식을 살펴보십시오.
물론 항상 Attribute Table 에서 특정 거리를 찾아봐야 하는 것보다 맵을 보면서 이 작업을 할 수 있다면 좋겠죠.
Select the roads layer in the Layers list.
다음 Identify 도구를 사용해서 맵에 있는 아무 거리나 클릭해보십시오.
The Identify Results panel opens and shows in a tree view the fields values and other general information about the clicked feature.
At the bottom of the panel, Check the Auto open form checkbox
Now, click again on any street in the map. Along the previous Identify Results dialog, you’ll see the now-familiar form:
Each time you click on a single feature with the Identify tool, its form pops-up unless the Auto open form is unchecked.
편집 모드에 들어온 상태라면, 이 서식을 사용해서 피처의 속성을 편집할 수 있습니다.
(편집 모드가 아니라면) 편집 모드를 활성화하십시오.
Identify 도구를 써서 Swellendam 을 가로지르는 중심가를 클릭하십시오.
중심가의 highway 값을 secondary 로 편집합니다.
편집 내용을 저장하십시오.
편집 모드에서 나오십시오.
Attribute Table 을 열고 속성 테이블에 있는 값이 업데이트된 것을 확인해보십시오. 따라서 소스 데이터의 값도 업데이트되었습니다.
주석
기본 데이터셋을 쓰고 있다면, 이 맵에 Voortrek Street 이라는 도로가 하나 이상 있다는 사실을 알 수 있을 겁니다.
서식을 사용해서 편집하는 것도 좋지만, 모든 것을 직접 입력해야 하기도 합니다. 다행스럽게도, 서식에는 서로 다른 다양한 방법으로 데이터를 편집할 수 있도록 해주는, 소위 말하는 *위젯*이 여러 종류 있습니다.
roads 레이어의 Layer Properties 를 엽니다.
Fields 탭을 선택하십시오. 다음과 같은 창을 볼 수 있습니다.
man_made 와 동일한 행에 있는 Line edit 버튼을 클릭하면 새로운 대화 창이 나타납니다.
옵션 목록에서 Checkbox 를 선택합니다.
OK 를 클릭합니다.
(roads 레이어의 편집 모드를 활성화하지 않은 경우) 편집 모드로 들어갑니다.
Identify 도구를 클릭합니다.
이전과 동일한 중심가를 클릭합니다.
이제 man_made 속성 옆에 True (체크함) 또는 False (체크 안 함) 를 나타내는 체크박스가 보일 것입니다.
완전히 새로운 여러분만의 사용자 지정 서식을 디자인할 수도 있습니다.
다음 두 속성을 가진 test-data 라는 단순한 포인트 레이어를 생성하십시오.
Name (텍스트)
Age (텍스트)
이 새 레이어에 디지타이즈 작업 도구로 포인트 몇 개를 찍어 간단한 데이터를 준비하십시오. 새 포인트를 만들 때마다 QGIS의 기본 속성 부여 서식이 나타날 것입니다.
주석
이전 단계에서 맞추기 옵션을 활성화시킨 채라면 비활성화시켜야 할 수도 있습니다.
이제 속성 데이터 부여 단계를 위해 사용자 지정 서식을 생성해야 합니다. 이를 위해 Qt4 Designer 를 설치해야 합니다. (이 프로그램은 서식을 생성하기 위해서만 필요합니다.) 윈도우를 사용하고 있다면 기본 강의 자료에 포함돼 있을 것입니다. 다른 OS를 사용하는 경우 직접 검색해서 찾아야 합니다. 우분투를 사용하고 있다면 터미널에서 다음 내용을 실행하면...
주석
이 강의를 작성하는 현재 최신 버전은 Qt5입니다. 그러나 이 과정에서 필요한 것은 Qt4로, 꼭 Qt5와 호환되는 것은 아닙니다.
sudo apt-get install qt4-designer
... 자동적으로 설치될 것입니다. 설치가 안 된다면 소프트웨어 센터 에서 찾아보십시오.
윈도우의 시작 메뉴 에서 (아니면 사용자의 OS에 적합한 실행 방법으로) Qt4 Designer 를 실행하십시오.
새 대화 창을 생성할 수 있는 다음 대화 창이 나타납니다.
창의 (기본적으로) 왼쪽에 있는 Widget Box 를 찾아보십시오. Line Edit 라는 항목을 담고 있습니다.
이 항목을 여러분의 서식으로 클릭 & 드래그합니다. 서식에 새로운 Line Edit 이 생성될 것입니다.
이 새로운 라인 편집 요소를 선택하면 (기본적으로 창의 오른쪽에 있는) 요소의 속성 창을 볼 수 있습니다.
Name 이라고 명명합니다.
동일한 방법으로, 새 스핀박스를 생성하고 Age 라고 명명합니다.
굵은 폰트의 Add a New Person 라는 텍스트를 가진 Label 을 추가합니다. (폰트를 설정하려면 오브젝트의 속성 창을 살펴보십시오.) 아니면 (라벨을 추가하기보다) 대화 창 자체의 제목으로 설정할 수도 있습니다.
사용자의 대화 창 아무 곳이나 클릭하십시오.
(기본적으로 창의 맨 위에 있는 툴바에 있는) Lay Out Vertically 버튼을 찾아 클릭하십시오. 사용자의 대화창 내용을 자동으로 정렬합니다.
(속성 창에서) 대화 창의 최대 크기를 200 (너비) x 100 (높이)로 설정합니다.
exercise_data/forms/add_people.ui 경로와 파일명으로 새 서식을 저장하십시오.
저장이 완료되면 Qt4 Designer 프로그램을 닫아도 됩니다.
QGIS로 다시 돌아갑니다.
레이어 목록의 test-data 레이어를 더블클릭해서 속성 테이블을 엽니다.
Layer Properties 대화 창의 Fields 탭을 클릭합니다.
Attribute editor layout 드롭다운 메뉴에서 Provide ui-file 을 선택합니다.
생략부호 버튼을 클릭한 다음 방금 생성한 add_people.ui 파일을 선택합니다.
Layer Properties 대화 창의 OK 를 클릭합니다.
편집 모드로 들어가 새 포인트를 찍어보십시오.
이제 (QGIS가 보통 생성하는 기본 대화 창 대신) 사용자 지정 대화창이 나타날 것입니다.
Identify 도구를 사용해 사용자의 포인트 하나를 클릭할 경우, 식별 결과 창을 오른쪽 클릭하고 콘텍스트 메뉴에서 View Feature Form 을 선택하면 사용자 지정 서식을 불러올 수 있습니다.
이 레이어에 대해 편집 모드로 들어가 있다면, 콘텍스트 메뉴에 Edit Feature Form 이 대신 보일 것입니다. 이제 포인트를 찍은 직후라 할지라도 새 서식에서 속성을 조정할 수 있습니다.
데이터 편집이나 생성 시 서식을 이용하면 훨씬 편하게 작업할 수 있습니다. 위젯 유형을 편집하거나 완전히 새로운 서식을 생성해서 해당 레이어를 위해 새 데이터를 디지타이즈하는 사람의 경험을 향상시켜 오해 및 불필요한 오류를 최소화할 수 있습니다.
If you completed the advanced section above and have knowledge of Python, you may want to check out this blog entry about creating custom feature forms with Python logic, which allows advanced functions including data validation, autocompletion, etc.
QGIS의 표준 액션 가운데 하나가 피처를 식별하는 작업과 동시에 서식을 여는 것입니다. 그러나 사용자가 정의한 사용자 지정 액션을 실행하도록 할 수 있습니다. 이것이 다음 강의의 내용입니다.