首页 > 编程语言 >【GeoJSON】Java 使用 GeoTools 将 SHP 文件转成 GeoJSON 文件

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

时间:2024-07-22 13:56:08浏览次数:15  
标签:SHP 文件 GeoTools xml GeoJSON import org data geotools

文章目录

引言

在使用 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.FileDataStore;
import org.geotools.data.FileDataStoreFinder;
import org.geotools.data.simple.SimpleFeatureCollection;
import org.geotools.geojson.feature.FeatureJSON;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class ShapefileToGeoJSON {

    public static void main(String[] args) {
        String readFilePath = "D:/data/某镇.shp";
        String writeFilePath = "D:/data/某镇.geojson";
        File readFile = new File(readFilePath);

        try {
            FileDataStore store = FileDataStoreFinder.getDataStore(readFile);
            SimpleFeatureCollection featureCollection = store.getFeatureSource().getFeatures();

            FeatureJSON featureJSON = new FeatureJSON();
            try (FileWriter writer = new FileWriter(writeFilePath)) {
                featureJSON.writeFeatureCollection(featureCollection, writer);
            }

            store.dispose();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}




End


标签:SHP,文件,GeoTools,xml,GeoJSON,import,org,data,geotools
From: https://blog.csdn.net/weixin_43657300/article/details/140607617

相关文章

  • 使用nginx proxy_pass从s3存储桶中读取sitemap.xml文件
    使用nginxproxy_pass从s3存储桶中读取sitemap.xml文件 nginx是一款高性能的开源Web服务器软件,也可以作为反向代理服务器使用。proxy_pass是nginx的一个指令,用于将客户端的请求转发到其他服务器上。在使用nginx的proxy_pass指令从S3存储桶中读取sitemap.xml文件时,可以按......
  • 实战:ForkJoinPool对大文件导入技术优化指南
    1、ForkJoinPool简介Fork/Join框架是Java7提供了的一个用于并行执行任务的框架。ForkJoinPool是Java中提供了一个线程池,特点是用来执行分治任务。主题思想是将大任务分解为小任务,然后继续将小任务分解,直至能够直接解决为止,然后再依次将任务的结果合并。ForkJoinPool是一种工......
  • 《迅雷》启动故障:zlib1.dll文件缺失问题的免费修复指南
    遇到《迅雷》下载软件启动时报错“zlib1.dll文件缺失”的问题,意味着迅雷所依赖的动态链接库(DLL)文件缺失或损坏。以下是针对这一问题的免费修复指南:解决策略重新安装迅雷卸载当前的迅雷版本。从迅雷官方网站下载最新版本的迅雷安装包。完成安装过程,确保zlib1.dll和其他相关......
  • 函数:file.move 移动文件
    原文链接: https://luabox-book.touchsprite.com/dev_docs/8/7.html函数名称:移动文件函数功能:移动文件到新的目录下函数方法flag=file.move(path,tpath)参数类型必填说明pathstring是待移动文件的路径,相对路径(仅支持v1.0.6及其以上版本)如"ceshi.png"表示当前......
  • 如何消除此错误:Traceback(最近一次调用最后一次):文件“<string>”,第 1 行,在 <module> 文
    我一直尝试用uvicornmain:app--reload启动我的python后端,但我不断收到此错误:INFO:Willwatchforchangesinthesedirectories:['C:\\Users\\darkg\\OneDrive\\Desktop\\loginpage\\FastAP_BackEnd\\books']INFO:Uvicornrunningonhttp://......
  • linux-批量修改文件内容
    1.批量修改文件内容$find.-typef-execsed-i's/oldname/newname/g'{}+#此命令含义:在当前目录及其所有子目录中查找所有文件,并对这些文件执行sed命令,将文件内容中的所有oldname字符串替换为newname。#find.:从当前目录(.)开始查找文件。#typef:指定查找的类型为文......
  • 【攻防技术系列+后渗透】配置文件
    配置文件中往往会出现大量数据库连接账号密码,以下整理了部分常见框架的路径,在实战中可以在框架识别后进行关键字检索。Django(PythonWeb框架):Django项目的配置文件通常位于项目根目录下的settings.py文件中。在这个文件中,数据库配置(如数据库引擎、名称、用户、密码等)会被定义在DA......
  • 临时文件
    确保firewalld服务正在运行:sh复制代码sudosystemctlstartfirewalldsudosystemctlenablefirewalld清除所有现有规则:sh复制代码sudofirewall-cmd--permanent--direct--remove-rulesipv4filterINPUTsudofirewall-cmd--permanent--direct--remove-rulesi......
  • 如何忽略“__init__.py”文件中的 Pyflakes 错误“已导入但未使用”?
    我将测试拆分到多个Python文件中:tests├──__init__.py├──test_apples.py└──test_bananas.py.py我将测试导入到“__init__.py”文件中:fromtest_applesimportApplesTestfromtest_bananasimportBananasTest但是在命令行上运行Pyflakes:pyflake......
  • 计算机网络中的检验和(checksum)(包括计算文件的检验和附有c++代码)
    介绍:检验和(checksum),在数据处理和数据通信领域中,用于校验目的地一组数据项的和。它通常是以十六进制为数制表示的形式。如果校验和的数值超过十六进制的FF,也就是255.就要求其补码作为校验和。通常用来在通信中,尤其是远距离通信中保证数据的完整性和准确性。(此引用了检验和的百......