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

news2025/3/12 17:21:17

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

# -*- coding: utf-8 -*-
import os.path

import 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_string

def getlistFromStr(strs):
    str_l = str(strs).replace("'","").replace("[","").replace("]","")
    str_ll = str_l.split(",")
    return [float(s) for s in str_ll]
    ccc=0

import 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 = path
    df = pd.read_excel(file_path, sheet_name='Sheet1').values
    row_nums, col_nums = df.shape
    with open("nanhai_deal.csv","w") as f:
        f.write("id;airport;extent;center;wkt\n")
        idx=1
        for 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=0
            extent = [zb_s[0],zb_s[2],zb_s[1],zb_s[3]]
            ccc=0
            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

def dealDuplicate(path):
    file_path = path
    #处理 shiju
    df = pd.read_excel(file_path, sheet_name='shiju').values
    row_nums, col_nums = df.shape
    with open("shijuAFB_deal.csv","w") as f:
        f.write("id;airport;extent;center;wkt\n")
        idx=1
        for 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=0
            extent = [zb_s[0],zb_s[1],zb_s[2],zb_s[3]]
            ccc=0
            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
    #处理 ditu
    df = pd.read_excel(file_path, sheet_name='ditu').values
    row_nums, col_nums = df.shape
    with open("dituAFB_deal.csv","w") as f:
        f.write("id;airport;extent;center;wkt\n")
        idx=1
        for 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=0
            extent = [zb_s[0],zb_s[1],zb_s[2],zb_s[3]]
            ccc=0
            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


if __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.coloradmin.cn/o/2313862.html

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

相关文章

静态时序分析:无法满足的生成时钟(TIM-255警告、UITE-461或PTE-075错误)

相关阅读 静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html?spm1001.2014.3001.5482 在阅读本文前,强烈建议首先阅读介绍生成时钟的文章,尤其是其中关于时钟极性和反相的相关内容。 静态时序分析:SDC约束命令cr…

VSTO(C#)Excel开发2:Excel对象模型和基本操作

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源…

途游游戏25届AI算法岗内推

熟悉常用的编程语言,如Python、R等,具有良好的编码和调试能力;对常用的机器学习算法和深度学习框架(如TensorFlow、PyTorch等)有深入理解,对大型语言模型有一定了解,具备模型部署和微调的实践经…

【数据分析大屏】基于Django+Vue汽车销售数据分析可视化大屏(完整系统源码+数据库+开发笔记+详细部署教程+虚拟机分布式启动教程)✅

目录 一、项目背景 二、项目创新点 三、项目功能 四、开发技术介绍 五、项目功能展示 六、权威视频链接 一、项目背景 汽车行业数字化转型加速,销售数据多维分析需求激增。本项目针对传统报表系统交互性弱、实时性差等痛点,基于DjangoVue架构构建…

OpenCV应用:三种图像风格化案例

OpenCV 本身主要用于计算机视觉任务,例如图像处理、边缘检测、物体识别等,虽然它并不直接提供像 Photoshop 或其他艺术设计软件那样的 "风格化" 功能,但你可以通过一些图像处理技术在 OpenCV 中实现不同风格化效果。 1. 卡通化效果…

【Axure资料】110套优质可视化大屏模板+图表组件+科技感元件等

本作品集包含110套高保真可视化大屏模板,以及丰富的图表组件和科技感元件,旨在满足各行业对数据可视化展示的需求。所有模板和组件均基于Axure RP 9软件设计,确保高质量的交互体验和视觉效果。 作品类型:Axure原型模板 兼容版本&…

VanillaVueSvelteReactSolidAngularPreact前端框架/库的简要介绍及其优势

VanillaVueSvelteReactSolidAngularPreact前端框架/库的简要介绍及其优势。以下是这些前端框架/库的简要介绍及其优势: 1. Vanilla 定义:Vanilla 并不是一个框架,而是指 原生 JavaScript(即不使用任何框架或库)。优势…

Oracle 字符类型对比

本文以 Oracle12c 为例 1.主要区别对比 类型存储方式最大长度字符集支持适用场景备注​CHAR(M)固定长度空格填充2000 字节,M 代表字节长度默认字符集固定长度编码实际存储长度固定为定义长度(如 CHAR(10) 始终占 10 字节)​VARCHAR2(M)可变长…

阿里云操作系统控制台实战评测:提升云资源管理与监控效率

文章目录 前言产品介绍操作系统控制台体验阿里云操作系统开通 帮助与总结建议 前言 随着云计算和虚拟化技术的发展,操作系统控制台作为运维管理的核心工具之一,在现代IT环境中发挥着越来越重要的作用。它提供了一种更加直观、高效的方式来管理操作系统&…

Linux本地部署deepseek及SpringBoot集成deepseek

一、ollama安装 本文以linux安装为例(服务器主机ip:192.168.109.210) 1、自动安装(方式一) curl -fsSL https://ollama.com/install.sh | sh 2、手动安装(方式二) (1)下载二进制文件 curl -L https://ollama.com/download/ollama-linux-amd64.tgz -o ollama-linu…

用物理信息神经网络(PINN)解决实际优化问题:全面解析与实践

摘要 本文系统介绍了物理信息神经网络(PINN)在解决实际优化问题中的创新应用。通过将物理定律与神经网络深度融合,PINN在摆的倒立控制、最短时间路径规划及航天器借力飞行轨道设计等复杂任务中展现出显著优势。实验表明,PINN相比…

RabbitMQ之旅(1)

相信自己,终会成功 目录 主流MQ产品 1.kafaka 2.RocketMQ 3.RabbitMQ 在xshell上安装RabbitMQ RabbitMQ七种工作模式 1.简单模式 ​编辑 2.工作队列模式 3.发布/订阅模式 4.路由模式 5.通配符模式 6.RPC模式 AMQP.BasicProperties 设置消息属性的类 7.发布确认模…

HTML-网页介绍

一、网页 1.什么是网页: 网站是指在因特网上根据一定的规则,使用 HTML 等制作的用于展示特定内容相关的网页集合。 网页是网站中的一“页”,通常是 HTML 格式的文件,它要通过浏览器来阅读。 网页是构成网站的基本元素&#xf…

【C#学习笔记03】进制转换与反码、补码、原码

1. 进制转换 计算机中的数据通常以二进制形式存储,但在编程和调试过程中,我们经常需要与十进制、八进制和十六进制打交道。因此,掌握进制转换是C语言学习中的重要一环。 1.1 进制的基本概念 二进制(Binary)&#xff…

python学智能算法(七)|KNN邻近算法

【1】引言 前述学习进程中,已经了解了一些非常经典的智能算法,相关文章包括且不限于: python学智能算法(三)|模拟退火算法:深层分析_模拟退火 动画演示-CSDN博客 python学智能算法(四&#x…

Java数据结构第二十二期:Map与Set的高效应用之道(一)

专栏:Java数据结构秘籍 个人主页:手握风云 目录 一、Map和Set 1.1. 概念 二、搜索树 2.1. 概念 2.2. 查找操作 2.2. 插入操作 2.3. 删除操作 2.4. 性能分析 三、搜索 3.1. 概念及场景 3.2. 模型 四、Map 4.1. Map的说明 3.2. Map的使用 五…

兴达易控modbusTCP转profinet接防撞雷达测试

modbusTCP转profinet接防撞雷达测试 随着工业自动化程度的不断提高,现场设备之间的通信需求日益增长。ModbusTCP作为一种广泛应用的工业通信协议,因其简单、可靠的特点,被广泛应用于各种自动化设备中。而Profinet作为工业以太网的一种&#…

flutter实践:断点调试踩坑

问题:使用VSCode开发flutter,最近突然开始打断点不生效,程序可以attach,修改有日志输出,但是断点处怎么都停不了,程序异常断点会停。 分析:开始误以为是flutterSDK出了问题折腾了一天,后来又怀疑是lauch.j…

STM32——GPIO介绍

GPIO(General-Purpose IO ports,通用输入/输出接口)模块是STM32的外设接口的核心部分,用于感知外界信号(输入模式)和控制外部设备(输出模式),支持多种工作模式和配置选项。 1、GPIO 基本结构 STM32F407 的每个 GPIO 引脚均可独立配置,主要特性包括: 9 组 GPIO 端口…

Photo Works在线图片编辑器:一键修复老照片,轻松焕新记忆

★【概况介绍】 今天突然收到我的朋友电脑出故障了,截图给我,我一看就知道这个是缺少必要的组件引起的故障。结合这个问题,我来谈谈自己的解决思路和方法,希望能够帮助到大家。帮助大家是我最开心的事情。以前只是帮朋友解决问题,没有记录下来,刚刚接触到这个平台,刚好可…