java geotools 坐标转换

本文介绍了使用Java GeoTools库进行坐标转换的过程,包括点坐标从4326到3857的转换,以及SHP文件的坐标系转换。转换的关键代码是使用`CRS.findMathTransform`和`JTS.transform`方法。注意转换后的prj文件可能存在兼容性问题,需要手动或通过工具修复。
摘要由CSDN通过智能技术生成

Java geotools 坐标转换

点坐标转换

我点坐标转换为4326到3857,虽然我平时都是4546到3857,都一样。主要时因为我手里没有4546的坐标,

pom文件

这个geotools的依赖比较“皮干”,要是下载不成功,就去官网geotools下的quickstart 的Mavenquick quickstart下面找仓库地址。

  <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>
     <dependency>
            <groupId>org.geotools</groupId>
            <artifactId>gt-epsg-hsql</artifactId>
            <version>20.0</version>
        </dependency>
```<dependency>
            <groupId>org.geotools</groupId>
            <artifactId>gt-referencing</artifactId>
            <version>20.0</version>
        </dependency>
        <dependency>
            <groupId>org.geotools</groupId>
            <artifactId>gt-api</artifactId>
            <version>20.0</version>
        </dependency>

代码

package com.wangkang.gts4vect;

import org.geotools.geometry.jts.JTS;

import org.geotools.referencing.CRS;
import org.locationtech.jts.geom.Coordinate;

import org.opengis.referencing.FactoryException;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
import org.opengis.referencing.operation.MathTransform;

import java.text.DecimalFormat;

public class MyGeotools {
   
    public static void main(String[] args) {
   
//        GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory();
//        WKTReader reader = new WKTReader( geometryFactory );
        //某点的经纬度
        Double y = 34.26095856;
        Double x = 108.94237668;
        Double[] coordinate = getCoordinate(x, y);
        System.out.println(coordinate[0] + " " + coordinate[1]);

    }

    //坐标转换
    public static Double[] getCoordinate(Double x, Double y) {
   
        Double[] res = new Double[2];
        Coordinate tar = null;
        try {
   
            //封装点,这个是通用的,也可以用POINT(y,x)
            // private static WKTReader reader = new WKTReader( geometryFactory );
            Coordinate sour = new Coordinate
  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
路径规划是指寻找从一个起点到一个终点的最优路径的过程。在Java中,可以使用Geotools库来进行路径规划。Geotools是一个开源的Java库,用于处理地理空间数据和进行空间分析。它提供了丰富的地理空间算法和功能,包括路径规划。 要在Java中使用Geotools进行路径规划,可以按照以下步骤进行操作: 1. 创建一个地理空间数据源:使用Geotools库加载地图数据,可以从不同的数据源中加载地图数据,如Shapefile文件、数据库等。 2. 创建一个网络数据集:将加载的地图数据转换为网络数据集,以便进行路径规划。网络数据集由节点和边组成,节点表示地图上的位置,边表示两个节点之间的连接关系。 3. 创建一个路径规划器:使用Geotools库提供的路径规划算法,如Dijkstra算法或A*算法,创建一个路径规划器对象。 4. 设置起点和终点:指定起点和终点的位置,可以使用地理坐标或节点ID来表示。 5. 进行路径规划:调用路径规划器的方法,传入起点和终点,即可获取最优路径。 6. 处理路径结果:根据路径规划的结果,可以获取最优路径的节点序列或地理坐标序列,以及路径的总长度或时间等。 下面是一个简单的示例代码,演示如何使用Geotools进行路径规划: ```java // 创建地理空间数据源 File file = new File("map.shp"); DataStore dataStore = DataStoreFinder.getDataStore(file); // 创建网络数据集 Network network = NetworkBuilder.read(dataStore.getFeatureSource()); // 创建路径规划器 DijkstraShortestPathFinder pathFinder = new DijkstraShortestPathFinder(network); // 设置起点和终点 Node startNode = network.getNode(1); Node endNode = network.getNode(10); pathFinder.setStartNode(startNode); pathFinder.setEndNode(endNode); // 进行路径规划 pathFinder.calculate(); // 处理路径结果 List<Node> pathNodes = pathFinder.getPathNodes(); double totalDistance = pathFinder.getTotalDistance(); // 输出最优路径 System.out.println("最优路径节点序列:" + pathNodes); System.out.println("最优路径总长度:" + totalDistance); ```
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值