Skip to content

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

Notifications You must be signed in to change notification settings

xuxinkun0591/coordTransform

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 

Repository files navigation

平时把空间数据保存在oracle数据库, 用oracle spatial技术里的SDO_GEOMETRY字段保存点线面数据,想找个百度-高德-WGS这三种坐标相互转换的代码, 发现竟然没有ORACLE PLSQL 版本的, 大多是javascirpt和java版本的. javascript处理效率低,不适合处理大量数据的坐标转换; java读取数据源不太方便; 用plsql效率高且调用方便,于是自己动手写一个.
该存储过程(包)实现oracle spatial 中 sdo_geometry类型的空间数据经纬度坐标转换, 包括百度-高德-WGS三种坐标, 输入和输出坐标系均为EPSG:4326.
用法: 包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).

代码示例:
SELECT coord.gd2wgs(SDO_GEOMETRY(2001,4326,SDO_POINT_TYPE(119,20,NULL),NULL,NULL)) trans_point from dual;

----------OUTPUT------------
SDO_GEOMETRY(2001, 4326, MDSYS.SDO_POINT_TYPE(118.9956523, 20.002079, NULL), NULL, NULL)



By xuxinkun

About

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

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published