【GeoJSON】Java 使用 GeoTools 将 SHP 文件转成 GeoJSON 文件

文章目录

  • 引言
  • Maven settings.xml 配置
  • 配置项目中的 pom.xml
  • 引入 GeoTools Jar 包
  • 使用

引言

在使用 GeoTools 时,我们没办法直接使用 Maven 中央库的 GeoTools,所以就需要我们配置一下关于 GeoTools 自己的镜像,所以我们才需要以下这几个步骤:
1、检查一下自己本机 maven 的 settings.xml 配置;
2、配置项目中的 pom.xml;
3、引入 jar 包;
4、使用。

下面就开始一步一步做


Maven settings.xml 配置

在 mirrorOf 标签中配置 mirrorOf 值,切记,mirrorOf 标签中不能使用 * 值。

<mirrors><mirror><id>mirror</id><mirrorOf>central,jcenter,mirrorOf</mirrorOf><name>mirror</name><url>https://maven.aliyun.com/repository/public</url></mirror>
</mirrors>

配置项目中的 pom.xml

在项目的 pom.xml 配置文件中,在 repositories 标签中,配置 GeoTools 的镜像配置。

<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><repositories><repository><id>osgeo</id><name>OSGeo Release Repository</name><url>https://repo.osgeo.org/repository/release/</url><snapshots><enabled>false</enabled></snapshots><releases><enabled>true</enabled></releases></repository><repository><id>osgeo-snapshot</id><name>OSGeo Snapshot Repository</name><url>https://repo.osgeo.org/repository/snapshot/</url><snapshots><enabled>true</enabled></snapshots><releases><enabled>false</enabled></releases></repository></repositories></project>

引入 GeoTools Jar 包

这里需要注意 GeoTools 的版本,如果你是 Java 8 版本,就使用 23.x - 28.x;如果是 Java 11,就使用 23.x 及以上的版本。

<dependencies><dependency><groupId>org.geotools</groupId><artifactId>gt-shapefile</artifactId><version>28.5</version></dependency><dependency><groupId>org.geotools</groupId><artifactId>gt-geojson</artifactId><version>28.5</version></dependency>
</dependencies>

使用

import org.geotools.data.shapefile.ShapefileDataStore;
import org.geotools.data.simple.SimpleFeatureCollection;
import org.geotools.geojson.feature.FeatureJSON;import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.charset.Charset;public class ShapefileToGeoJSON {public static void main(String[] args) {String readFilePath = "F:\\652327103222.shp";String writeFilePath = "F:\\652327103222.geojson";File readFile = new File(readFilePath);try {// 获取 SHP 文件的数据存储ShapefileDataStore dataStore = new ShapefileDataStore(readFile.toURI().toURL());// 处理中文乱码dataStore.setCharset(Charset.forName("GBK"));SimpleFeatureCollection featureCollection = dataStore.getFeatureSource().getFeatures();FeatureJSON featureJSON = new FeatureJSON();try (FileWriter writer = new FileWriter(writeFilePath)) {featureJSON.writeFeatureCollection(featureCollection, writer);}// 释放数据存储资源dataStore.dispose();} catch (IOException e) {e.printStackTrace();}}}




End


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

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

相关文章

嵌入式Python、ROS、SLAM、WebSocket和Node.js:智能巡逻监控安防机器人设计流程(代码示例)

项目概述 随着智能技术的发展&#xff0c;智能巡逻机器人在安防、监控和巡逻等领域的应用越来越广泛。本文将介绍一个结合嵌入式系统、机器人技术和后端开发的智能巡逻机器人。该机器人能够自主导航&#xff0c;实时检测异常情况&#xff08;如火灾或入侵者&#xff09;&#…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第五十七章 Linux中断实验

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

neo4j+LLM构建成品油医疗跨领域知识图谱(初)neo4j查询某个节点

全词查询 MATCH(n) WHERE n.name 成品油 RETURN n 关键词查询&#xff1a; MATCH (n) WHERE n.id CONTAINS 油 RETURN n 计算节点数&#xff1a; MATCH (n) RETURN count(n) AS number_of_nodes; 计算关系数&#xff1a; MATCH ()-[r]->() RETURN count(r) AS numbe…

AI绘画:艺术与科技融合的新篇章

随着人工智能&#xff08;AI&#xff09;技术的飞速发展&#xff0c;AI绘画作为一种新兴的艺术形式&#xff0c;正逐步改变着传统艺术创作的格局。从早期的简单模仿到如今的个性化创作&#xff0c;AI绘画不仅提升了艺术创作的效率和质量&#xff0c;还开辟了全新的应用场景和商…

ElasticSearch 面试题及答案整理,最新面试题

Elasticsearch中的倒排索引是什么?它如何工作? 倒排索引是Elasticsearch中用于快速全文搜索的关键数据结构。它的工作原理包括: 1、索引创建: 对文档中的每个唯一单词创建一个索引条目。 2、文档列表: 每个索引条目都指向包含该单词的文档列表。 3、快速查找: 在搜索时,…

C++模板——泛型编程

目录 1. 什么是泛型编程 2. 函数模板 2.1 定义格式 2.2 实例化及原理 2.3 参数匹配原则 3. 类模板 3.1 定义格式 3.2 实例化 4. 非类型模板参数 5. 模板的特化 5.1 概念 5.2 函数模板和类模板特化 6. 模板的分离编译 1. 什么是泛型编程 如何实现一个通用的加…

【Java算法专场】二分查找(下)

目录 山脉数组的峰顶索引 算法分析 算法步骤 算法代码 算法示例 寻找峰值 算法分析 算法步骤 算法代码 算法示例 寻找旋转排序数组中的最小值 算法分析 算法步骤 算法代码 算法示例 点名 算法分析 算法步骤 算法代码 算法示例 山脉数组的峰顶索引 …

TCP/IP协议(全的一b)应用层,数据链层,传输层,网络层,以及面试题

目录 TCP/IP协议介绍 协议是什么,有什么作用? 网络协议为什么要分层 TCP/IP五层网络协议每层的作用 应⽤层 DNS的作用及原理 DNS工作流程 数据链路层 以太⽹帧格式 MAC地址的作用 ARP协议的作⽤ ARP协议的工作流程 MTU以及MTU对 IP / UD / TCP 协议的影响 传输层…

数据结构之判断二叉树是否为搜索树(C/C++实现)

文章目录 判断二叉树是否为搜索树方法一&#xff1a;递归法方法二&#xff1a;中序遍历法总结 二叉树是一种非常常见的数据结构&#xff0c;它在计算机科学中有着广泛的应用。二叉搜索树&#xff08;Binary Search Tree&#xff0c;简称BST&#xff09;是二叉树的一种特殊形式&…

自动化测试--WebDriver API

1. 元素定位方法 通过 ID 定位&#xff1a;如果元素具有唯一的 ID 属性&#xff0c;可以使用 findElement(By.id("elementId")) 方法来定位元素。通过 Name 定位&#xff1a;使用 findElement(By.name("elementName")) 来查找具有指定名称的元素。通过 Cl…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 5键键盘(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,支持题目在线…

Linux常用操作

软件安装 CentOS 系统使用&#xff1a; yum [install remove search] [-y] 软件名称 install 安装 remove 卸载 search 搜索 -y &#xff0c;自动确认 Ubuntu 系统使用 apt [install remove search] [-y] 软件名称 install 安装 remove 卸载 search 搜索 -y…

Greenplum数据库中的连接方式及其应用

一、自然连接 自然连接是一种基于两个或多个表之间的共同列进行连接的方式。它会自动匹配两个表中具有相同列名的数据&#xff0c;并返回匹配的结果。 语法示例&#xff1a; SELECT * FROM table1 , table2 ; 应用场景&#xff1a; 自然连接适用于需要根据两个表共同的列进行…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第四十六章 自动创建设备节点

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

前端播放rtsp视频流(最后使用WebRtc)

前端播放rtsp视频流&#xff08;最后使用WebRtc&#xff09; 前言&#xff1a; ​ 项目需要将实验室里的摄像头画面引入到前端页面中&#xff0c;故对目前常见的几种方法进行了尝试&#xff0c;虽然过程坎坷但结局是好的。 一些尝试&#xff1a; RTSPtoWebRtc工具 由于RTSPt…

opengl 写一个3D立方体——计算机图形学编程 第4章 管理3D图形数据 笔记

计算机图形学编程&#xff08;使用OpenGL和C&#xff09; 第4章 管理3D图形数据 笔记 数据处理 想要绘制一个对象&#xff0c;它的顶点数据需要发送给顶点着色器。通常会把顶点数据在C端放入 一个缓冲区&#xff0c;并把这个缓冲区和着色器中声明的顶点属性相关联。 初始化立…

力扣 二分查找

二分查找基础篇。 题目 class Solution {public int searchInsert(int[] nums, int target) {int l 0, r nums.length - 1;while(l < r) {int mid l((r-l)>>1);//(lr)/2if(nums[mid]<target)lmid1;else rmid-1;}return l;//处理边界&#xff0c;设定数组的左半…

21 Python常用内置函数——zip()

zip() 函数用来把多个可迭代对象中的元素压缩到一起&#xff0c;返回一个可迭代的 zip 对象&#xff0c;其中每个元素都是包含原来的多个可迭代对象对应位置上元素的元组&#xff0c;最终结果中包含的元素个数取决于所有参数序列或可迭代对象中最短的那个。 可以这样理解这个函…

Redis 持久化详解

AOF 持久化 AOF持久化数据恢复相对RDB慢&#xff0c;文件也更大&#xff0c;但数据丢失的风险更小。 AOF 写入 将数据写入Redis内存后&#xff0c;将写数据的命令记录到AOP磁盘文件。 【结构】server.aof_buf 主线程写操作执行完之后&#xff0c;命令会先追加到 Redis 的 se…

启智集装箱箱号自动识别API,简单易挂接

启智集装箱箱号自动识别技术特点&#xff1a; 1、集装箱箱号自动识别速度快&#xff0c;毫秒级识别速度&#xff1b; 2、识别率高&#xff1a;综合识别率达到99%以上&#xff1b; 3、集装箱箱号自动识别种类多&#xff1a;能够识别GB/T1836-1997标准的集装箱号码&#xff0c;可…