SkillAgentSearch skills...

CoordTransform

在Oracle中实现百度-高德-WGS三种坐标相互转换. 数据源为Oracle Spatial空间数据(sdo_geometry). 已封装转换函数wgs2bd(wgs转百度)/wgs2gd(wgs转高德)/gd2bd(高德转百度)以及反方向3个共6个,如函数gd2wgs(IN SDO_GEOMETRY)实现输入高德坐标要素,输出WGS坐标要素. 点线面三种要素均已实现.

Install / Use

/learn @xuxinkun0591/CoordTransform
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

平时把空间数据保存在oracle数据库, 用oracle spatial技术里的SDO_GEOMETRY字段保存点线面数据,想找个百度-高德-WGS这三种坐标相互转换的代码, 发现竟然没有ORACLE PLSQL 版本的, 大多是javascirpt和java版本的. javascript处理效率低,不适合处理大量数据的坐标转换; java读取数据源不太方便; 用plsql效率高且调用方便,于是自己动手写一个.</br> 该存储过程(包)实现oracle spatial 中 sdo_geometry类型的空间数据经纬度坐标转换, 包括百度-高德-WGS三种坐标, 输入和输出坐标系均为EPSG:4326.</br> 用法: 包coord包含多个函数, 用户用到的只有6个函数-- wgs2bd(wgs转百度)/wgs2gd(wgs转高德)/gd2bd(高德转百度),以及反过来的三个(bd2wgs/gd2wgs/bd2gd),输入变量为原sdo_geometry, 输出变量为转换后的sdo_geometry. 如高德经纬度点(119,20),对应geom=SDO_GEOMETRY(2001,4326,SDO_POINT_TYPE(119,20,NULL),NULL,NULL),需要转换为WGS坐标, 直接用包中的函数coord.gd2wgs(geom),即可得到转换后的坐标(118.9956523, 20.002079).</br> </br> 代码示例: </br> SELECT coord.gd2wgs(SDO_GEOMETRY(2001,4326,SDO_POINT_TYPE(119,20,NULL),NULL,NULL)) trans_point from dual; </br> </br> ----------OUTPUT------------ </br> SDO_GEOMETRY(2001, 4326, MDSYS.SDO_POINT_TYPE(118.9956523, 20.002079, NULL), NULL, NULL)

</br></br> By xuxinkun

Related Skills

View on GitHub
GitHub Stars4
CategoryDevelopment
Updated1y ago
Forks1

Security Score

55/100

Audited on May 16, 2024

No findings