🖥️ 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 경로를 수정해야 함에 주의
결과
결과물은 이와 같다.
반응형