利用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="qqdlsjkV0312_final.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("\"","").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(f"{_:.6f}") for _ in  extent])centerStr = ",".join([str(f"{_:.6f}") 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("]","").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(f"{_:.6f}") for _ in  extent])centerStr = ",".join([str(f"{_:.6f}") for _ in center])f.write(f"{idx};{key};{extentStr};{centerStr};{wktstr}\n")idx +=1#处理补充# 处理 ditudf = pd.read_excel(file_path, sheet_name='buchong').valuesrow_nums, col_nums = df.shapewith open("buchongAFB_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("]", "").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(f"{_:.6f}") for _ in extent])centerStr = ",".join([str(f"{_:.6f}") for _ in center])f.write(f"{idx};{key};{extentStr};{centerStr};{wktstr}\n")idx += 1#处理南海df = pd.read_excel(file_path, sheet_name='nanhai').valuesrow_nums, col_nums = df.shapewith open("nanhaiAFB_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("]", "").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(f"{_:.6f}") for _ in extent])centerStr = ",".join([str(f"{_:.6f}") 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})

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/897885.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cursor使用

引入私有文档 设置-> Features->下滑找到Docs url后边多加一个 / 可以拉取url下所有的页面(子页面,子目录),不加只拉取url当前页面 使用 选择 Docs 回车 选择 文档 直接解析链接 链接 回车 搜索引擎 web 对比git版本差异 git 选择其中一个 g…

达梦数据库中插入导出图片的方法与应用

达梦数据库中插入导出图片的方法与应用 在数据库的实际应用场景中,图片存储是一项常见且重要的需求。以电商平台为例,商品展示图片是吸引消费者的关键元素;而在社交软件里,用户头像更是个人形象的直观体现。针对达梦数据库&#…

【云原生】动态资源分配(DRA)深度洞察报告

1. DRA 的发展与设计灵感 Kubernetes 早期通过 Device Plugin(设备插件)机制支持 GPU、NIC 等特殊硬件,将节点上可用设备数量上报给 kubelet 和调度器。但设备插件模式存在局限:调度器只能根据节点标签等属性粗粒度筛选&#xff…

嵌入式八股ARM篇

前言 ARM篇主要介绍一下寄存器和中断机制,至于汇编这一块…还请大家感兴趣自行学习 1.寄存器 R0 - R3 R4 - R11 寄存器 R0 - R3一般用作函数传参 R4 - R11用来保存程序运算的中间结果或函数的局部变量 在函数调用过程中 注意在发生异常的时候 cortex-M0架构会自动将R0-R3压入…

Python 实现的采集诸葛灵签

Python 实现的采集诸葛灵签 项目介绍 这是一个基于 Python 开发的诸葛灵签数据采集和展示项目。通过爬虫技术获取诸葛神签的签文和解签内容,并提供数据存储和查询功能。 项目结构 zhuge/├── zhuge_scraper.py # 爬虫主程序├── zhuge_pages/ # 数据存储目录…

【C++项目实战】校园公告搜索引擎:完整实现与优化指南

🎬 个人主页:谁在夜里看海. 📖 个人专栏:《C系列》《Linux系列》《算法系列》 ⛰️ 道阻且长,行则将至 目录 📚一、项目概述 📖1.项目背景 📖2.主要功能 📖3.界面展…

代理(Delegate)、闭包(Closure)、Notification(通知中心) 和 swift_event_bus适用场景和工作方式

在 Swift 开发中,在 Swift 开发中,代理(Delegate)、闭包(Closure)、Notification(通知中心) 和 swift_event_bus 主要用于 组件之间的通信,但它们的适用场景和工作方式有…

设计模式--单例模式(Singleton)【Go】

引言 在设计模式中,单例模式(Singleton Pattern)是一种非常常见且实用的模式。它的核心思想是确保一个类只有一个实例,并提供一个全局访问点。这种模式在需要全局唯一对象的场景中非常有用,比如配置管理、日志记录、数…

MySQL数据库复制

文章目录 MySQL数据库复制一、复制的原理二、复制的搭建1.编辑配置文件2.在主库上创建复制的用户3.获取主库的备份4.基于从库的恢复5.建立主从复制6.开启主从复制7.查看主从复制状态 MySQL数据库复制 MySQL作为非常流行的数据库,支撑它如此出彩的因素主要有两个&am…

Sourcetree——使用.gitignore忽略文件或者文件夹

一、为何需要文件忽略机制? 1.1 为什么要会略? 对于开发者而言,明智地选择忽略某些文件类型,能带来三大核心优势: 仓库纯净性:避免二进制文件、编译产物等污染代码库 安全防护:防止敏感信息&…

基于yolov8+streamlit实现目标检测系统带漂亮登录界面

【项目介绍】 基于YOLOv8和Streamlit实现的目标检测系统,结合了YOLOv8先进的目标检测能力与Streamlit快速构建交互式Web应用的优势,为用户提供了一个功能强大且操作简便的目标检测平台。该系统不仅具备高精度的目标检测功能,还拥有一个漂亮且…

分享vue好用的pdf 工具实测

vue3-pdf-app: 带大纲,带分页,带缩放,带全屏,带打印,带下载,带旋转 下载依赖: yarn add vue3-pdf-appornpm install vue3-pdf-app 配置类: 创建文件 pdfConfig.ts /…

基于微信小程序开发的宠物领养平台——代码解读

项目前端 一、项目的技术架构概况 一句话概括:该项目是基于微信小程序开发的宠物领养平台,采用原生小程序框架进行用户界面的构建,使用 wx.request 进行 API 请求,并通过 getApp() 和本地存储来管理全局状态和用户信息。 一&am…

最完美的WPF无边框设计!

常规的无边框方法设计 常规的WPF无边框设计方法都是通过AllowsTransparency="True"和WindowStyle=“None”,并且使用WindowChrome样式来实现,但是这样会有问题就是,窗体最大化的时候将底部任务栏给挡住了,另外最大化的时候不能拖动窗体。参考这个大佬的设计@ 若…

【区块链】btc

学习视频源链接: https://www.bilibili.com/video/BV1Vt411X7JF/ 本文是根据肖老师的视频进行的笔记记录 一、 cryptographic hash function 1.1. collision resistance抗碰撞性 : collision 指的是hash碰撞 抗碰撞性 (Collision Resistance) 是密码…

C语言【数据结构】:时间复杂度和空间复杂度.详解

引言 详细介绍什么是时间复杂度和空间复杂度。 前言:为什么要学习时间复杂度和空间复杂度 算法在编写成可执行程序后,运行时需要耗费时间资源和空间(内存)资源。因此衡量一个算法的好坏,一般是从时间和空间两个维度来衡量的,即时…

QT:文件读取

问题: 在文件读取,判断md5值时,遇到py文件读取转String后,再转byte,md5前后不一致问题。 解决方法: python文件读取要使用QTextStream,避免\t 、\r、\n的换行符跨平台问题(window…

32单片机——LED

LED原理图如图所示: 代码 DS0和DS1每过500ms一次交替闪烁,实现类似跑马灯的效果 GPIO输出配置步骤 (1)使能对应GPIO时钟 STM32在使用任何外设之前,我们都要先使能其时钟(下同)。本实验用到…

贪心算法和遗传算法优劣对比——c#

项目背景:某钢管厂的钢筋原材料为 55米,工作需要需切割 40 米(1段)、11 米(15 段)等 4 种规格 ,现用贪心算法和遗传算法两种算法进行计算: 第一局:{ 40, 1 }, { 11, 15…

【Java篇】一法不变,万象归一:方法封装与递归的思想之道

文章目录 Java 方法的使用:从基础到递归的全面解析一、方法的概念及使用1.1 什么是方法 (method)?1.2 方法定义1.3 方法调用的执行过程1.4 实参和形参的关系1.5 没有返回值的方法 二、方法重载2.1 为什么需要方法重载2.2 方法重载的概念2.2.4 C 和 Java 的比较&…