利用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.pswp.cn/news/897885.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/897885.shtml
英文地址,請注明出處:http://en.pswp.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 的比較&…