风雨十年,感恩同行
查看: 672|回复: 0

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

[复制链接]

该用户从未签到

发表于 2019-6-6 21:28:43 | 显示全部楼层 |阅读模式
* 火星坐标系:中国国家测绘局制定的坐标系统,由WGS84加密后的坐标。高德地图腾讯地图以及谷歌中国区地图使用的是GCJ-02坐标系! `( }% l$ G0 @, c3 |
* BD09:百度坐标系,GCJ02加密后的坐标系。
% y6 n# T9 x# h: b9 n
! p5 Z! ^0 \' v9 a

% x  G+ M7 J  n7 G: i2 m实际的地图展示中,有时候会发现使用了gis图层的经纬度展示的点地图中,点位置会有所偏移,与在高德或百度地图等中看到的对应位置不一致,这种情况实际上是由于百度-高德坐标体系的不同导致的,此时需要先对坐标体系做转换后在使用数据进行地图展示。

& }! \! k. y$ h) z1 |5 v! H导致点偏移的设置如下(当使用的gis图层坐标体系和数据中经纬度定位多绑定的经纬度体系不同时,会导致偏移情况的出现):
$ V+ j6 S9 I# H) @. S
FineReport中gis图层设置:: P* n* o7 F8 R# x4 @% U
- u9 [4 q3 L$ a3 g3 ~) C
FineReport中数据设置的地理信息选择使用 经纬度定位的方式:
) e' r) h  t' f! A7 j- e( ^
) B# `0 S2 u: \6 Y! l5 w( b  A0 Y* v! [
使用步骤:
1 [' x+ ?0 r& F, y3 y- r7 ^0 C; Q, l7 k* F
1、下载部署:
. G1 w8 B' e) o4 M8 \. U: L( Z先下载帖子最后的 GPSConverterUtils.class 文件,在 ..\WebReport\WEB-INF\classes\com\fr\function新建 custom 目录,然后拷贝 GPSConverterUtils.class 文件到此目录下,重启设计器。(如需在服务器使用,则重启web服务器即可)。
5 P  H; D# \# r' ?( {( u6 D+ E- q1 k
9 c0 M6 O8 L- ?& t2、配置:6 ~% n3 }. X% Y& {5 y
打开设计器 服务器-函数管理器 ,添加函数,选择已放置到 ..\WebReport\WEB-INF\classes\com\fr\function\custom 目录下的 GPSConverterUtils.class 文件-确定-重命名为gpsconversion(名字可随意自定义,双击名称位置即可重命名)-确定 即可。
  j" c: g8 Q# R" I" L- u/ p7 M9 A- J( _) U$ X% B1 t

" k$ w$ I2 T/ w0 ~0 r. O
5 z- C# D2 h' B% [3、使用
. T% H: g! m' G1 B( P) G$ i在公式环境中,选择 自定义函数-gpsconversion(你命名的函数名称) ,双击添加即可。然后为此函数添加四个参数值。
1 L# }5 C' J; ^* `( k8 c
1 }" ?: Y5 Y! L+ T函数解释如下:
5 i  d; U& A" l+ f2 g
  • gpsconversion(type,lon,lat):高德-百度体系经纬度互转。- b! ?9 F: n, y
  • type代表要执行的转换类型,值为"gd_to_bd" 表示要把高德体系转为百度体系坐标,值为"bd_to_gd" 表示要把百度体系转为高德体系坐标。' s, K  l! ?5 [: X  T
  • lon代表点的经度。
    3 u* v* Z' f: x
  • lat代表点的纬度。
    : D5 w  U) p. g; ]
  •   备注:type参数必须为字符串,只能为"gd_to_bd"或"bd_to_gd",为其他内容时,会返回提示信息"坐标体系转换类型选择错误"。lon参数和lat参数必须为数字,可为小数或者整数。
    3 I! F$ a1 y9 O

6 f9 V; D6 C' i/ W% a[color=rgb(51, 102, 153) !important]复制代码) r( t- P# p7 u; m' U( E7 K
) E4 o. W- [# i- j  M7 I% l( v9 d
此时可通过
增强公式编辑器(仅支持9.0)
插件查看函数执行结果。点击实时计算; [5 f% l. @. |
6 {8 K+ c; N$ j, E
1 Q# k' I7 T' J& {! K* ~
可看到已转换完成的百度体系值为 119.26091542232982,26.08578157175887 。
, Y0 O% C3 z& K% v9 L
: U+ b, F6 G" A$ G! d/ V( u9 N4、公式说明:" v% _8 ]/ E; @# s2 J
如希望其他用户使用时也可看到此函数的使用方法,可为此函数添加公式说明。
6 Z2 D0 V+ n' w( a: z, W% s打开 ..\WebReport\WEB-INF\resources\ 下的 functions.xml 文件,找到gpsconversion函数,在Description标签内部添加公式说明即可(可直接添加以上函数解释,也可根据自己的理解重新编辑描述内容)。/ \) d4 \8 A6 f: H' Z! B" Y5 N
$ h- _7 ?2 V6 G- s) `$ d" I' Y
/ S3 A1 p% m/ k3 E# n1 E
添加完成后重启设计器(或web服务器),设计器中打开选中此函数,在右边的公式说明中即可看到描述
! y9 f/ _" [3 b8 k' n9 r% ~" G( Q# f0 E+ B, s

, @! Y5 E3 b2 E9 q* M7 i) V函数默认返回的是保留14位小数点精度的值用逗号分割组成的字符串,如果需要分拆经纬度单独使用,可参考
  • TODOUBLE(INDEXOFARRAY(split(gpsconversion("gd_to_bd",119.254356,26.080030),","),1))
    8 B! b7 L0 Z) H( H! a

# z- s0 N1 r9 j9 `- f- q% _[color=rgb(51, 102, 153) !important]复制代码
( r" U2 s: G/ f% O; Y4 T使用split函数以,号分割字符串行成数组后,以INDEXOFARRAY函数获取1位元素,可获取到经度值,2位元素可获取到纬度值,具体的函数解释请参考公式说明!' k# ]! @2 `, {/ A" O1 `. a8 S  P

8 K1 O1 r/ H1 E3 _6 I

" ]0 ?+ U( G. @% P4 j3 a& \根据不同需求,可使用round函数保留指定位数。效果如图:
& e/ O& p  M' i* V  ~' J  l# |
6 X' S' [$ k" P9 f, r" s( d7 N2 |1 u" p# Y0 a
至此,此自定义函数在FR的公式环境中已可以随意使用。% z5 C) ^, W( y+ V- L+ Y( j9 C4 H- t
, I: v# Y: Q1 V( \+ \

" a! ]) d& O. V) G4 Q0 x[color=rgba(10, 18, 32, 0.63921568627451)]网盘下载包含安装文件数据库、使用步骤说明、软注册文件以及文本实施资料与视频培训资料+ O9 o' d) u" d+ Y; a" V: E
帆软Report 10.0全功能500并发软注册.rar (216 Bytes, 下载次数: 44)

相关技术服务需求,请联系管理员和客服QQ:619920289或QQ:592439202
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

帖子推荐:
客服咨询

QQ:592439202

服务时间 9:00-22:00

金蝶用友易助管家婆深度服务
快速回复 返回顶部 返回列表