테이블 결합 작업(QGIS3)

사용하고자 하는 모든 데이터셋이 공간데이터 형태이지는 않습니다. 종종 데이터는 테이블 또는 스프레드쉬트 이고 분석에 사용할 기존 공간 데이터에 연결할 필요가 있습니다. 이 작업이 테이블 결합 `Table Join`으로 알려져 있고 필드 값 처리 알고리즘으로 조인 속성을 사용하여 수행됩니다.

작업 개요

캘리포니아의 인구지도를 만들기 위해 미국통계국 US Census Bureau로부터 인구데이터 표와 캘리포니아의 센서스 트랙 shapefile을 사용합니다.

기타 스킬

  • QGIS에서 어떠한 기하학적 내용도 포함되지 않은 CSV파일을 불러옵니다.

  • DB 관리자를 사용하여 SQL 쿼리를 수행하여 그룹 통계를 계산합니다.

데이터 획득

US Census Bureau는 TIGER / Line Shapefile을 제공합니다. FTP 사이트를 방문하여 캘리포니아의 인구 조사 양식 shapefile을 다운로드 할 수 있습니다. Census Tracts for California 파일을 내려받기하십시오. <https://www.census.gov/en.html> <https://www2.census.gov/geo/tiger/TIGER2018/> <https://www2.census.gov/geo/tiger/TIGER2018/TRACT/tl_2018_06_tract.zip>

`Americal FactFinder <http://factfinder2.census.gov/faces/nav/jsf/pages/searchresults.xhtml?refresh=t>`_는 미국의 모든 센서스 데이터의 저장소입니다. `Advanced Search`를 사용할 수 있고 원하는 CSV를 만들고 다운로드 하기 위해 `Topic - Total Population`와 `Geographies - All Census Tracts in California`를 조회할 수 있습니다. 이 예제에서는 `TOTAL POPULATION | 2017 ACS 5-year estimates `을 사용합니다.

../../_images/data13.png

용이하게 하기 위해 두가지 데이터셋을 아래 링크로부터 바로 다운로드할 수 있습니다.

`tl_2018_06_tract.zip을 <http://www.qgistutorials.com/downloads/tl_2018_06_tract.zip>에서 다운받으세요

`ACS_17_5YR_B01003.zip 파일을<http://www.qgistutorials.com/downloads/ACS_17_5YR_B01003.zip>`_에서 내려받으세요

데이터 출처 [TIGER] [USCENSUS]

과정

  1. Locate the tl_2018_06_tract.zip file in the QGIS Browser and expand it. Select the tl_2018_06_tract.shp file and drag it to the canvas.
../../_images/1101.png
  1. 레이어 패널에 tl_2018_06_tract 레이어가 추가된 것을 볼 수 있습니다. 이 레이어에는 캘리포니아의 인구 조사 구역 경계가 있습니다. ``tl_2018_06_tract` 레이어를 마우스 오른쪽 버튼으로 클릭하고 속성 테이블 열기를 선택하십시오.

../../_images/248.png
  1. 레이어의 속성을 살펴보십시오. 이 레이어에 테이블을 결합하기 위해서는 각 객체의 유일하고 일반적인 속성이 필요합니다. 이 경우에는 ‘GEOID’필드가 각 트랙에서 유일한 구분자이고 같은 ID를 포함하고 있는 다른 테이블과 이 레이어을 ‘결합’ 할 수 있습니다.

../../_images/333.png
  1. ACS_17_5YR_B01003.zip 파일의 압축을 풀고 텍스트 편집기에서 ACS_17_5YR_B01003_with_ann.csv 파일을여십시오. 전 단계에서 보았던 유일한 구분자와 같이 있는 트랙에 대한 정보가 파일의 각 행에 포함되어 있음을 알게됩니다. CSV에서 ‘GEO.id2’라는 필드에 주목하십시오. 더불어 ‘HD01_VD01’열도 각 센서스 트랙의 인구값을 갖고 있음을 주지해야 합니다.

../../_images/418.png
  1. 이 CSV 파일을 가져 오기 전에 약간 수정해야합니다. QGIS CSV 임포터는 파일의 첫 번째 행에 열 제목을 포함하고 나머지 모든 행에는이 열에 대한 데이터가 포함될 것을 원합니다. 이 파일에는 열 레이블이있는 추가 행 2가 포함되어 있습니다. 해당 행을 삭제하고 파일을 저장하십시오.

../../_images/518.png
  1. 이제 QGIS에 CSV파일을 불러들일 준비가 되었습니다. 메뉴 레이어 –> 구분자로 분리된 텍스트 레이어를 추가 :`Layer –> Add Delimited Text Layer`로 갑니다.

../../_images/618.png
  1. 데이터 소스 관리자 창에서 ‘...’ 단추를 클릭하고 CSV 파일을 찾아서 선택하십시오. 파일 형식을 CSV (쉼표로 구분 된 값)로 선택했는지 확인하십시오. 이것을 테이블로 가져오기 때문에, ‘지오메트리 없음 (속성 테이블만)’ 옵션을 사용하여 파일에 지오메트리가 포함되지 않도록 지정해야합니다. 하단의 샘플 데이터 미리보기가 제대로 표시되는지 확인하고 추가를 클릭 한 다음 닫기를 클릭하십시오.

../../_images/717.png
  1. CSV는 이제 QGIS에 테이블로 가져오고 레이어 패널에서 ACS_17_5YR_B01003_with_ann으로 나타납니다. 이제 테이블 조인을 만들 준비가되었습니다. 처리 ‣ 톨박스 로 이동하십시오.

../../_images/817.png
  1. 먼저 Processing Toolbox에서 기본 설정을 변경해야합니다. 옵션 버튼을 클릭하십시오.

../../_images/917.png
  1. 처리 옵션 탭에서 Use filename as layer name를 선택하십시오. Processing Toolbox의 알고리즘을 사용할 때 이 옵션을 사용하면 출력 레이어 이름이 훨씬 직관적이고 유용합니다. 확인을 클릭하십시오.

../../_images/1017.png
  1. 처리 도구 상자로 돌아가서 일반벡터 ‣ ‘필드값으로 속성결합’ 알고리즘을 찾아서 두 번 클릭하여 엽니다.

../../_images/1120.png
  1. ‘필드값으로 속성결합’ 대화상자에서 tl_2018_06_tract를 레이어로 입력, GEOID를 테이블 필드로 선택하십시오. ACS_17_5YR_B01003_with_ann을 입력 레이어 2로 선택하고 GEO.id2를 테이블 필드로 선택하십시오. 다른 옵션을 기본값으로두고 ‘...’ 버튼을 클릭하여 출력 파일 위치를 선택하고 GeoPackage에 저장을 선택하십시오.

../../_images/1218.png
  1. 출력 GeoPackage를 이름을 join.gpkg로 지정하고 출력 레이어를 ,‘joined’ 이름으로 지정하십시오. 실행을 클릭하십시오.

../../_images/1318.png
  1. 처리가 완료되면 알고리즘이 성공적인지 확인하고 닫기를 클릭하십시오.

../../_images/1416.png
  1. 새 레이어가 레이어 패널에 로드된 것을 볼 수 있습니다. 이제 CSV 파일의 필드는 센서스 레이어와 결합됩니다. 결합된 레이어를 마우스 오른쪽 버튼으로 클릭하고 속성 테이블 열기를 선택하십시오.

../../_images/1515.png
  1. 모집단 추정치가 포함 된 HD01_VD01 필드를 포함하여 새로운 필드 세트가 표시됩니다.

../../_images/1615.png
  1. 인구 조사 구역 레이어에 인구 데이터가 있으므로 인구 분포를 시각화하도록 스타일을 지정할 수 있습니다. 결합된 레이어를 선택하고 레이어 스타일링 패널 열기 버튼을 클릭하십시오.

../../_images/1715.png
  1. 레이어 스타일링 패널의 드롭 다운 메뉴에서 눈금을 선택합니다. 인구 맵을 만들려고 할 때 인구 추정값을 기반으로 각 인구 조사관 기능에 서로 다른 색상을 표시하려고 합니다. 열로 HD01_VD01을 선택하십시오. 색상 램프 드롭 다운에서 원하는 색상 램프를 선택하십시오. 모드에서 5 개의 클래스가 있는 Quantile (등수)를 선택하십시오. 분류 버튼을 클릭하면 인구 범위가 색상 별로 표시하고 지도 레이어 업데이트가 됩니다. 맵에 만족하면 레이어 스타일링 패널을 닫을 수 있습니다.

../../_images/1814.png
  1. 모든 GIS 분석에서 결과를 검증하는 것은 좋은 습관입니다. 작업을 확인하기 위해 결과 레이어에서 간단한 쿼리를 실행하여 결과가 올바른지 확인할 수 있습니다. 데이터베이스 ‣ DB 관리자로 이동하십시오.

../../_images/1912.png
  1. QGIS에 로드된 모든 레이어는 별도의 데이터베이스로 로드하지 않고 SQL을 사용하여 쿼리 할 수 있는 가상 레이어로 사용할 수 있습니다. 이것은 SQLite 엔진과 Spatialite 라이브러리를 통해 공간 및 비 공간 SQL 쿼리를 가능하게 하여 많은 유용한 기능을 추가합니다. 가상레이어 ‣ 투영 레이어 ‣ 결합`에서 출력 레이어를 찾아서 선택하십시오. SQL 창 버튼을 클릭하십시오. <https://www.gaia-gis.it/fossil/libspatialite/index>

../../_images/209.png
  1. 다음 쿼리를 입력하고 HD01_VD01 필드를 합하여 주 전체 인구를 계산하십시오. 쿼리 탭에 쿼리를 입력하고 실행을 클릭하십시오. 하단 패널에 결과가 나타납니다. 결과가 캘리포니아 인구와 일치하는지 확인할 수 있습니다. <https://en.wikipedia.org/wiki/California>

select sum(HD01_VD01) as population from joined
../../_images/2114.png
  1. SQL 쿼리도 그룹 통계를 수행하는데 적합합니다. 다음은 인구 필드를 합산하지만 모든 인구 조사를 카운티별로 그룹화하고 카운티 별 총 인구 테이블을 만들기 위해 그룹 별 절을 추가하는 쿼리입니다. 쿼리는 또한 인구별로 결과를 정렬합니다. 또한 FIPS ID 037 (로스 앤젤레스 카운티)의 카운티가 캘리포니아에서 가장 인구가 많은 카운티인지 교차 검증 할 수 있습니다. <https://en.wikipedia.org/wiki/List_of_counties_in_California>

select COUNTYFP as county, sum(HD01_VD01) as population
from joined group by COUNTYFP order by population desc
../../_images/2212.png
comments powered by Disqus

This work is licensed under a Creative Commons Attribution 4.0 International License