[QGIS] 지도데이터를 격자에 배치하는 방법, 면적구하기

2024. 3. 19. 20:25Data Science/Study 자료

사용된 데이터는 나주시 격자데이터와 농림지역 데이터(격자 X)

농림지역을 격자로 구분하고 격자로 배치시키는 작업

 

 

1. 지도데이터와 격자데이터를 결합

 

 

위 위치대로 격자로 쪼개어 주는 작업

벡터 - 지리 정보 처리 도구 - 교차영역을 눌러줍니다

입력레이어에는 기준이 될 데이터(격자) 중첩레이어에는 모양대로 자를(지도)를 배치시켜 주고 실행해 줍니다.

다음그림처럼 격자모양으로 지도가 배치된 모습

 

2.격자내 지역의 면적 계산

 

여기서 문제는 아주 조금만 걸친지역도 해당격자로 포함시켜 적용하기 때문에 농림지역이라고 하기 애매한 부분들도 포함이 될 수 있습니다.

때문에 사용자가 면적 범위를 지정해서 확실한 기준 구분점을 만들어 주어야 합니다.

(예를 들어 나는 면적이 꽉 찬 격자만 사용할 건지 70%까지 채워진 격자도 인정할 건지 이 부분을 정해주어야 한다.)

이후 필드 계산기를 열어줍니다

새 필드 생성에 체크, 산출 필드 이름에 면적 적고 가장 중요한 표현식 area($geometry)을 써줍니다.

하단 미리 보기에 면적이 계산되어 나오는 게 보입니다.

현제 격자가 250x250이기 때문에 최대면적은 62,500입니다. 

ok를 눌러줍니다.

 

해당 레이어의 우클릭 속성테이블로 가보시면 면적칼럼이 따로 생기는 것을 확인할 수 있습니다.

 

3. 지역선정 방법

해당레이어를 지오제이슨 파일로 내보내기 해주고 주피터로 열어줍니다.

import geopandas as gpd

# 지오JSON 파일 경로. 예시: 'your_file_path.geojson'
file_path = '농림전체.geojson'

# 지오JSON 파일을 읽어들여 GeoDataFrame 객체로 변환합니다.
gdf = gpd.read_file(file_path)

# GeoDataFrame의 첫 몇 줄을 출력하여 내용을 확인합니다.
gdf.head()
selected_columns_df = gdf[['gid_2', '면적','geometry']]

selected_columns_df= selected_columns_df.rename(columns={'gid_2': 'gid'})
# 결과 출력
selected_columns_df

제가 필요한 칼럼만 빼서 다루겠습니다.

저는 70%보다 크다면 농림지역이라고 선정을 하겠습니다.

df = selected_columns_df[selected_columns_df['면적']>=43750]

3000개 정도를 추렸습니다.

# 내보낼 파일 경로 설정
output_file_path = '70면적'

# GeoDataFrame을 지오JSON 파일로 내보내기
df.to_file(output_file_path, driver='GeoJSON')

print("지오JSON 파일이 성공적으로 내보내졌습니다:", output_file_path)

GeoJson파일로 추출을 해주었습니다.

 

해당파일을 열면 면적이 70% 이상되는 지역만 남아있습니다. 이제 해당 격자를 필요한 데이터에 합쳐서 사용하면 됩니다.

저는 사용하던 격자에 데이터만 넣어주기 위해  격자데이터 우클릭 속성에서 결합탭을 사용했습니다

격자 안으로 면적데이터가 들어가게 됩니다.

4. 완전한 격자형으로 만들기

추후 주피터노트북을 통해 데이터를 분리해 주면 기존 지도로 되어있던 데이터가 격자로 바뀌어 사용을 할 수 도 있습니다.

지도는 분홍색, 격자는 노란색

분홍색은 70%이상면적을 차지하는 지도데이터 노란색은 70%면적이 넘으면 완전한 격자로 표현되는 데이터