java讀取shp文件,獲取點位

    @Testvoid contextLoads() {System.out.println(System.currentTimeMillis());//1716516228057  1716516228798String zipFilePath = "C:\\code\\risk\\risk_management_backend\\edatope-app\\src\\main\\resources\\新中心范圍SHP導入模板.zip";String destDir = "C:\\code\\risk\\risk_management_backend\\edatope-app\\src\\main\\resources\\tt";Boolean unzip = unzip(zipFilePath, destDir);if(!unzip) try {throw new Exception("解壓失敗");} catch (Exception e) {throw new RuntimeException(e);}// 創建一個File對象,指向你的ShapefileFile file = new File("C:\\code\\risk\\risk_management_backend\\edatope-app\\src\\main\\resources\\tt\\地塊1984.shp");// 使用FileDataStoreFinder來查找和創建FileDataStoreFileDataStore store = null;try {store = FileDataStoreFinder.getDataStore(file);// 獲取FeatureSourceSimpleFeatureSource featureSource = store.getFeatureSource();// 獲取所有的FeaturesSimpleFeatureCollection featureCollection = featureSource.getFeatures();// 使用SimpleFeatureIterator遍歷featuresList<SimpleFeature> featuresList = new ArrayList<>();SimpleFeatureIterator iterator = featureCollection.features();try {while (iterator.hasNext()) {SimpleFeature feature = iterator.next();// 獲取幾何信息System.out.println("Geometry: " + feature.getDefaultGeometry());// 獲取屬性信息System.out.println("Properties: ");feature.getProperties().forEach(prop -> {System.out.println(prop.getName().toString() + ": " + feature.getAttribute(prop.getName()));});}} finally {// 請記住關閉迭代器以釋放資源iterator.close();}} catch (IOException e) {throw new RuntimeException(e);}System.out.println(System.currentTimeMillis());}public static Boolean unzip(String zipFilePath, String destDirectory) {File dir = new File(destDirectory);// 如果目標文件夾不存在,則創建if (!dir.exists()) {dir.mkdirs();}byte[] buffer = new byte[1024];try (ZipInputStream zis = new ZipInputStream(new FileInputStream(zipFilePath),Charset.forName("GBK"))) {ZipEntry zipEntry = zis.getNextEntry();while (zipEntry != null) {File newFile = newFile(dir, zipEntry);if (zipEntry.isDirectory()) {// 創建目錄newFile.mkdirs();} else {// 創建父目錄newFile.getParentFile().mkdirs();// 寫入文件try (BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(newFile))) {int len;while ((len = zis.read(buffer)) > 0) {bos.write(buffer, 0, len);}}}zipEntry = zis.getNextEntry();}zis.closeEntry();} catch (IOException e) {e.printStackTrace();}return true;}// 保護文件路徑,防止ZipPathTraversal攻擊private static File newFile(File destinationDir, ZipEntry zipEntry) throws IOException {File destFile = new File(destinationDir, zipEntry.getName());String destDirPath = destinationDir.getCanonicalPath();String destFilePath = destFile.getCanonicalPath();if (!destFilePath.startsWith(destDirPath + File.separator)) {throw new IOException("Entry is outside of the target directory: " + zipEntry.getName());}return destFile;}

注意

引入依賴不起作用,需要去geotools官網下載jar包導入項目
GeoTools
在這里插入圖片描述
![](https://img-blog.csdnimg.cn/direct/cf07eb8b594b40b09b24e2bf8eb090cc.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/14689.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/14689.shtml
英文地址,請注明出處:http://en.pswp.cn/web/14689.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Muduo】TcpServer類

TcpServer統領之前所有的類&#xff0c;是用戶直接使用的類。它通過ThreadPool管理所有的loopthread&#xff0c;保存所有的TcpConnection&#xff0c;保存用戶提供的各種回調函數并向TcpConnection的Channel中注冊回調。它負責監聽指定的端口&#xff0c;并接受來自客戶端的連…

ZeRO-3、模型并行、流水線并行適用情況

ZeRO-3 適用場景&#xff1a;參數量大但計算量相對均衡的情況。 主要特點&#xff1a; 參數分片&#xff1a;將模型參數、優化器狀態和梯度在多個 GPU 上進行分片。顯存優化&#xff1a;顯著減少每個 GPU 上的顯存占用&#xff0c;使得可以在較小的 GPU 上訓練更大的模型。 …

思科模擬器--06.單臂路由升級版--多端路由互連實驗--24.5.20

實驗圖紙如下: 第0步: 先放置六臺個人電腦,一臺交換機和一臺2911路由器(千兆路由器(G0開頭的)) 接著,用直通線將 PC0的F0,PC1的F0分別和交換機的F0/0, F0/1連接 交換機的F0/3和路由器的G0/0連接 PC2的F0,PC3的F0分別和交換機的F0/4, F0/5連接 交換機的F0/6和路由器的G0/1…

電腦連接愛快iKuai軟路由之后,網卡沒有正常獲取到IP,無法訪問愛快路由管理頁?

前言 上一次咱們說到在愛快控制臺上設置/辨認lan口&#xff0c;設置完成之后&#xff0c;其他的一些設置就需要在愛快iKuai軟路由的管理頁面上設置。 有些小伙伴會發現&#xff0c;當電腦連接上愛快軟路由的lan口之后&#xff0c;電腦并沒有正常獲取到ip&#xff0c;導致無法訪…

JavaScript表達式和運算符

表達式 表達式一般由常量、變量、運算符、子表達式構成。最簡單的表達式可以是一個簡單的值。常量或變量。例&#xff1a;var a10 運算符 運算符一般用符號來表示&#xff0c;也有些使用關鍵字表示。運算符由3中類型 1.一元運算符&#xff1a;一個運算符能夠結合一個操作數&…

【Arthas】阿里的線上jvm監控診斷工具的基本使用

關于對運行中的項目做java監測的需求下&#xff0c;Arthas則是一個很好的解決方案。 我們可以用來 1.監控cpu 現成、內存、堆棧 2.排查cpu飚高 造成原因 3.接口沒反應 是否死鎖 4.接口慢優化 5.代碼未按預期執行 是分支不對 還是沒提交&#xff1f; 6.線上低級錯誤 能不能不重啟…

STL--set和multiset集合

set和multiset會根據特定的排序準則&#xff0c;自動將元素排序。兩者不同之處在于multiset 允許元素重復而 set 不允許。如下圖: 使用set或multiset&#xff0c;必須先包含頭文件: #include <set>上述兩個類型都被定義為命名空間std內的class template: namespace std…

亞馬遜自養號測評:深入解析與搭建要求

在亞馬遜這電商平臺上&#xff0c;商品的評價對于賣家來說至關重要。為了提升商品的曝光率、排名、權重和銷量&#xff0c;賣家們紛紛采用各種推廣方式&#xff0c;其中&#xff0c;亞馬遜自養號測評成為了越來越多賣家選擇的一種有效方式。 亞馬遜自養號測評&#xff0c;顧名…

Android Retrofit 封裝模版

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 一、加上網絡訪問的權限二、引入依賴三、由API生成JavaBean四、封裝Retrofit五、調用 一、加上網絡訪問的權限 <uses-permission android:name"android.p…

分布式事務——9種解決方案的原理與分類

目錄 一、概要1. 分布式事務的概念2. 分布式事務解決方案分類 二、常見的分布式事務解決方案1. 基礎的 2PC&#xff08;二階段提交&#xff09;1.1 核心思想1.2 簡介1.3 主要特點1.3.1 優點1.3.2 缺點 2. 基礎的 3PC&#xff08;三階段提交&#xff09;2.1 核心思想2.2 簡介2.3…

C語言/數據結構——每日一題(有效的括號)

一.前言 如果想要使用C語言來解決這道題——有效的括號&#xff1a;https://leetcode.cn/problems/valid-parentheses/description/我們必須要借用上一篇我們所講的內容——棧的實現&#xff1a;https://blog.csdn.net/yiqingaa/article/details/138923750?spm1001.2014.3001.…

go routing 之 gorilla/mux

1. 背景 繼續學習 go 2. 關于 routing 的學習 上一篇 go 用的庫是&#xff1a;net/http &#xff0c;這次我們使用官方的庫 github.com/gorilla/mux 來實現 routing。 3. demo示例 package mainimport ("fmt""net/http""github.com/gorilla/mux&…

react實現把pc網站快捷添加到桌面快捷方式

文章目錄 1. 需求2. 實現效果3. 核心邏輯4. 完整react代碼 1. 需求 這種需求其實在國外一些游戲網站和推廣網站中經常會用到&#xff0c;目的是為了讓客戶 快捷方便的保存網站到桌面 &#xff0c;網站主動盡量避免下次找不到網站地址了&#xff0c;當然精確的客戶自己也可以使…

Python 字符串中運算符號可運行

使用eval() re {\n "path": "/sms/sendMsg",\n "data": {\n "mobile": "12345678901",\n "signCode": "短信簽名",\n "templateCode": "SMS_yyyy…

Oracle遞歸查詢筆記

目錄 一、創建表結構和插入數據 二、查詢所有子節點 三、查詢所有父節點 四、查詢指定節點的根節點 五、查詢指定節點的遞歸路徑 六、遞歸子類 七、遞歸父類 一、創建表結構和插入數據 CREATE TABLE "REGION" ( "ID" VARCHAR2(36) DEFAULT SYS_GUI…

解析Oracle文件頭內容

保存在Oracle數據文件頭中的信息很豐富&#xff0c;通常只要查詢DATAFILE_HEADER視圖就可以獲得數據文件頭中的信息。但其在數據文件頭中的具體位置&#xff0c;Oracle一直未公開過。所幸的是DBA們對數據文件頭的研究孜孜不倦&#xff0c;其研究成果在網上也是隨處可見。雖然這…

[前端|vue] 驗證器validator使用筆記 (筆記)

文檔 validator.js文檔地址 規則編寫示例 element-plus 使用示例 const captchaLoginRules {phoneNumber: [{ required: true, message: 手機號不能為空, trigger: blur },{validator: (_rule: any, value: string, _callback: any): boolean > {return isMobilePhone(…

vue-quill-editor 富文本編輯器使用出現的樣式問題

使用富文本類型&#xff1a; vue-quill-editor 注意&#xff1a; 富文本導出 html 我們使用的時候&#xff0c; 樣式凸顯不出來 DOM 結構 <p><sub class"ql-size-large">測試內容</sub><sup class"ql-size-large">222222</su…

6步:用NGINX部署ASP.NET Core,輕松上云

1. 準備工作在開始部署之前&#xff0c;確保你已經完成了以下準備工作&#xff1a;- 安裝.NET Core&#xff1a;確保你的Linux系統上安裝了.NET Core運行時。你可以從.NET官網下載。- 安裝NGINX&#xff1a;通過你的Linux發行版的包管理器安裝NGINX。例如&#xff0c;在Ubuntu上…

GPT提示詞技巧,使用教程,國內版官網直達,非套殼

GPT提示詞技巧&#xff0c;使用教程&#xff0c;國內版官網直達&#xff0c;非套殼 主站點&#xff1a;https://chatgpt-plus.top&#xff08;江蘇福建地區打不開&#xff0c;需要魔法&#xff09; 店鋪地址&#xff1a;https://buy.chatgpt-plus.top/ 選擇plus賬號進入&…