Geotools解析shp文件

在参与GIS项目的过程中,涉及到PostgreSQL数据库中的geometry与WKT格式互转,以及用户上传的ZIP文件中SHP和PRJ文件的解析。通过st_astext和st_geomfromtext进行几何数据的转换,利用Geotools读取SHP文件获取WKT信息,并从PRJ文件中提取坐标系参数。
摘要由CSDN通过智能技术生成

最近参与了一个GIS项目,记录一下吧:

 

postgresql数据库:

  • geometry数据类型转wkt格式:st_astext(geometry)
  • wkt格式数据转geometry数据类型: st_geomfromtext(wkt数据,坐标系参数),若无法使用,则st_geometry(wkt数据,坐标系参数)

 

用户上传zip文件,解析zip里的shp相关文件,获取wkt数据并返回:

分别需要解析两个文件,shp文件(获取wkt数据)  prj文件(获取坐标系,是一个整数)

Maven相关
<properties>
        <java.version>1.8</java.version>
        <geotools.version>18.4</geotools.version>
    </properties>

<dependency>
           <groupId>org.geotools</groupId>
          <artifactId>gt-shapefile</artifactId>
           <version>${geotools.version}</version>
       </dependency>
        <dependency>
          <groupId>org.geotools</groupId>
           <artifactId>gt-geojson</artifactId>
          <version>${geotools.version}</version>
        </dependency>
        <dependency>
           <groupId>org.geotools</groupId>
          <artifactId>gt-main</artifactId>
           <version>${geotools.version}</version>
      </dependency>
        <dependency>
            <groupId>org.geotools</groupId>
            <artifactId>gt-epsg-extension</artifactId>
            <version>${geotools.version}</version>
        </dependency>
        <dependency>
            <groupId>org.geotools</groupId>
            <artifactId>gt-referencing</artifactId>
            <version>${geotools.version}</version>
        </dependency>

<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
解析 shp 格式文件,可以使用 Java 开源库 GeoToolsGeoTools 提供了一套 Java API,用于加载、操作和存储空间数据,包括 shp 文件。 以下是一个简单的示例代码,演示如何使用 GeoTools 解析 shp 文件: ```java import java.io.File; import java.io.IOException; import org.geotools.data.DataStore; import org.geotools.data.DataStoreFinder; import org.geotools.data.FeatureSource; import org.geotools.data.simple.SimpleFeatureIterator; import org.opengis.feature.simple.SimpleFeature; public class ShpParser { public static void main(String[] args) throws IOException { // 指定 shp 文件路径 File file = new File("path/to/your/file.shp"); // 加载 shp 文件 DataStore dataStore = DataStoreFinder.getDataStore( Collections.singletonMap("url", file.toURI().toURL()) ); // 获取 FeatureSource String typeName = dataStore.getTypeNames()[0]; FeatureSource featureSource = dataStore.getFeatureSource(typeName); // 遍历 Feature try (SimpleFeatureIterator iterator = featureSource.getFeatures().features()) { while (iterator.hasNext()) { SimpleFeature feature = iterator.next(); // 处理 Feature System.out.println(feature.getID()); } } // 释放资源 dataStore.dispose(); } } ``` 在这个示例中,我们使用 `DataStoreFinder` 类加载 shp 文件,并获取其 `FeatureSource` 对象。然后,可以使用 `FeatureSource` 对象获取 shp 文件中的所有 Feature,并对其进行遍历和处理。 请注意,为了使用 GeoTools,你需要将以下依赖项添加到你的项目中: ```xml <dependency> <groupId>org.geotools</groupId> <artifactId>gt-shapefile</artifactId> <version>${geotools.version}</version> </dependency> <dependency> <groupId>org.geotools</groupId> <artifactId>gt-epsg-hsql</artifactId> <version>${geotools.version}</version> </dependency> ``` 其中,`${geotools.version}` 是 GeoTools 版本号。你可以在 Maven 中心仓库中查找最新版本的 GeoTools
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值