GIS之arcgis系列08:arcpy实现批量excel转矢量点

文件夹内有很多excel表,每个excel表内有很多数据,爬取每条数据的日期、精度、纬度,根据经纬度将数据转换成矢量点,并指定坐标系。


完整版代码如下:

代码均已经过测试,可直接copy至arcgis工具箱中使用。

(copy后注意改成适用于自己数据的代码,微调相关信息)

python 复制代码
# -*- coding: utf-8 -*-
import pandas as pd
import arcpy
import os

input_folder = arcpy.GetParameterAsText(0)
output_folder = arcpy.GetParameterAsText(1)
if not os.path.exists(output_folder):
    os.makedirs(output_folder)
spatial_ref = arcpy.SpatialReference(4326)
temp_folder = output_folder

def process_excel_file(file_path, output_folder, temp_folder):
    df = pd.read_excel(file_path, header=0)

    columns_to_delete = [3, 4, 5, 6, 7, 10, 12, 13, 15, 16, 18, 21, 22]
    df.drop(df.columns[columns_to_delete], axis=1, inplace=True)

    new_column_names = {
        df.columns[2]: 'temmean',
        df.columns[3]: 'pre',
        df.columns[4]: 'temmax',
        df.columns[5]: 'windmax',
        df.columns[6]: 'temmin',
        df.columns[7]: 'rainmax'
    }
    df.rename(columns=new_column_names, inplace=True)

    date_col = 'Date'
    df[date_col] = pd.to_datetime(df[date_col])

    unique_dates = df[date_col].dt.date.unique()

    for date in unique_dates:
        date_df = df[df[date_col].dt.date == date]
        date_str = date.strftime('%Y%m%d')
        doy = date.timetuple().tm_yday
        temp_csv = os.path.join(temp_folder, "{}.csv".format(date_str))
        date_df.to_csv(temp_csv, index=False, encoding='utf-8')

        temp_layer = "temp_layer"
        if arcpy.Exists(temp_layer):
            arcpy.Delete_management(temp_layer)

        arcpy.MakeXYEventLayer_management(
            temp_csv, 'LON', 'LAT', temp_layer, spatial_ref
        )

        year_folder = file_path.split("\\")[-1].split(".")[0]
        print (year_folder)
        year_folder_path = os.path.join(output_folder, year_folder)
        if not os.path.exists(year_folder_path):
            os.makedirs(year_folder_path)

        output_shapefile = os.path.join(year_folder_path, "{}_{}.shp".format(year_folder, doy))
        arcpy.FeatureClassToFeatureClass_conversion(temp_layer, year_folder_path, os.path.basename(output_shapefile))


        os.remove(temp_csv)

for filename in os.listdir(input_folder):
    if filename.endswith(".xlsx"):
        file_path = os.path.join(input_folder, filename)
        process_excel_file(file_path, output_folder, temp_folder)

---------------完------------

相关推荐
诸葛大钢铁1 天前
Java实现Excel文件合并
java·windows·excel
赵钰老师1 天前
ArcGIS在洪水灾害普查、风险评估及淹没制图中的实践技术应用(洪水风险区划、防治区划、淹没制图、洪水灾害数据管理)
arcgis·数据分析
Ada大侦探1 天前
Excel实现某一列特定选项进行筛选且配上特定颜色
excel
没有梦想的咸鱼185-1037-16632 天前
北斗高精度数据解算:破解城市峡谷/长基线/无网区难题,从毫米级定位到自动化交付——(GAMIT/GLOBK底层核心解算技术方法)
运维·arcgis·数据分析·自动化
开开心心就好2 天前
桌面图标乱了怎么办,一键恢复固定位置工具
运维·服务器·windows·pdf·excel·3dsmax·houdini
偷心伊普西隆2 天前
EXCEL 自动化链接更新工具设计方案
自动化·excel
ai_coder_ai2 天前
如何在自动化脚本中使用excel文件?
excel·autojs·自动化脚本·冰狐智能辅助·easyclick
前端程序猿i2 天前
纯JS 导出 Excel 工具
开发语言·javascript·excel
✎ ﹏梦醒͜ღ҉繁华落℘2 天前
excel操作 ---删除空行
excel
吴佳浩 Alben2 天前
Claude Code 源码泄露事件深度剖析
人工智能·arcgis·语言模型·自然语言处理·npm·node.js