테이블 결합 작업(QGIS3)

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

작업 개요

We will use a shapefile of census tracts for California and population data table from US Census Bureau to create a population density map for california.

기타 스킬

  • 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/1104.png
  1. 레이어 패널에 tl_2018_06_tract 레이어가 추가된 것을 볼 수 있습니다. 이 레이어에는 캘리포니아의 인구 조사 구역 경계가 있습니다. ``tl_2018_06_tract` 레이어를 마우스 오른쪽 버튼으로 클릭하고 속성 테이블 열기를 선택하십시오.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

../../_images/1616.png
  1. Now that we have the population data in the census tracts layer, we can style it to create a visualization of population density distribution. Select the joined layer and click the Open the Layer Styling Panel button.
../../_images/1717.png
  1. In the Layer Styling panel, select Graduated from the drop-down menu. As we are looking to create a population density map, we want to assign different color to each census tract feature based on the population density. We have the population in the HD01_VD01 field, but we don’t have population density in any fields to select as the Value. Fortunately, QGIS allows us to input an expression here. Click Expression button.
../../_images/1816.png

주석

When creating a thematic (choropleth) map such as this, it is important to normalize the values you are mapping. Mapping total counts per polygon is not correct. It is important to normalize the values dividing by the area. If you are displaying totals such as crime, you can normalize them by diving by total population, thus mapping crime rate and not crime. Learn more

  1. Enter the following expression to calculate the population density. $area calculates the area of the feature in square meters. We then convert it to square miles and calculate the population density with the formula Population/Area. Click OK.
"HD01_VD01"/ (0.386*$area/1e6)
../../_images/1913.png
  1. Back in the Layer Styling Panel, choose a color ramp of your choice and click Classify. You can adjust the class ranges to be more appropriate to the region.
../../_images/2010.png
  1. The visualization feels a bit cluttered because of the polygon borders. Click on the dropdown next to Symbol. Select Simple fill and check Transparent stroke.
../../_images/2115.png
  1. Now we have a nice looking information visualization of population density in California.
../../_images/2213.png
If you liked tutorials on this site and do check out spatialthoughts.com for more free resources.
comments powered by Disqus

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