利用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})

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

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

相关文章

一二三应用开发平台——能力扩展:多数据源支持

背景 随着项目规模的扩大&#xff0c;单一数据源已无法满足复杂业务需求&#xff0c;多数据源应运而生。 技术选型 MyBatis-Plus 的官网提供了两种多数据源扩展插件&#xff1a;开源生态的 <font style"color:rgb(53, 56, 65);">dynamic-datasource</fon…

NAFNet:Simple Baselines for Image Restoration

Abstract 近年来&#xff0c;图像复原技术取得了长足的进步&#xff0c;但现有的图像复原方法&#xff08;SOTA&#xff09;系统复杂度也在不断增加&#xff0c;不利于对各种方法的分析和比较。在本文中&#xff0c;我们提出了一种简单的基线&#xff0c;它超越了SOTA方法&…

python语言总结(持续更新)

本文主要是总结各函数&#xff0c;简单的函数不会给予示例&#xff0c;如果在平日遇到一些新类型将会添加 基础知识 输入与输出 print([要输出的内容])输出函数 input([提示内容]如果输入提示内容会在交互界面显示&#xff0c;用以提示用户)输入函数 注释 # 单行注释符&…

基于springboot和spring-boot-starter-data-jpa快速操作mysql数据库

1、创建springboot项目 2、pom.xml文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http:…

【Spring】基础/体系结构/核心模块

概述&#xff1a; Spring 是另一个主流的 Java Web 开发框架&#xff0c;该框架是一个轻量级的应用框架。 Spring 是分层的 Java SE/EE full-stack 轻量级开源框架&#xff0c;以 IoC&#xff08;Inverse of Control&#xff0c;控制反转&#xff09;和 AOP&#xff08;Aspect…

VMware安装Windows server 2016

1、新建虚拟机&#xff0c;选择自定义模式 2、选择兼容性 4、命名虚拟机 5、固件类型 EFI 虚拟磁盘类型&#xff0c;不同电脑推荐的类型不同&#xff0c;用默认的就行 删除声卡和打印机 检查网络配置 选择本地的Windows server 2016的系统镜像&#xff0c;系统镜像可以去Window…

【MySQL】增删改查进阶

目录 一、数据库约束 约束类型 NULL约束&#xff1a;非空约束 UNIQUE&#xff1a;唯一约束 DEFAULT&#xff1a;默认值约束 PRIMARY KEY&#xff1a;主键约束 FOREIGN KEY&#xff1a;外键约束 二、表的设计 三、新增 四、查询 聚合查询 聚合函数 GROUP BY子句 HA…

使用Process Explorer、Dependency Walker和PE信息查看工具快速排查dll动态库因库与库版本不一致导致的加载失败问题

目录 1、问题说明 2、使用Process Explorer查看目标dll动态库有没有动态加载起来 3、使用Dependency Walker查看xxpadll.dll库的库依赖关系&#xff0c;找到xxpadll.dll加载失败的原因 4、使用PE信息查看工具查看目标dll库的时间戳 5、关于xxsipstack2.dll中调用xxdatanet…

NCCL如何打印XML拓扑文件,操作说明和源码展示

NCCL源码解读的视频在这&#xff1a;NCCL集合通信源码解读、案例、任务调度、拓扑_哔哩哔哩_bilibili 一、环境变量设置 1.1 命令行环境变量设置 为了打印XML拓扑文件&#xff0c;需要设置NCCL的环境变量NCCL_TOPO_DUMP_FILE。这个环境变量指定了XML拓扑文件的输出路径和文件…

时序数据库 TDengine 化工新签约:存储降本一半,查询提速十倍

化工行业在数字化转型过程中面临数据接入复杂、实时性要求高、系统集成难度大等诸多挑战。福州力川数码科技有限公司科技依托深厚的行业积累&#xff0c;精准聚焦行业痛点&#xff0c;并携手 TDengine 提供高效解决方案。通过应用 TDengine&#xff0c;力川科技助力化工企业实现…

Maven的学习以及安装配置 2024/3/1 idea

1. Maven的安装 1.1 首先查看编程工具合适的Maven版本 我使用的是2024/3/1 版本的idea&#xff0c;接下来我会用这个版本的idea进行演示。idea没有汉化的也可以参考我的步骤。 1、打开idea的设置&#xff0c;搜索Maven&#xff0c;进入Maven设置。 我们可以看到&#xff0c;…

kubernetes——part3-5 核心概念 Service

一、 service作用 使用kubernetes集群运行工作负载时&#xff0c;由于Pod经常处于用后即焚状态&#xff0c;Pod经常被重新生成&#xff0c;因此Pod对应的IP地址也会经常变化&#xff0c;导致无法直接访问Pod提供的服务&#xff0c;Kubernetes中使用了Service来解决这一问题&am…

【脚本】Linux一键扩大虚拟内存的大小

Linux增加虚拟内存其实很简单 就那几个命令&#xff0c;free、mkswap、swapon 但是方便起见我写成了脚本 使用方法 进入你的目录&#xff0c; nano ./install_swap.sh 下面的脚本全文复制&#xff0c;粘贴进去之后&#xff0c;按ctrlx后按y保存 然后运行以下命令 sudo bash …

学习 MySQL 需要知道的 28 个小技巧

前言 随着信息技术的不断发展以及互联网行业的高速增长&#xff0c;作为开源数据库的MySQL得到了广泛的应用和发展。目前MySQL已成为关系型数据库领域中非常重要的一员。 无论是运维、开发、测试&#xff0c;还是架构师&#xff0c;数据库技术都是一个 必备加薪神器&#xff…

【Hive】Hive安装

Hive 第一章 Hive的基础知识 第二章 Hive安装 第三章 DDL&#xff08;Data Definition Language&#xff09;数据定义 第四章 DML&#xff08;Data Manipulation Language&#xff09;数据操作 第五章 Hive查询 第六章 Hive的基础知识 第七章 Hive函数 第八章 分区表和分桶表 …

6.聊天室环境安装 - Ubuntu22.04 - elasticsearch(es)的安装和使用

目录 介绍安装安装kibana安装ES客户端使用 介绍 Elasticsearch&#xff0c; 简称 ES&#xff0c;它是个开源分布式搜索引擎&#xff0c;它的特点有&#xff1a;分布式&#xff0c;零配置&#xff0c;自动发现&#xff0c;索引自动分片&#xff0c;索引副本机制&#xff0c;res…

蓝桥每日打卡--合根植物

#蓝桥#JAVA#合根植物 题目描述 w星球的一个种植园&#xff0c;被分成mn个小格子&#xff08;东西方向m行&#xff0c;南北方向n列&#xff09;。每个格子里种了一株合根植物。 这种植物有个特点&#xff0c;它的根可能会沿着南北或东西方向伸展&#xff0c;从而与另一个格子…

线性代数之矩阵特征值与特征向量的数值求解方法

文章目录 前言1. 幂迭代法&#xff08;Power Iteration&#xff09;幂法与反幂法求解矩阵特征值幂法求最大特征值编程实现补充说明 2. 逆幂迭代法&#xff08;Inverse Iteration&#xff09;移位反幂法 3. QR 算法&#xff08;QR Algorithm&#xff09;——稠密矩阵理论推导编程…

【Linux实践系列】:用c语言实现一个shell外壳程序

&#x1f525;本文专栏&#xff1a;Linux Linux实践项目 &#x1f338;博主主页&#xff1a;努力努力再努力wz 那么今天我们就要进入Linux的实践环节&#xff0c;那么我们之前学习了进程控制相关的几个知识点&#xff0c;比如进程的终止以及进程的等待和进程的替换&#xff0c;…

使用STM32CubeMX配置定时器中断实现LED每秒闪烁一次(STM32G070CBT6)

说明&#xff1a; 本案例采用的定时器3&#xff08;TIM3&#xff09;实现&#xff0c;使用其他定时器是一样配置。 如何新建一个工程以及如何配置LED的端口&#xff0c;请查看前面文章&#xff1a;使用STM32CubeMX实现LED灯每秒闪烁一次&#xff08;STM32G070CBT6单片机&…