14.2. 레이어 생성

QGIS는 다음과 같은 여러 방법을 통해 레이어를 생성할 수 있습니다:

  • 아무것도 없이 처음부터 빈 레이어를 생성

  • 기존 레이어로부터 생성

  • 클립보드로부터 생성

  • 하나 이상의 레이어를 바탕으로 하는 SQL 호환 쿼리의 산출물로서 가상 레이어 를 생성

QGIS는 서로 다른 포맷을 가져오기/내보내기할 수 있는 도구들도 제공합니다.

14.2.1. 새 벡터 레이어 생성

QGIS는 서로 다른 포맷들로 새 레이어를 생성할 수 있습니다. QGIS는 GeoPackage, Shapefile, SpatiaLite, GPX 포맷 및 (메모리 레이어라고도 하는) 임시 스크래치 레이어를 생성할 수 있는 도구를 제공합니다. GRASS 플러그인 내부에서 새 GRASS 레이어 를 생성할 수도 있습니다.

14.2.1.1. 새 GeoPackage 레이어 생성하기

새 GeoPackage 레이어를 생성하려면 Layer ► Create Layer ► 메뉴 또는 Data Source Manager 툴바에서 newGeoPackageLayer New GeoPackage Layer… 를 선택하십시오. 그림 14.17 와 같은 New GeoPackage Layer 대화창이 열립니다.

../../../_images/editNewGeoPackage.png

그림 14.17 새 GeoPackage 레이어 생성 대화창

  1. 첫 단계는 데이터베이스 파일의 위치를 가리키는 것입니다. Database 필드의 오른쪽에 있는 버튼을 누른 다음 기존 GeoPackage 파일을 선택하거나 새 파일을 생성하면 됩니다. QGIS가 사용자가 지정한 명칭에 적합한 확장자를 자동적으로 추가할 것입니다.

  2. 새 레이어/테이블의 명칭을 (Table name) 입력합니다.

  3. Geometry type 에서 도형 유형을 정의합니다. 도형이 없는 레이어가 아니라면 Include Z dimension 그리고/또는 Include M values 옵션을 지정할 수 있습니다.

  4. setProjection 버튼으로 좌표계를 지정하십시오.

생성 중인 레이어에 필드를 추가하려면:

  1. Name: 필드명을 입력하십시오.

  2. Type: 데이터 유형을 선택하십시오. Text data, Whole number (integer 및 integer64 모두), Decimal number, DateDate and time, Binary (BLOB)Boolean 유형을 지원합니다.

  3. Maximum length: 선택한 데이터 유형에 따라, 해당 값의 최대 길이를 입력하십시오.

  4. newAttribute Add to Fields List 버튼을 클릭하십시오.

  5. 사용자가 추가해야 할 각 필드마다 앞의 단계를 반복합니다.

  6. 필요한 모든 필드를 정확하게 추가했다면 OK 를 클릭하십시오. QGIS가 범례에 새 레이어를 추가할 것입니다. 기존 레이어 디지타이징 절에서 설명하는 대로 새 레이어를 편집할 수 있습니다.

GeoPackage 레이어 생성 시 QGIS는 레이어의 기본 키로 동작하는 fid 라는 명칭의 Feature id column 을 기본적으로 생성합니다. 이 명칭은 수정할 수 있습니다. 도형 필드가 있는 경우, 그 명칭은 geometry 이며 Create a spatial index 옵션을 사용해서 공간 인덱스를 생성할 수 있습니다. 이 옵션들은 Advanced Options 아래에서 찾을 수 있으며, (사람이 해독할 수 있는 간단한 레이어명인) Layer identifierLayer description 도 함께 있습니다.

GeoPackage 레이어는 데이터베이스 관리자 를 통해 더 심도 있게 관리할 수 있습니다.

14.2.1.2. 새 shapefile 레이어 생성하기

새 ESRI Shapefile 포맷 레이어를 생성하려면 Layer ► Create Layer ► 메뉴 또는 Data Source Manager 툴바에서 newVectorLayer New Shapefile Layer… 를 선택하십시오. 그림 14.18 과 같은 New Shapefile Layer 대화창이 열립니다.

  1. File name 옆에 있는 버튼을 사용해서 경로 및 파일명을 지정하십시오. QGIS가 사용자가 지정한 명칭에 적합한 확장자를 자동적으로 추가할 것입니다.

  2. File encoding: 그 다음 데이터의 파일 인코딩을 설정하십시오.

  3. 레이어의 Geometry type 을 선택하십시오: 도형 없음(.DBF 포맷 파일로 산출), 포인트, 멀티포인트, 라인 또는 폴리곤

  4. 도형이 추가적인 차원을 가져야 할지 지정하십시오: None, Z (+ M values) 또는 M values

  5. setProjection 버튼으로 좌표계를 지정하십시오.

../../../_images/editNewVector.png

그림 14.18 새 shapefile 레이어 생성 대화창

생성 중인 레이어에 필드를 추가하려면:

  1. Name: 필드명을 입력하십시오.

  2. Type: 데이터 유형을 선택하십시오. Decimal number, Whole number, Text data 그리고 Date 속성만 지원합니다.

  3. LengthPrecision: 선택한 데이터 유형에 따라, 해당 값의 길이 및 정밀도를 입력하십시오.

  4. newAttribute Add to Fields List 버튼을 클릭하십시오.

  5. 사용자가 추가해야 할 각 필드마다 앞의 단계를 반복합니다.

  6. 필요한 모든 필드를 정확하게 추가했다면 OK 를 클릭하십시오. QGIS가 범례에 새 레이어를 추가할 것입니다. 기존 레이어 디지타이징 절에서 설명하는 대로 새 레이어를 편집할 수 있습니다.

기본적으로 id 라는 첫번째 정수열을 추가하지만, 이를 제거할 수 있습니다.

14.2.1.3. 새 SpatiaLite 레이어 생성하기

새 SpatiaLite 레이어를 생성하려면 Layer ► Create Layer ► 메뉴 또는 Data Source Manager 툴바에서 newSpatiaLiteLayer New SpatiaLite Layer… 를 선택하십시오. 그림 14.19 과 같은 New SpatiaLite Layer 대화창이 열립니다.

../../../_images/editNewSpatialite.png

그림 14.19 새 SpatiaLite 레이어 생성 대화창

  1. 첫 단계는 데이터베이스 파일의 위치를 가리키는 것입니다. Database 필드의 오른쪽에 있는 버튼을 누른 다음 기존 SpatiaLite 파일을 선택하거나 새 파일을 생성하면 됩니다. QGIS가 사용자가 지정한 명칭에 적합한 확장자를 자동적으로 추가할 것입니다.

  2. 새 레이어용 명칭을 (Layer name) 입력하십시오.

  3. Geometry type 에서 도형 유형을 정의합니다. 도형이 없는 레이어가 아니라면 Include Z dimension 그리고/또는 Include M values 옵션을 지정할 수 있습니다.

  4. setProjection 버튼으로 좌표계를 지정하십시오.

생성 중인 레이어에 필드를 추가하려면:

  1. Name: 필드명을 입력하십시오.

  2. Select the data Type. Supported types are Text data, Whole number, Decimal number, Date and Date time.

  3. newAttribute Add to Fields List 버튼을 클릭하십시오.

  4. 사용자가 추가해야 할 각 필드마다 앞의 단계를 반복합니다.

  5. 필요한 모든 필드를 정확하게 추가했다면 OK 를 클릭하십시오. QGIS가 범례에 새 레이어를 추가할 것입니다. 기존 레이어 디지타이징 절에서 설명하는 대로 새 레이어를 편집할 수 있습니다.

원한다면 guilabel:Advanced Options 부분에 있는 checkbox Create an autoincrementing primary key 를 체크해서 오름차순 기본 키를 생성할 수 있습니다. (기본 명칭이 geometry 인) Geometry column 을 재명명할 수도 있습니다.

SpatiaLite 레이어는 데이터베이스 관리자 를 통해 더 심도 있게 관리할 수 있습니다.

14.2.1.4. Creating a new Mesh layer

To create a new Mesh layer, press the newMeshLayer New Mesh Layer… button in the Layer ► Create Layer ► menu or from the Data Source Manager toolbar. The New Mesh Layer dialog will be displayed as shown in 그림 14.20.

../../../_images/editNewMesh.png

그림 14.20 Creating a New Mesh layer dialog

  1. The first step is to indicate the mesh file location. This can be done by pressing the button to the right of the File name field and select an existing mesh file or create a new one.

  2. Provide a name (Layer name), i.e. the name the layer is displayed with in the Layers panel

  3. Select the File format: currently supported mesh file formats are 2DM Mesh File (*.2dm), Selafin File (*.slf) and UGRID (*.nc).

  4. Indicate the Coordinate Reference System to assign to the dataset

  5. The above steps will generate an empty layer that you can afterwards digitize vertices and add dataset groups to. It’s however also possible to initialize the layer with an existing mesh layer, i.e. populate the new layer with vertices or faces from the other. To do so:

    1. Check checkbox Initialize Mesh using

    2. and select either a Mesh from the current project or Mesh from a file. Informations on the selected mesh file are displayed for checkup.

    Note that only the frame of the mesh layer is transferred to the new layer; their datasets are not copied.

14.2.1.5. 새 GPX 레이어 생성하기

To create a new GPX file:

  1. Select Create Layer ► createGPX New GPX Layer… from the Layer menu.

  2. In the dialog, choose where to save the new file, name it and press Save.

  3. Three new layers are added to the Layers Panel:

    • a point layer to digitize locations (waypoints) with fields storing the name, elevation, comment, description, source, url and url name

    • a line layer to digitize sequences of locations that make up a planned route (routes) with fields storing the name, symbol, number, comment, description, source, url, url name

    • and a line layer to track the receiver’s movement over time (tracks) with fields storing the name, symbol, number, comment, description, source, url, url name.

  4. You can now edit any of them as described in section 기존 레이어 디지타이징.

14.2.1.6. 새 임시 스크래치 레이어 생성하기

임시 스크래치 레이어는 인 메모리(in-memory) 레이어입니다. 디스크 상에 저장되지 않고 QGIS 종료 시 폐기될 레이어라는 뜻입니다. 일시적으로 필요한 피처를 저장하거나, 공간 처리 연산 도중의 매개 레이어어로서 사용하는 데 편리합니다.

새 임시 스크래치 레이어를 생성하려면 Layer ► Create Layer ► 메뉴 또는 Data Source Manager 툴바에서 createMemory New Temporary Scratch Layer… 를 선택하십시오. 그림 14.21 과 같은 New Temporary Scratch Layer 대화창이 열립니다.

  1. Layer name: 레이어 명칭을 입력하십시오.

  2. Geometry type: 도형 유형을 선택하십시오. 다음과 같은 유형을 생성할 수 있습니다:

    • No geometry: 단순 테이블 역할을 하는 비도형 유형 레이어

    • Point 또는 MultiPoint 레이어

    • LineString/CompoundCurve 또는 MultiLineString/MultiCurve 레이어

    • Polygon/CurvePolygon 또는 MultiPolygon/MultiSurface 레이어

  3. 도형 유형에 대해 데이터셋의 차원을 지정하십시오: Include Z dimension 그리고/또는 Include M values 를 가져야 할지 확인하십시오.

  4. setProjection 버튼으로 좌표계를 지정하십시오.

  5. 레이어에 필드를 추가하십시오. 다른 많은 포맷과는 달리, 임시 레이어는 어떤 필드도 없이 생성할 수 있습니다. 따라서 이 단계는 부가적입니다.

    1. Name: 필드명을 입력하십시오.

    2. Type: 데이터 유형을 선택하십시오. Text, Whole number, Decimal number, Boolean, Date, Time, Date & TimeBinary (BLOB) 유형을 지원합니다.

    3. LengthPrecision: 선택한 데이터 유형에 따라, 해당 값의 길이 및 정밀도를 입력하십시오.

    4. newAttribute Add to Fields List 버튼을 클릭하십시오.

    5. 사용자가 추가해야 할 각 필드마다 앞의 단계를 반복합니다.

  6. 임시 스크래치 레이어 설정에 만족한다면 OK 를 클릭하십시오. QGIS가 Layers 패널에 새 레이어를 추가할 것입니다. 기존 레이어 디지타이징 절에서 설명하는 대로 새 레이어를 편집할 수 있습니다.

../../../_images/editNewTemporaryLayer.png

그림 14.21 새 임시 스크래치 레이어 생성 대화창

미리 내용을 채운 임시 스크래치 레이어도 생성할 수 있습니다. 예를 들자면 클립보드(클립보드로부터 새 레이어 생성 참조)나 공간 처리 알고리즘 의 결과물로부터 말이죠.

디스크 상에 메모리 레이어를 영구적으로 저장하기

임시 스크래치 레이어를 가진 프로젝트를 종료할 때 데이터 손실을 예방하려면, 해당 레이어를 QGIS가 지원하는 모든 벡터 포맷으로 저장할 수 있습니다:

  • 레이어 옆에 있는 indicatorMemory 표시 아이콘을 클릭하거나

  • 레이어의 컨텍스트 메뉴에서 Make permanent 항목을 선택하거나

  • 컨텍스트 메뉴의 Export ► 항목 또는 Layer ► Save As… 메뉴를 선택합니다.

이 각 명령들은 기존 레이어로부터 레이어 생성 절에서 설명하는 Save Vector Layer as 대화창을 엽니다. 대화창에서 저장한 파일이 Layers 패널에 있는 임시 레이어를 대체합니다.

14.2.2. 기존 레이어로부터 레이어 생성

Layer ► Save As… 메뉴를 선택하거나 Layers panel 에서 레이어를 오른쪽 클릭하고 다음 가운데 하나를 선택하면, 래스터 및 벡터 레이어 둘 다 서로 다른 포맷으로 저장 그리고/또는 서로 다른 좌표계로 재투영할 수 있습니다:

  • Export ► Save As…: 래스터 레이어용

  • Export ► Save Features As… 또는 Export ► Save Selected Features As…: 벡터 레이어용

  • 레이어 트리에서 Browser Panel 에 있는 PostGIS 항목으로 레이어를 드래그&드롭하십시오. 이때 Browser Panel 에 PostGIS 연결이 있어야만 한다는 사실을 기억하십시오.

14.2.2.1. 공통 파라미터

Save Layer as… 대화창에는 레이어 저장 습성을 변경할 수 있는 파라미터가 몇 가지 있습니다. 다음은 래스터 및 벡터 레이어에 공통된 파라미터 가운데 일부입니다:

  • File name: 디스크 상에 있는 파일의 위치입니다. 산출물 레이어를 참조할 수도 있고, 레이어를 저장하고 있는 컨테이너를 (예를 들면 GeoPackage, SpatiaLite 또는 오픈도큐먼트 스프레드시트 같은 데이터베이스 호환 포맷을) 참조할 수도 있습니다.

  • CRS: 데이터를 재투영하기 위해 변경할 수 있습니다.

  • Extent: restricts the extent of the input that is to be exported using the extent_selector widget

  • Add saved file to map: 캔버스에 저장한 파일을 새 레이어로 추가합니다.

그런데 다음 몇몇 파라미터는 래스터 및 벡터 유형에 특화돼 있습니다:

14.2.2.2. 래스터 특화 파라미터

내보내기 포맷에 따라, 일부 옵션을 사용하지 못 할 수도 있습니다:

  • Output mode: raw data 또는 rendered image 가운데 하나를 선택할 수 있습니다.

  • Format: GeoTiff, GeoPackage, MBTiles, Geospatial PDF, SAGA GIS Binary Grid, Intergraph Raster, ESRI .hdr Labelled 등등 GDAL이 작성할 수 있는 모든 래스터 포맷으로 내보낼 수 있습니다.

  • Resolution: 이미지의 해상도를 설정합니다.

  • Create Options: 파일 생성 시 (파일 압축, 블록 크기, 색채 분석 colorimetry 등의) 고급 옵션을 사용할 수 있습니다. 산출물 포맷과 관련된 미리 정의된 생성 프로파일 을 사용할 수도 있고, 또는 각 파라미터를 설정할 수도 있습니다.

  • Pyramids: 피라미드 구조를 생성합니다.

  • VRT Tiles: 사용자가 checkbox Create VRT 를 선택한 경우 이 옵션을 쓸 수 있습니다.

  • No data values

../../../_images/saveasraster.png

그림 14.22 새 래스터 레이어로 저장하기

14.2.2.3. 벡터 특화 파라미터

내보내기 포맷에 따라, 다음 가운데 일부 옵션을 사용할 수 있습니다:

  • Format: GeoPackage, GML, ESRI Shapefile, AutoCAD DXF, ESRI FileGDB, Mapinfo TAB or MIF, SpatiaLite, CSV, KML, ODS 등등 GDAL이 작성할 수 있는 모든 벡터 포맷으로 내보낼 수 있습니다.

  • Layer name: File name 이 컨테이너 호환 포맷을 참조하는 경우 사용할 수 있는 이 옵션은 산출물 레이어를 나타냅니다.

  • Encoding

  • Save only selected features: 선택한 피처들만 내보냅니다.

  • Select fields to export and their export options: 사용자가 value map 같은 편집 위젯 으로 필드 습성을 설정한 경우, checkbox Replace all selected raw fields values by displayed values 를 체크하면 레이어 안에 표시된 값을 유지할 수 있습니다.

  • Persist layer metadata: ensures that any layer metadata present in the source layer will be copied and stored:

    • in the newly created layer, if the output is of GeoPackage format

    • as a .qmd file along with the output layer, for other formats. Note that file-based formats supporting more than one dataset (e.g. SpatiaLite, DXF,…) may have unintended behavior.

  • Symbology export: 주로 DXF 내보내기에 사용되지만, DXF, KML, TAB 파일 포맷처럼 OGR 피처 스타일을 관리하는 (다음 참고 참조) 모든 파일 포맷으로 내보낼 수 있습니다.

    • No symbology: 데이터를 읽는 응용 프로그램의 기본 스타일

    • Feature symbology: OGR 피처 스타일로 스타일을 저장 (다음 참고 참조)

    • Symbol Layer symbology: OGR 피처 스타일로 저장(다음 참고 참조)하지만 심볼 레이어가 반복해서 이용한 심볼이 있을 경우 동일 도형을 반복해서 내보냅니다.

    • Scale: 최신 옵션에 척도 값을 적용할 수 있습니다.

참고

OGR 피처 스타일 이란 데이터에 스타일을 숨은 속성으로 직접 저장할 수 있는 방법입니다. 몇몇 포맷만이 이런 종류의 정보를 처리할 수 있습니다. KML, DXF 및 TAB이 바로 그런 파일 포맷입니다. 고급 정보를 원한다면 OGR 피처 스타일 사양 문서를 읽어보면 됩니다.

  • Geometry: 산출물 레이어의 도형 성능 환경을 설정할 수 있습니다.

    • geometry type: Automatic 으로 설정한 경우 피처의 원본 도형을 유지하고, 그렇지 않을 경우 제거하거나 아무 유형으로나 대체(override)합니다. 속성 테이블에 텅 빈 도형 열을 추가할 수 있고, 공간 레이어에서 도형 열을 제거할 수 있습니다.

    • Force multi-type: 레이어에 멀티도형 피처를 강제로 생성합니다.

    • Include z-dimension: 도형에 Z 차원을 포함시킵니다.

레이어 도형 유형을 대체(override)하는 옵션은 (.csv 파일 같은) 도형이 없는 테이블을 아무 도형 유형(포인트, 라인, 폴리곤)이나 가진 shapefile로 저장할 수 있기 때문에, addPart Add Part 도구를 통해 행에 도형을 직접 추가할 수 있습니다.

  • Datasource Options, Layer Options 또는 Custom Options: 산출물 포맷에 따라 고급 파라미터들을 환경 설정할 수 있습니다. 일부는 데이터 포맷 및 필드 탐구 에서 설명하고 있지만, 전체 내용을 알고 싶다면 GDAL 드라이버 문서를 참조하세요. 각 파일 포맷은 고유의 맞춤 파라미터를 보유하고 있습니다. 예를 들어 GeoJSON 포맷의 경우, GDAL GeoJSON 문서를 살펴보십시오.

../../../_images/saveasvector.png

그림 14.23 새 벡터 레이어로 저장하기

벡터 레이어를 기존 파일로 저장하는 경우, 사용자가 산출물 포맷(Geopackage, SpatiaLite, FileGDB 등등)의 성능에 따라 다음을 결정할 수 있습니다:

  • 파일 전체를 덮어 쓰기

  • 대상 레이어만 덮어 쓰기 (레이어명 설정 가능)

  • 기존 대상 레이어에 피처 추가

  • 새 필드가 있을 경우 필드와 함께 피처 추가

ESRI Shapefile, MapInfo .tab 같은 포맷의 경우도 피처를 추가할 수 있습니다.

14.2.3. 새 DXF 파일 생성하기

단일 레이어를 *.DXF 등의 다른 포맷으로 내보낼 수 있는 옵션을 제공하는 Save As… 대화창 이외에도, QGIS는 레이어 여러 개를 단일 DXF 레이어로 내보낼 수 있는 또다른 도구를 제공하고 있습니다. Project ► Import/Export ► Export Project to DXF… 메뉴로 이 도구를 이용할 수 있습니다.

DXF Export 대화창에서 사용자는 다음 작업을 할 수 있습니다:

  1. 대상(destination) 파일 지정

  2. 가능한 경우 심볼 모드 및 척도 선택 (OGR 피처 스타일 참고 참조)

  3. Encoding: 데이터 인코딩 선택

  4. CRS: 적용할 좌표계 선택: 선택한 레이어를 지정한 좌표계로 재투영합니다.

  5. 테이블 위젯에서 체크하거나 기존 맵 테마 에서 자동으로 고르는 방법으로 DXF 파일에 포함시킬 레이어를 선택합니다. Select AllDeselect All 버튼을 사용하면 내보낼 데이터를 신속하게 설정할 수 있습니다.

    각 레이어에 대해, 모든 피처를 단일 DXF 레이어로 내보낼지 또는 피처들을 DXF 산출물에 생성된 레이어들로 분할하는 데 쓰이는 값을 보유한 필드를 의존할지 선택할 수 있습니다.

다음 체크박스들도 선택적으로 사용할 수 있습니다:

  • checkbox Use the layer title as name if set: 이 옵션을 활성화하면 레이어명 대신 레이어 제목을 사용합니다.

  • checkbox Export features intersecting the current map extent: 이 옵션을 활성화하면 현재 맵 캔버스 범위를 가로지르는 피처도 내보냅니다.

  • unchecked Force 2d output (eg. to support polyline width): 이 옵션을 활성화하면 산출물을 2차원으로 강제합니다.

  • checkbox Export label as MTEXT elements: 이 옵션을 활성화하면 라벨을 MTEXT(다중행 텍스트)로 내보냅니다. 체크를 해제할 경우 일반 텍스트로 내보냅니다.

../../../_images/export_dxf.png

그림 14.24 프로젝트를 DXF로 내보내기 대화창

14.2.4. 클립보드로부터 새 레이어 생성

클립보드 상에 있는 피처를 새 레이어로 붙여넣을 수 있습니다. 이 작업을 하려면 피처를 몇 개 선택해서 클립보드로 복사한 다음, Edit ► Paste Features as ► 메뉴의 다음 메뉴 옵션 가운데 하나를 선택해서 새 레이어에 붙여넣으십시오:

  • New Vector Layer…: Save vector layer as… 대화창이 열립니다. (파라미터에 대한 설명은 기존 레이어로부터 레이어 생성 참조)

  • Temporary Scratch Layer…: 레이어 명칭을 입력해야 합니다.

선택한 피처 및 그 속성을 가진 새 레이어를 생성합니다. (그리고 맵 캔버스에 추가합니다.)

참고

QGIS 안에서 선택하고 복사한 피처는 물론, 다른 응용 프로그램에서 ─ WKT(Well-Known Text)를 이용해서 정의된 도형이라면 ─ 도형을 복사해도 클립보드로부터 레이어를 생성할 수 있습니다.

14.2.5. 가상 레이어 생성

가상 레이어는 특별한 종류의 벡터 레이어입니다. QGIS가 지원하는 여러 다른 벡터 레이어 포맷을 대상으로 한 SQL 쿼리의 산출물로 레이어를 정의할 수 있게 해줍니다. 가상 레이어는 자체적으로 데이터를 보유하지 않으며, 뷰로 표시할 수 있습니다.

가상 레이어를 생성하려면, 다음 방법으로 가상 레이어 생성 대화창을 여십시오:

  • Layer ► Add Layer ► 메뉴에서 addVirtualLayer Add/Edit Virtual Layer 항목을 선택하거나

  • Data Source Manager 대화창에서 addVirtualLayer Add Virtual Layer 탭을 선택하거나

  • DB Manager 대화창의 트리를 사용합니다.

대화창에서 Layer name 및 SQL Query 를 지정할 수 있습니다. 쿼리는 불러온 벡터 레이어의 명칭(또는 ID)을 테이블처럼 이용할 수 있으며, 테이블의 필드명을 열처럼 사용할 수도 있습니다.

예를 들면, airports 라는 레이어가 있을 경우 다음과 같은 SQL 쿼리를 통해 public_airports 라는 가상 레이어를 생성할 수 있습니다:

SELECT *
FROM airports
WHERE USE = "Civilian/Public"

airports 레이어의 기저 제공자가 어떤 것이든, 심지어 해당 제공자가 SQL 쿼리를 직접 지원하지 않는다고 해도, SQL 쿼리는 실행될 것입니다.

../../../_images/create_virtual_layers.png

그림 14.25 가상 레이어 생성 대화창

예를 들어 공항과 국가 정보를 결합시키려면, 다음과 같이 결합(join) 및 복잡 쿼리를 생성할 수도 있습니다:

SELECT airports.*, country.population
FROM airports
JOIN country
ON airports.country = country.name

참고

데이터베이스 관리자 플러그인 의 SQL 창을 이용해서 가상 레이어를 생성할 수도 있습니다.

14.2.5.1. 쿼리에 사용하기 위해 레이어를 삽입하기

맵 캔버스에서 작업할 수 있는 벡터 레이어 이외에도, 사용자가 Embedded layers 목록에 레이어를 추가할 수 있습니다. 이렇게 추가한 레이어는 맵 캔버스 또는 레이어 패널에 표시될 필요 없이 사용자가 쿼리에 이용할 수 있습니다.

레이어를 삽입하려면, Add 를 클릭한 다음 Local name, Provider, Encoding 그리고 Source 를 가리키는 경로를 입력하십시오.

Import 버튼을 누르면 맵 캔버스에 불러온 레이어를 삽입 레이어 목록에 추가할 수 있습니다. 이렇게 하면 향후 기존 쿼리를 고장내지 않고 레이어 패널에서 해당 레이어를 제거할 수 있습니다.

14.2.5.2. 지원하는 쿼리 언어

기저 엔진은 작업 수행에 SQLite 및 SpatiaLite를 이용합니다.

즉 사용자가 로컬 설치한 SQLite가 지원하는 모든 SQL을 이용할 수 있다는 뜻입니다.

가상 레이어 쿼리에 SQLite의 기능 및 SpatiaLite의 공간 기능을 이용할 수도 있습니다. 예를 들어, 다음과 같은 쿼리를 통해 속성만 가지고 있는 레이어로부터 포인트 레이어를 생성할 수 있습니다:

SELECT id, MakePoint(x, y, 4326) as geometry
FROM coordinates

가상 레이어 쿼리에 QGIS 표현식 함수 를 이용할 수도 있습니다.

레이어의 도형 열을 참조하려면, geometry 명칭을 이용하십시오.

순수한 SQL 쿼리와는 반대로, 가상 레이어 쿼리의 모든 필드는 명칭을 가지고 있어야만 합니다. 사용자가 이용하는 열이 계산식 또는 함수 호출의 산출물인경우 사용자 열을 명명하는 데 as 키워드를 사용해야 한다는 사실을 기억하십시오.

14.2.5.3. 성능 문제

기본 파라미터를 설정하고 나면, 가상 레이어 엔진은 최선을 다해 쿼리의 서로 다른 열들의 유형을 ─ 도형 열이 존재할 경우 도형 열의 유형도 포함해서 ─ 탐지하려 할 것입니다.

이 탐지 작업은 가능한 경우 쿼리를 내부 검사하거나 또는 불가능할 경우 마지막 수단으로 쿼리의 첫 행(LIMIT 1)을 불러와서 이루어집니다. 레이어를 생성하기 위해서만 쿼리 결과의 첫 행을 불러오는 것은 성능 관련 이유 때문에 바람직하지 않을 수도 있습니다.

가상 레이어 생성 대화창의 파라미터는 다음과 같습니다:

  • Unique identifier column: 이 옵션으로 QGIS가 행 식별자로 이용할 수 있는 유일 정수 값들을 나타내는 쿼리 필드를 지정할 수 있습니다. 기본적으로, 자동 증가하는 정수 값이 쓰입니다. 유일 식별자 열을 정의하면 ID로 행을 선택하는 작업 속도를 향상시킬 수 있습니다.

  • No geometry: 이 옵션으로 가상 레이어가 모든 도형 필드를 강제로 무시하도록 만들 수 있습니다. 속성만 가지고 있는 레이어를 산출합니다.

  • 도형 Column: 이 옵션으로 레이어의 도형으로 쓰일 열의 명칭을 지정할 수 있습니다.

  • 도형 Type: 이 옵션으로 가상 레이어의 도형 유형을 지정할 수 있습니다.

  • 도형 CRS: 이 옵션으로 가상 레이어의 좌표계를 지정할 수 있습니다.

14.2.5.4. 특별 주석

가상 레이어 엔진은 쿼리의 각 열의 유형을 결정하려 합니다. 실패할 경우, 열 유형을 결정하기 위해 쿼리의 첫 행을 불러옵니다.

몇몇 특별 주석을 이용하면 쿼리 안에서 특정 열의 유형을 직접 지정할 수 있습니다.

특별 주석의 문법은 /*:type*/ 입니다. 열 명칭의 바로 뒤에 이 주석을 달아야 합니다. type 자리에 정수의 경우 int, 부동소수점 실수의 경우 real, 또는 문자열의 경우 text 를 넣을 수 있습니다.

다음은 예시입니다:

SELECT id+1 as nid /*:int*/
FROM table

도형 열의 유형 및 좌표계도 특별 주석으로 설정할 수 있습니다. 문법은 /*:gtype:srid*/ 입니다. 이때 gtype 자리에 도형 유형(point, linestring, polygon, multipoint, multilinestring 또는 multipolygon)을 넣을 수 있으며, srid 자리엔 좌표계의 EPSG 코드를 나타내는 정수값을 넣을 수 있습니다.

14.2.5.5. 인덱스 사용

가상 레이어를 통해 레이어를 호출하는 경우, 소스 레이어의 인덱스를 다음 방식으로 이용할 것입니다:

  • 레이어의 기본 키 열에 대해 = 서술자(predicate)가 쓰인 경우, 기저 데이터 제공자에게 해당 특정 ID(FilterFid)를 물을 것입니다.

  • 다른 서술자(>, <=, != 등등)가 쓰이거나 기본 키가 없는 열에 대해 쓰인 경우, 기저 벡터 데이터 제공자를 요청하는 데 표현식에서 생성된 요청을 이용할 것입니다. 즉 인덱스가 존재하는 경우 데이터베이스 제공자에 대해 인덱스를 이용할 수도 있다는 뜻입니다.

요청 내부의 공간 서술자를 처리하고 공간 인덱스 이용을 요청하는 데 특화된 문법이 존재합니다. 각 가상 레이어에 대해 _search_frame_ 이라는 숨은 열이 존재합니다. 이 열과 경계 상자와의 동일성을 비교할 수 있습니다. 다음은 그 예시입니다:

SELECT *
FROM vtab
WHERE _search_frame_=BuildMbr(-2.10,49.38,-1.3,49.99,4326)

이 공간 인덱스 문법과 함께 사용하는 경우, ST_Intersects 같은 공간 2진(binary) 서술자의 실행 속도가 현저히 빨라집니다.