当前位置:网站首页>利用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));
}边栏推荐
- shell编程之条件语句
- How to do App Automation Testing?Practical sharing of the whole process of App automation testing
- Blog records life
- R language ggplot2 visualization: use the patchwork bag plot_layout function will be more visual image together, ncol parameter specifies the number of rows, specify byrow parameters configuration dia
- Feature dimensionality reduction study notes (pca and lda) (1)
- 五、函数的调用过程
- 无监督学习KMeans学习笔记和实例
- Five, the function calls
- 技术分享 | 接口自动化测试如何搞定 json 响应断言?
- pytorch+tensorboard使用方法
猜你喜欢

An动画基础之按钮动画与基础代码相结合

苹果发布 AI 生成模型 GAUDI,文字生成 3D 场景

The common problems in the futures account summary

Filebeat 如何保持文件状态?

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

Random forest project combat - temperature prediction

漫谈缺陷管理的自动化实践方案

长城简漫·暑期安全篇⑤ 这个强,不能逞

setTimeout, setInterval requestAnimationFrame

【实战技能】单片机bootloader的CANFD,I2C,SPI和串口方式更新APP视频教程(2022-08-01)
随机推荐
R语言绘制时间序列的自相关函数图:使用acf函数可视化时间序列数据的自相关系数图
The common problems in the futures account summary
Free Internet fax platform fax _ don't show number
安防监控必备的基础知识「建议收藏」
php microtime encapsulates the tool class, calculates the running time of the interface (breakpoint)
15. PARTITIONS「建议收藏」
基于php网上零食商店管理系统获取(php毕业设计)
广州番禺:暑期防溺水,安全不放假
为什么越来越多的开发者放弃使用Postman,而选择Eolink?
长江商业银行面试
An工具介绍之钢笔工具、铅笔工具与画笔工具
(通过页面)阿里云云效上传jar
别再用if-else了,分享一下我使用“策略模式”的项目经验...
php microtime 封装工具类,计算接口运行时间(打断点)
图像融合GAN-FM学习笔记
五、函数的调用过程
【R】用grafify搞定统计绘图、方差分析、干预比较等!
Sogou news-数据集
An工具介绍之骨骼工具
pandas连接oracle数据库并拉取表中数据到dataframe中、筛选当前时间(sysdate)到一天之前的所有数据(筛选一天范围数据)