geotools实现坐标系转换_geotools 坐标系转换-程序员宅基地

技术标签: java  开发语言  

转WGS84坐标系

 坐标网址:Beijing 1954 / Gauss-Kruger 21N - EPSG:21481

下面写的 String c2 里面的东西就是在官网里面找的,,我用的是这个21481,但是手动修改了一下,如果需要别的也可以去官网找,里面都有

不需要修改的,可以直接使用官网提供的EPSG:xxxx

所需依赖:

 <!--geotools-->
        <dependency>
            <groupId>org.geotools</groupId>
            <artifactId>gt-opengis</artifactId>
            <version>${geotools.version}</version>
        </dependency>
        <dependency>
            <groupId>org.geotools</groupId>
            <artifactId>gt-main</artifactId>
            <version>${geotools.version}</version>
        </dependency>
        <!--EOSG格式-->
        <dependency>
            <groupId>org.geotools</groupId>
            <artifactId>gt-epsg-hsql</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-epsg-wkt</artifactId>
            <version>${geotools.version}</version>
        </dependency>
        <dependency>
            <groupId>org.hsqldb</groupId>
            <artifactId>hsqldb</artifactId>
            <version>2.5.2</version>
        </dependency>
        <dependency>
            <groupId>org.gdal</groupId>
            <artifactId>gdal</artifactId>
            <version>3.1.0</version>
        </dependency>

import org.geotools.referencing.CRS;
import org.locationtech.jts.io.ParseException;
import org.opengis.referencing.FactoryException;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
import org.opengis.referencing.operation.MathTransform;
import org.opengis.referencing.operation.TransformException;

public class GeoUtil {

    public Coordinate getWGS84Yt(double srcLon, double srcLat) throws FactoryException, TransformException, ParseException {

        String sourceCRS = "EPSG:4326";
        String c2 ="PROJCS[\"unnamed\",\n" +
                "    GEOGCS[\"GRS 1980(IUGG, 1980)\",\n" +
                "        DATUM[\"unknown\",\n" +
                "            SPHEROID[\"GRS80\",6378137,298.2572221010002,\n" +
                "                AUTHORITY[\"EPSG\",\"7019\"]],\n" +
                "            AUTHORITY[\"EPSG\",\"6269\"]],\n" +
                "        PRIMEM[\"Greenwich\",0],\n" +
                "        UNIT[\"degree\",0.0174532925199433],\n" +
                "        AXIS[\"Geodetic longitude\",EAST],\n" +
                "        AXIS[\"Geodetic latitude\",NORTH],\n" +
                "        AUTHORITY[\"EPSG\",\"4269\"]],\n" +
                "    PROJECTION[\"Transverse_Mercator\"],\n" +
                "    PARAMETER[\"latitude_of_origin\",0],\n" +
                "    PARAMETER[\"central_meridian\",120],\n" +
                "    PARAMETER[\"scale_factor\",1],\n" +
                "    PARAMETER[\"false_easting\",499040],\n" +
                "    PARAMETER[\"false_northing\",-720],\n" +
                "    UNIT[\"meters\",1],\n" +
                "    AXIS[\"Easting\",EAST],\n" +
                "    AXIS[\"Northing\",NORTH]]";
        CoordinateReferenceSystem sourceCRSObj = CRS.decode(sourceCRS);
        CoordinateReferenceSystem targetCRSObj = CRS.parseWKT(c2);
/*        CoordinateReferenceSystem targetCRSObj = CRS.decode("EPSG:4549");*/
        // 定义待转换坐标点
/*        double srcLon = 37.42318; //x
        double srcLat = 121.249782; //y*/
        double[] srcCoords = new double[]{srcLat, srcLon};


        MathTransform transform = CRS.findMathTransform(sourceCRSObj, targetCRSObj, true);
        double[] tgtCoords = new double[2];
        transform.transform(srcCoords, 0, tgtCoords, 0, 1);

        // 打印转换结果
/*        System.out.println("Source Coordinates: " + srcLon + ", " + srcLat);
        System.out.println("Target Coordinates: " + tgtCoords[0] + ", " + tgtCoords[1]);*/
        return new Coordinate(tgtCoords[0], tgtCoords[1]);
    }

调用:

  @PostMapping("/getWGS84Yt")
    public Result<Coordinate> getWGS84Yt(@RequestParam("lon") double lon,
                                         @RequestParam("lat") double lat) throws FactoryException, ParseException, TransformException {
        return Result.success(new GeoUtil().getWGS84Yt(lon, lat));
    }
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_75137365/article/details/130557006

智能推荐

42 SAP报错:作业类型 ACT001 没有为成本中心 1088 1200990001 设置(Activity type ATC001 not set up for cost center XXX)_作业类型 lab 没有为成本中心 ql99 1001 设置-程序员宅基地

文章浏览阅读567次,点赞6次,收藏11次。解决方案:CO模块使用前台事务码KP26维护活动类型价格,即可。业务操作:PP模块前台事务码CR02维护活动类型时,报错如上。报错原因:CO模块没有为活动类型进行价格维护。CO模块KP26维护作业类型价格完毕。2024年1月26日 写于上海。事务码KP26进入,_作业类型 lab 没有为成本中心 ql99 1001 设置

TortoiseGit解决TortoiseGitPlink要求输入密码-程序员宅基地

文章浏览阅读3.2k次,点赞4次,收藏10次。解决TortoiseGitPlink要求输入密码_tortoisegitplink

什么是大端存储和小端存储-程序员宅基地

文章浏览阅读4.7k次,点赞2次,收藏5次。详细了解大端和小端的存储_大端存储和小端存储

【共读】企业信息安全建设与运维指南(一)_信息安全运营服务实施指南研究-程序员宅基地

文章浏览阅读6.3k次,点赞5次,收藏49次。一、从零开始建设企业信息安全系统:企业信息安全体系分为:信息安全技术体系和信息安全管理体系 信息安全技术体系: 两个层面: 1.需建设安全相关基础设施和系统,以具备解决相关安全问题的能力。 2.需具备安全运营能力,只有正确部署和使用设备,才能真正保障信息安全。 信息安全管理体系: 两个层面: 1.具备信息安全相关的制度、规范、流程及策略。 2.具..._信息安全运营服务实施指南研究

python遍历文件夹轻松拷贝所有固定格式的文件_python遍历所有文件复制指定文件?tn=02003390_71_hao_pg-程序员宅基地

文章浏览阅读455次。import osimport shutil def select_file(dir, dir_out): # dir为查询文件路径,dir_out为拷贝路径 if os.path.isfile(dir): if(dir[-4:] == '.bmp' or '.jpg' or 'png'): #拷贝所有以上格式的文件,也可以修改为其他格式 filename = dir.split('\\')[-1] # 提取文件名称 s_python遍历所有文件复制指定文件?tn=02003390_71_hao_pg

Win cuda11+cudnn11网盘下载_win11 cudatookit安装包 百度云-程序员宅基地

文章浏览阅读5.1k次,点赞17次,收藏10次。https://pan.baidu.com/s/1IV_lBCeFFM712xx_iXnhqQ 提取码:0pr5_win11 cudatookit安装包 百度云

随便推点

【教程】CDQ套CDQ——四维偏序问题【转载】-程序员宅基地

文章浏览阅读128次。转自前言 上一篇文章已经介绍了简单的CDQ分治,包括经典的二维偏序和三维偏序问题,还有带修改和查询的二维/三维偏序问题。本文讲介绍多重CDQ分治的嵌套,即多维偏序问题。四维偏序问题给定N(N<=20000)个有序四元组(a,b,c,d),求对于每一个四元组(a,b,c,d),有多少个四元组(a2,b2,c2,d2)满足a2<a &..._cdq处理四维偏序

Unity两个相机设置_unity设置两个摄像机-程序员宅基地

文章浏览阅读571次,点赞8次,收藏10次。Culling Mask:bg(将背景图片的layer设置为bg,层级在最后面,比如这里设置为9,背景图片一般放在2DObject-sprite里)main Camera:用来照物体的,CameraUI:用来照背景的。_unity设置两个摄像机

瑞_VMware虚拟机安装Linux纯净版(含卸载,图文超详细)_虚拟机安装linuxqq和卸载的图片-程序员宅基地

文章浏览阅读3.7k次,点赞90次,收藏24次。VMware虚拟机安装Linux纯净版(含卸载,图文超详细)_虚拟机安装linuxqq和卸载的图片

即时通讯开发平台AnyChat的开发流程及应用_axchat的使用过程-程序员宅基地

文章浏览阅读1.1k次。AnyChat开发流程指南下面列出AnyChatPlatform Core SDK基本开发流程,适用于开发视频会议系统、语音视频聊天系统、远程教育平台以及即时通讯平台(IM)等。 一、初始化该部分是首先要完成的,用于设置SDK的一些行为,包括设置对应的回调函数、设置SDK组件路径、设置是否产生日志文件等,通常初始化AnyChat SDK的代码如下(C++): 01.// 打_axchat的使用过程

计算机毕设Python+Vue疫情期间学生作业线上管理系统(程序+LW+部署)_在线作业管理系统测试用例-程序员宅基地

文章浏览阅读190次。项目运行环境配置:Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。项目技术:SSM + mybatis + Maven + Vue 等等组成,B/S模式 + Maven管理等等。环境需要1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。_在线作业管理系统测试用例

Unicode与FFFE(记一个蛋疼的项目)-程序员宅基地

文章浏览阅读758次。好久没更新博客了。近期忙着一个项目, 还要应付各种考试就顾不上博客了。今天遇到了一个蛋疼的问题, 通过BLE4.0与蓝牙外设通信。按照客户给的协议文档发送的数据, 可是外设不能正确识别。折腾了一下午。最后问了客户才知道... 数据头fffe, 他们在外设里面已经做规定了。 所以不须要发送。真是蛋疼。也怪自..._unicode fffe

推荐文章

热门文章

相关标签