티스토리 뷰
반응형
1. 국립공원에 해당하는 도엽번호를 기준으로 토지피복지도를 추출하여 사용자가 원하는 폴더로 저장하는 코드
아래 그림같이 세분류 토지피복지도는 88,526개의 파일이다. 여기서 필요한 도엽을 추출하는 것은 시간적 낭비가 될 수 있다. 따라서 해당되는 도엽번호만 추출하면 효율적일 수 있다.
반응형
<전체코드>
사용하는 방법은
1. 세분류 토지피복지도 전체가 있는 src_folder,
2. 원하는 도엽만을 저장하는 dst_folder,
3. 도엽번호가 저장된 CSV파일의 경로를 지정하면된다.
import os
import shutil
import csv
def read_target_filenames(csv_file_path):
target_filenames = []
with open(csv_file_path, mode='r', newline='') as csvfile:
csvreader = csv.reader(csvfile)
for row in csvreader:
if row: # ensure the row is not empty
target_filenames.append(row[0])
return target_filenames
def copy_matching_files(src_folder, dst_folder, target_filenames):
# Create the destination folder if it does not exist
if not os.path.exists(dst_folder):
os.makedirs(dst_folder)
# Create a set of target basenames for quick lookup
target_basenames = {os.path.splitext(filename)[0] for filename in target_filenames}
# Counter for copied .shp files
shp_file_count = 0
# Iterate over the files in the source folder
for filename in os.listdir(src_folder):
# Get the basename without extension
basename = os.path.splitext(filename)[0]
# Check if the basename is in the target list
if basename in target_basenames:
src_file_path = os.path.join(src_folder, filename)
dst_file_path = os.path.join(dst_folder, filename)
shutil.copy(src_file_path, dst_file_path)
print(f"Copied {filename} to {dst_folder}")
# Increment the counter if the file is a .shp file
if filename.endswith('.shp'):
shp_file_count += 1
# Print the total number of .shp files copied
print(f"Total number of .shp files copied: {shp_file_count}")
# Example usage
src_folder = 'C:\\Users\\web1m\\Downloads\\k_data\\토지피복\\토지피복도(세분류)2021'
dst_folder = 'C:\\토지피복_2024\\팔공산_세분류_2021'
csv_file_path = 'C:\\토지피복_2024\\팔공산5k도엽_45개.csv' # Path to the CSV file containing filenames
# Read target filenames from the CSV file
target_filenames = read_target_filenames(csv_file_path)
# Copy matching files
copy_matching_files(src_folder, dst_folder, target_filenames)
반응형
'QGIS실습' 카테고리의 다른 글
래스터 데이터 여러개를 특정지역에 맞게 일괄 자르기 (1) | 2024.01.17 |
---|---|
단일 값 1을 갖는 래스터 파일로 변경하기 (0) | 2024.01.09 |
속성테이블에서 다중 속성값 변경하기 (0) | 2024.01.08 |
랜덤 샘플 포인트에 토지피복 유형 부여하기 (0) | 2024.01.07 |
특정영역의 크기로 래스터 파일을 자르기 (0) | 2024.01.07 |
댓글