欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 美景 > 利用python生成excel中模板范围对应的shape文件

利用python生成excel中模板范围对应的shape文件

2025/3/12 6:17:13 来源:https://blog.csdn.net/dododododoooo/article/details/146188484  浏览:    关键词:利用python生成excel中模板范围对应的shape文件

利用python生成excel中模板范围对应的shape文件

# -*- coding: utf-8 -*-
import os.pathimport pandas as pd
from shapely.geometry import Polygon
from shapely.wkt import dumps
import argparse# 创建解析器
parser = argparse.ArgumentParser(description="这是一个示例程序")
# 添加位置参数(必须提供)
parser.add_argument("-i","--input",default="duplicate.xlsx",  type=str, help="输入文件路径")
# 读取Excel文件的默认工作表
# 解析参数
args = parser.parse_args()# 使用参数
print(f"输入文件路径: {args.input}")
# df = pd.read_excel('demo.xlsx')def getWkt(minx,miny,maxx,maxy):# 创建一个几何多边形对象polygon = Polygon([(minx, miny), (minx, maxy), (maxx, maxy), (maxx, miny)])# 调用dumps方法,将几何对象转换为WKT字符串wkt_string = dumps(polygon)print(wkt_string)return wkt_stringdef getlistFromStr(strs):str_l = str(strs).replace("'","").replace("[","").replace("]","")str_ll = str_l.split(",")return [float(s) for s in str_ll]ccc=0import numpy as np
def getUpdateExtent(externs):exten_np = np.stack(externs)minx =np.min(np.array([np.min(exten_np[:,0]),np.min(exten_np[:,2])]))miny = np.min(np.array([np.min(exten_np[:,1]),np.min(exten_np[:,3])]))maxx = np.max(np.array([np.max(exten_np[:,0]),np.max(exten_np[:,0])]))maxy = np.max(np.array([np.max(exten_np[:,1]),np.max(exten_np[:,3])]))return [minx,miny,maxx,maxy]def dealNanhai(path):file_path = pathdf = pd.read_excel(file_path, sheet_name='Sheet1').valuesrow_nums, col_nums = df.shapewith open("nanhai_deal.csv","w") as f:f.write("id;airport;extent;center;wkt\n")idx=1for row in range(row_nums):key = df[row, 0]extent = df[row, 1]jw_s = str(extent).split(',')zb_s = []for jw in jw_s:zbs= str(jw).split('-')for zb in zbs:zb_s.append(float(zb))ccc=0extent = [zb_s[0],zb_s[2],zb_s[1],zb_s[3]]ccc=0wktstr = getWkt(*extent)center = [(extent[0]+extent[2])/2,(extent[1]+extent[3])/2]# 输出到文件extentStr = ",".join([str(_) for _ in  extent])centerStr = ",".join([str(_) for _ in center])f.write(f"{idx};{key};{extentStr};{centerStr};{wktstr}\n")idx +=1def dealDuplicate(path):file_path = path#处理 shijudf = pd.read_excel(file_path, sheet_name='shiju').valuesrow_nums, col_nums = df.shapewith open("shijuAFB_deal.csv","w") as f:f.write("id;airport;extent;center;wkt\n")idx=1for row in range(row_nums):key = df[row, 0]extent = df[row, 1]extent = extent.replace("[","").replace("]","").replace("\"","").replace("\"","")jw_s = str(extent).split(',')zb_s = []for jw in jw_s:zb_s.append(float(jw))ccc=0extent = [zb_s[0],zb_s[1],zb_s[2],zb_s[3]]ccc=0wktstr = getWkt(*extent)center = [(extent[0]+extent[2])/2,(extent[1]+extent[3])/2]# 输出到文件extentStr = ",".join([str(_) for _ in  extent])centerStr = ",".join([str(_) for _ in center])f.write(f"{idx};{key};{extentStr};{centerStr};{wktstr}\n")idx +=1#处理 ditudf = pd.read_excel(file_path, sheet_name='ditu').valuesrow_nums, col_nums = df.shapewith open("dituAFB_deal.csv","w") as f:f.write("id;airport;extent;center;wkt\n")idx=1for row in range(row_nums):key = df[row, 0]extent = df[row, 1]extent = extent.replace("\"","").replace("\"","").replace("[","").replace("]","")jw_s = str(extent).split(',')zb_s = []for jw in jw_s:# zbs= str(jw).split('-')# for zb in zbs:zb_s.append(float(jw))ccc=0extent = [zb_s[0],zb_s[1],zb_s[2],zb_s[3]]ccc=0wktstr = getWkt(*extent)center = [(extent[0]+extent[2])/2,(extent[1]+extent[3])/2]# 输出到文件extentStr = ",".join([str(_) for _ in  extent])centerStr = ",".join([str(_) for _ in center])f.write(f"{idx};{key};{extentStr};{centerStr};{wktstr}\n")idx +=1if __name__ == "__main__":# file_path = "南海目标.xlsx"# dealNanhai(file_path)# print(f"success")dealDuplicate(args.input)print(f"success")# getWkt(10,20,30,60)# file_path = 'demo.xlsx'# file_path = args.input# df = pd.read_excel(file_path, sheet_name='Sheet1',usecols=['file_path','extent']).values# row_nums,col_nums = df.shape# port_map={}# with open("demo_deal.csv","w") as f:#     f.write("id;airport;extent;center;wkt\n")#     for row in range(row_nums):#         file_path = df[row,0]#         extent = df[row,1]#         extent_list = getlistFromStr(extent)#         airport_name = file_path.split('/')[0]#         extents = port_map.get(airport_name,list())#         extents.append(extent_list)#         port_map[airport_name]=extents#         ccc=0#     idx=1#     for key,value in port_map.items():#         extent = getUpdateExtent(value)#         wktstr = getWkt(*extent)#         center = [(extent[0]+extent[2])/2,(extent[1]+extent[3])/2]#         # 输出到文件#         extentStr = ",".join([str(_) for _ in  extent])#         centerStr = ",".join([str(_) for _ in center])#         f.write(f"{idx};{key};{extentStr};{centerStr};{wktstr}\n")#####         idx += 1# print(f"success! output:{os.path.abspath(os.path.join(os.getcwd(),'demo_deal.csv'))}")# ccc=0# ccc=0
# import pandas as pd
#
# file_path = 'data.xlsx'
# df = pd.read_excel(file_path, sheet_name='Sheet2', usecols=['A', 'C'])
#
# print(df)
# # 读取指定的工作表
# df = pd.read_excel('demo.xlsx', sheet_name='Sheet1')
# ccc=0
# # # 读取特定的列
# # df = pd.read_excel('demo.xlsx', usecols=['A', 'C', 'E'])
#
# # 指定数据类型
# # df = pd.read_excel('demo.xlsx', dtype={'列名': str})

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词