当前位置:网站首页>利用pgsql插件PostGIS 实现地理坐标系数据转换
利用pgsql插件PostGIS 实现地理坐标系数据转换
2022-08-03 12:35:00 【洛阳泰山】
pgsql数据库添加PostGIs 空间扩展
CREATE EXTENSION postgis;
CREATE EXTENSION pgrouting;
CREATE EXTENSION postgis_topology;
CREATE EXTENSION fuzzystrmatch;
CREATE EXTENSION postgis_tiger_geocoder;
CREATE EXTENSION address_standardizer;查询坐标系数据转换sql的mapper.xml
<select id="coordinateTransform" resultType="java.lang.String">
select st_astext(st_transform(st_setsrid(ST_MakePoint(#{pointX},#{pointY}),#{srcSrid}),#{targetSrid}))
</select>mapper类
/**
* 方法描述: 计算线的夹角
*
* @param x 源坐标x
* @param y 源坐标y
* @param srcSrid 源坐标系EPSG代号
* @param targetSrid 目标坐标系EPSG代号
* @return {@link String}
*/
String coordinateTransform(@Param("pointX") BigDecimal x, @Param("pointY") BigDecimal y, @Param("srcSrid") int srcSrid, @Param("targetSrid") int targetSrid);service类
//坐标系转换
public CoordinateDTO coordinateTransform(BigDecimal x, BigDecimal y, int srcSrid, int targetSrid) {
CoordinateDTO vo=new CoordinateDTO();
String targetPoint = tunnelCenterLineService.coordinateTransform(x,y,srcSrid,targetSrid);
String[] coordinateArr = StringUtil.subBetween(targetPoint, "(", ")").split(" ");
if(coordinateArr==null ||coordinateArr.length<2){
return vo;
}
String txs="Infinity".equals(coordinateArr[0])?"0":coordinateArr[0];
String tys="Infinity".equals(coordinateArr[1])?"0":coordinateArr[1];
BigDecimal tx=new BigDecimal(txs).setScale(3, BigDecimal.ROUND_HALF_UP);
BigDecimal ty=new BigDecimal(tys).setScale(3, BigDecimal.ROUND_HALF_UP);
vo.setX(tx);
vo.setY(ty);
return vo;
}注:计算结果和专业测量软件转换的结果,误差在1毫米之间。
使用示例
@ApiOperation(value = "坐标系转换北京54-国家2000")
@PostMapping(value = "/bjz54ToCgcs2000")
public ResponseDTO<CoordinateDTO> bjz54ToCgcs2000(@RequestBody CoordinateDTO dto){
return ResponseDTO.succData(unionSpaceDataService.coordinateTransform(dto.getX(),dto.getY(),2415,4527));
}边栏推荐
- Key points for account opening of futures companies
- 【云原生 · Kubernetes】部署Kubernetes集群
- 7月份最后一篇博客
- Chapter 15 Source Code File REST API Introduction
- Sogou news-数据集
- 一些测试相关知识
- [Verilog] HDLBits Problem Solution - Circuits/Sequential Logic/Latches and Flip-Flops
- 免费的网络传真平台_发传真不显示发送号码
- 层次分析法
- Random forest project combat - temperature prediction
猜你喜欢

(through page) ali time to upload the jar

shell编程之条件语句

海外代购系统/代购网站怎么搭建——源码解析

How does Filebeat maintain file state?

链游NFT元宇宙游戏系统开发技术方案及源码

论文理解:“Gradient-enhanced physics-informed neural networks for forwardand inverse PDE problems“

An动画基础之散件动画原理与形状提示点

欧曼自动挡、银河大马力、行星新产品 欧曼全新产品以燎原之势赢领市场

利用ChangeStream实现Amazon DocumentDB表级别容灾复制

Image fusion GAN-FM study notes
随机推荐
4500 words sum up, a software test engineer need to master the skill books
shell编程之条件语句
项目概述、推送和存储平台准备
使用工作队列管理器(四)
安全自定义 Web 应用程序登录
pytorch+tensorboard使用方法
PolarFormer: Multi-camera 3D Object Detection with Polar Transformers 论文笔记
LyScript implements memory stack scanning
漫谈缺陷管理的自动化实践方案
层次分析法
苹果发布 AI 生成模型 GAUDI,文字生成 3D 场景
查看GCC版本_qt版本
技术分享 | 接口自动化测试如何搞定 json 响应断言?
数据库系统原理与应用教程(073)—— MySQL 练习题:操作题 131-140(十七):综合练习
B站回应“HR 称核心用户都是 Loser”:该面试官去年底已被劝退,会吸取教训加强管理
第4章 搭建网络库&Room缓存框架
特征工程学习笔记
[Verilog] HDLBits Problem Solution - Circuits/Sequential Logic/Latches and Flip-Flops
使用 %Status 值
Free Internet fax platform fax _ don't show number