请选择 进入手机版 | 继续访问电脑版
风雨十年,感恩同行

帆软Report 10.0全功能500并发软注册应用之高德百度坐标系转换自定义函数

[复制链接]
发表于 2019-6-6 21:28:43 | 显示全部楼层 |阅读模式
* 火星坐标系:中国国家测绘局制定的坐标系统,由WGS84加密后的坐标。高德地图腾讯地图以及谷歌中国区地图使用的是GCJ-02坐标系
6 Q4 x0 F0 B+ x( d) @* BD09:百度坐标系,GCJ02加密后的坐标系。

6 e; C' w0 p& l( z' P# Y1 u* p& b+ l1 n' C8 z
: d8 K' D' ]# P
实际的地图展示中,有时候会发现使用了gis图层的经纬度展示的点地图中,点位置会有所偏移,与在高德或百度地图等中看到的对应位置不一致,这种情况实际上是由于百度-高德坐标体系的不同导致的,此时需要先对坐标体系做转换后在使用数据进行地图展示。
1 |- @4 g5 M( [2 S' ^
导致点偏移的设置如下(当使用的gis图层坐标体系和数据中经纬度定位多绑定的经纬度体系不同时,会导致偏移情况的出现):
4 r5 ~( u; L7 [7 s1 {0 D
FineReport中gis图层设置:; P  p7 N9 I9 v2 N- L0 F" y
3 K, A0 d* l) z+ u! G
FineReport中数据设置的地理信息选择使用 经纬度定位的方式:5 f+ R- [: W# ~, \; q# [

1 K3 h9 g; f3 l: ]2 A4 Q
; {+ L" j7 B, h使用步骤:! E9 y3 Z0 m! O) T( s; W0 z9 a, \
& `. q$ W) E3 ~
1、下载部署:) S7 ?9 A, z1 B% n+ w4 a. \! h, K
先下载帖子最后的 GPSConverterUtils.class 文件,在 ..\WebReport\WEB-INF\classes\com\fr\function新建 custom 目录,然后拷贝 GPSConverterUtils.class 文件到此目录下,重启设计器。(如需在服务器使用,则重启web服务器即可)。0 X7 q5 J2 Y( j! d; C
4 k+ t+ b% W; n1 x& _
2、配置:2 {8 p3 i+ ?1 ^8 z. r1 o: O* e
打开设计器 服务器-函数管理器 ,添加函数,选择已放置到 ..\WebReport\WEB-INF\classes\com\fr\function\custom 目录下的 GPSConverterUtils.class 文件-确定-重命名为gpsconversion(名字可随意自定义,双击名称位置即可重命名)-确定 即可。% r1 h# r' W* M/ T8 \
2 W4 u" V( ?% t" }$ q5 Y% f! Z
. Z' p$ k, S# C
3 {  u% B6 R3 y/ W* K# R) \) {
3、使用2 F5 \8 M. ~5 _* N
在公式环境中,选择 自定义函数-gpsconversion(你命名的函数名称) ,双击添加即可。然后为此函数添加四个参数值。* X- w! }( A8 a' O$ q& p

7 @$ u0 J. J5 m9 l! @4 v5 I函数解释如下:; u, K( m6 I0 M& |' p
  • gpsconversion(type,lon,lat):高德-百度体系经纬度互转。" K" o1 I3 f0 o$ f: i9 q2 H1 F; V/ B
  • type代表要执行的转换类型,值为"gd_to_bd" 表示要把高德体系转为百度体系坐标,值为"bd_to_gd" 表示要把百度体系转为高德体系坐标。
    3 a4 }* d+ F- ^6 s) X# u8 T  o
  • lon代表点的经度。/ M& }/ H* Q( R4 f4 x8 M9 C' Z5 Q
  • lat代表点的纬度。9 e3 w1 o' O# d7 _8 f
  •   备注:type参数必须为字符串,只能为"gd_to_bd"或"bd_to_gd",为其他内容时,会返回提示信息"坐标体系转换类型选择错误"。lon参数和lat参数必须为数字,可为小数或者整数。
    : k: ]! `+ g" M* \$ j' K& E0 c4 k2 p
0 F; ~3 @3 [+ h! [5 L
[color=rgb(51, 102, 153) !important]复制代码& }4 {. i- t$ w( T  u& @; [" U
0 g# Z7 l7 c. r3 }  v" ^
此时可通过
增强公式编辑器(仅支持9.0)
插件查看函数执行结果。点击实时计算
) H! V6 T) @0 A& W  ]5 j3 l( o" l9 `7 n  b) _. I
; u( ^" ~% ]0 |
可看到已转换完成的百度体系值为 119.26091542232982,26.08578157175887 。$ J1 I6 e8 D7 \6 U  h) x
5 S* q7 W" R% D; g: t4 a' C* }
4、公式说明:% k: T4 H# z1 Z$ h$ l0 H
如希望其他用户使用时也可看到此函数的使用方法,可为此函数添加公式说明。& l! L  q4 N; I% [( u) z
打开 ..\WebReport\WEB-INF\resources\ 下的 functions.xml 文件,找到gpsconversion函数,在Description标签内部添加公式说明即可(可直接添加以上函数解释,也可根据自己的理解重新编辑描述内容)。
0 C* E3 u4 a7 h+ `: I 3 p, c; b/ r% t/ D$ g

. [8 e$ M& {% a. Z3 {  m& y1 W添加完成后重启设计器(或web服务器),设计器中打开选中此函数,在右边的公式说明中即可看到描述
6 a% J4 N; N0 W6 H2 t9 J1 U; H; \1 C) E0 g  M; q5 D

+ m+ V0 B4 B! z函数默认返回的是保留14位小数点精度的值用逗号分割组成的字符串,如果需要分拆经纬度单独使用,可参考
  • TODOUBLE(INDEXOFARRAY(split(gpsconversion("gd_to_bd",119.254356,26.080030),","),1))
    7 `& L: u% `" s& H6 n2 x
! E) b8 T8 Y) V
[color=rgb(51, 102, 153) !important]复制代码" N+ I- k1 k; m% ]/ \, v
使用split函数以,号分割字符串行成数组后,以INDEXOFARRAY函数获取1位元素,可获取到经度值,2位元素可获取到纬度值,具体的函数解释请参考公式说明!: k+ _3 @# r8 D5 h5 `
$ B/ Z/ U& w9 ]; T/ G

6 y$ m' ^  C8 h9 `! O2 J' @5 w根据不同需求,可使用round函数保留指定位数。效果如图:8 F+ W& W  w' v  C1 Z, U% c

' D- q6 ~8 o! N- ?3 v& S8 L$ j8 ^4 h: i- k! g; W* i! d
至此,此自定义函数在FR的公式环境中已可以随意使用。
! }  w) S8 `# y! g( r& M/ [8 I" b
* ]4 J% U+ J7 Q8 W- }  |

, P4 a, u( Q* r) H7 U  W- I[color=rgba(10, 18, 32, 0.63921568627451)]网盘下载包含安装文件数据库、使用步骤说明、软注册文件以及文本实施资料与视频培训资料/ z% q0 W* `& z: k0 m$ j2 n
帆软Report 10.0全功能500并发软注册.rar (216 Bytes, 下载次数: 43)

您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

帖子推荐:
客服咨询

QQ:592439202

服务时间 9:00-22:00

金蝶用友易助管家婆深度服务
 
QQ在线咨询
售前咨询热线
592439202
售后服务热线
243998158
快速回复 返回顶部 返回列表