🖥️ IT, 컴퓨터/🐍 Python

[Python] 파이썬에서 도로 shp파일을 시군별로 clip하는 반복문 사용:: 지오판다스로 clip하기

김 홍시 2024. 10. 31. 16:50
반응형

문제상황

 

현재 경기도 도로 shp파일이 있는데,

이것을 시군별로 잘라내고 싶다.

 

해결방법

아래의 파이썬 geopandas 코드 이용 

import geopandas as gpd
import os

# 도로 데이터 파일 경로
road_shp_path = r"도로경로/도로.shp"
road_gdf = gpd.read_file(road_shp_path)

# 시군 경계 파일이 있는 폴더 경로
city_folder_path = r"시군경계파일있는폴더의경로"

# 시군별로 클립된 결과를 저장할 폴더 경로 (필요한 경우 새로 생성)
output_folder = r"저장할폴더경로"
os.makedirs(output_folder, exist_ok=True)

# 도로 데이터 좌표계를 시군 경계 파일에 맞춰 변환 (EPSG:5186으로 맞춘다고 가정)
road_gdf = road_gdf.to_crs("EPSG:5186")

# 시군별 경계 파일을 순회하며 도로 데이터 클립 수행
for filename in os.listdir(city_folder_path):
    if filename.endswith(".shp"):
        # 시군 경계 파일 경로
        city_boundary_path = os.path.join(city_folder_path, filename)
        
        # 시군 경계 GeoDataFrame 불러오기
        city_gdf = gpd.read_file(city_boundary_path)
        
        # 도로 데이터 클립 수행
        clipped_road = gpd.clip(road_gdf, city_gdf)
        
        # 클립된 결과를 저장할 파일명 설정
        city_name = os.path.splitext(filename)[0]  # 시군 이름 추출
        output_path = os.path.join(output_folder, f"{city_name}_clipped_road.shp")
        
        # 클립된 데이터 저장
        clipped_road.to_file(output_path)
        print(f"{city_name}의 도로 데이터가 클립되어 저장되었습니다: {output_path}")

 

도로 경로와 시군 경계 shp 경로를 수정해야 함에 주의

 

 

결과

 

 

결과물은 이와 같다.

반응형