当前位置:网站首页>利用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));
}
边栏推荐
- An动画基础之按钮动画与基础代码相结合
- An工具介绍之形状工具及渐变变形工具
- Image fusion SDDGAN article learning
- 一些测试相关知识
- 自律成就自己
- Free Internet fax platform fax _ don't show number
- bash case usage
- YOLOv5 training data prompts No labels found, with_suffix is used, WARNING: Ignoring corrupted image and/or label appears during yolov5 training
- Feature dimensionality reduction study notes (pca and lda) (1)
- 基于php家具销售管理系统获取(php毕业设计)
猜你喜欢
期货公司开户关注的关键点
AMS simulation
海外代购系统/代购网站怎么搭建——源码解析
实数取整写入文件(C语言文件篇)
基于php旅游网站管理系统获取(php毕业设计)
Notepad++ 安装jsonview插件
基于php校园医院门诊管理系统获取(php毕业设计)
漫谈缺陷管理的自动化实践方案
4500 words sum up, a software test engineer need to master the skill books
YOLOv5 training data prompts No labels found, with_suffix is used, WARNING: Ignoring corrupted image and/or label appears during yolov5 training
随机推荐
Oracle安装完毕(系统盘),从系统盘转移到数据盘
What knowledge points do you need to master to learn software testing?
五、函数的调用过程
pytorch+tensorboard使用方法
期货开户中常见问题汇总
B站回应“HR 称核心用户都是 Loser”:该面试官去年底已被劝退,会吸取教训加强管理
图像融合DDcGAN学习笔记
An动画优化之遮罩层动画
Database basics one (MySQL) [easy to understand]
nacos app
ROS中编译通过但是遇到可执行文件找不到的问题
shell编程条件语句
第十五章 源代码文件 REST API 简介
Yahoo! Answers-数据集
622. 设计循环队列
[数据仓库]分层概念,ODS,DM,DWD,DWS,DIM的概念「建议收藏」
便携烙铁开源系统IronOS,支持多款便携DC, QC, PD供电烙铁,支持所有智能烙铁标准功能
一次内存泄露排查小结
Five, the function calls
setTimeout 、setInterval、requestAnimationFrame