查看: 1030|回复: 0

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

[复制链接]
发表于 2019-6-6 21:28:43 | 显示全部楼层 |阅读模式
* 火星坐标系:中国国家测绘局制定的坐标系统,由WGS84加密后的坐标。高德地图腾讯地图以及谷歌中国区地图使用的是GCJ-02坐标系
; o- L0 w  k/ E# t9 n9 q* BD09:百度坐标系,GCJ02加密后的坐标系。

) [2 ?" j# P- |4 p
' W$ N- P3 {; E  E
$ v. r/ T& E1 e: Q1 n实际的地图展示中,有时候会发现使用了gis图层的经纬度展示的点地图中,点位置会有所偏移,与在高德或百度地图等中看到的对应位置不一致,这种情况实际上是由于百度-高德坐标体系的不同导致的,此时需要先对坐标体系做转换后在使用数据进行地图展示。
5 U8 H: G2 I( J) `3 v
导致点偏移的设置如下(当使用的gis图层坐标体系和数据中经纬度定位多绑定的经纬度体系不同时,会导致偏移情况的出现):
$ o' K+ y/ \2 P0 o' d% e1 i
FineReport中gis图层设置:
9 t7 T: I$ A* H( ?8 x , O6 E/ Z( J- s
FineReport中数据设置的地理信息选择使用 经纬度定位的方式:$ X  }* t4 f) h! ^6 u
7 {5 e/ Y0 W6 j* \
4 j, d/ w: z( j$ v" Z
使用步骤:& D' e# p3 v/ E; b, _% Y2 Z

$ m! S  q4 b, ?* L# B1、下载部署:
" ?2 @8 j" B9 Y, O% m" b; e先下载帖子最后的 GPSConverterUtils.class 文件,在 ..\WebReport\WEB-INF\classes\com\fr\function新建 custom 目录,然后拷贝 GPSConverterUtils.class 文件到此目录下,重启设计器。(如需在服务器使用,则重启web服务器即可)。
0 |- W4 [! J0 |4 a! r0 J3 A% G. W7 l' Z7 Q# S
2、配置:1 `0 M! Y: l$ c* }; k* h3 x7 R
打开设计器 服务器-函数管理器 ,添加函数,选择已放置到 ..\WebReport\WEB-INF\classes\com\fr\function\custom 目录下的 GPSConverterUtils.class 文件-确定-重命名为gpsconversion(名字可随意自定义,双击名称位置即可重命名)-确定 即可。
/ T2 P! ]  K( B
) Y# K1 a' ~7 p  C! Q+ s 6 F7 k) }: X; b: {9 @' [5 w* K: e

4 E; ~9 z# @9 v! X. }3、使用
5 y: v7 t1 \! U" n在公式环境中,选择 自定义函数-gpsconversion(你命名的函数名称) ,双击添加即可。然后为此函数添加四个参数值。
+ A4 W, `7 e1 k  y$ V3 d$ t/ u" S0 U
函数解释如下:
8 Z& ^# e& ?' M4 r6 |) t) y
  • gpsconversion(type,lon,lat):高德-百度体系经纬度互转。- u# v) k) r  u8 l
  • type代表要执行的转换类型,值为"gd_to_bd" 表示要把高德体系转为百度体系坐标,值为"bd_to_gd" 表示要把百度体系转为高德体系坐标。3 D, e) x6 e( ?8 x( x3 }- ?
  • lon代表点的经度。8 U% m2 o! f  P
  • lat代表点的纬度。
    / w4 u% p' d# I2 Y0 O3 k
  •   备注:type参数必须为字符串,只能为"gd_to_bd"或"bd_to_gd",为其他内容时,会返回提示信息"坐标体系转换类型选择错误"。lon参数和lat参数必须为数字,可为小数或者整数。
    & n$ G+ u  c2 Q' \+ z

& r" k) q  ]0 t1 }/ x9 F[color=rgb(51, 102, 153) !important]复制代码, G: }  k0 H  ?. \# {0 @' y: u% ?

) Y9 I. e: E' _2 s3 o$ e此时可通过
增强公式编辑器(仅支持9.0)
插件查看函数执行结果。点击实时计算' r" t. _4 n# w6 e. p* Z
. a0 Y1 J2 j9 s1 {8 q6 [
5 u) i* w" n& H7 Q- H& o3 n4 y0 u
可看到已转换完成的百度体系值为 119.26091542232982,26.08578157175887 。1 u0 \7 t! L( b" J( b

! g* n+ b6 U. s. b* ^4、公式说明:
( a' _4 F5 F. X. }; j如希望其他用户使用时也可看到此函数的使用方法,可为此函数添加公式说明。3 s* U' V7 y7 \8 a8 \
打开 ..\WebReport\WEB-INF\resources\ 下的 functions.xml 文件,找到gpsconversion函数,在Description标签内部添加公式说明即可(可直接添加以上函数解释,也可根据自己的理解重新编辑描述内容)。5 E) ]9 G" f/ M- f- v* Z7 n& @
7 s' J) V: V7 }. g3 b8 P5 F  |4 @
& |8 ~7 h( Z0 j3 o' h, |
添加完成后重启设计器(或web服务器),设计器中打开选中此函数,在右边的公式说明中即可看到描述* G1 g$ d: d4 z4 z, N9 k
( r& K! c" E# H2 @( N  b

7 _/ G. A0 N0 j% r1 j) Q函数默认返回的是保留14位小数点精度的值用逗号分割组成的字符串,如果需要分拆经纬度单独使用,可参考
  • TODOUBLE(INDEXOFARRAY(split(gpsconversion("gd_to_bd",119.254356,26.080030),","),1))
    2 r+ O8 k8 @- _  D% c: Q

" G3 ?, d4 c" B; z[color=rgb(51, 102, 153) !important]复制代码
3 m: _# b' W! m, z0 ], T% D使用split函数以,号分割字符串行成数组后,以INDEXOFARRAY函数获取1位元素,可获取到经度值,2位元素可获取到纬度值,具体的函数解释请参考公式说明!4 U; w" c& }. C% z3 y

3 M' l% E+ R0 }! ^

" T# L* M, [. Q0 s% ^% D根据不同需求,可使用round函数保留指定位数。效果如图:
( p1 i3 ]+ {: g$ M( N4 U9 X! A6 L) j4 W. c$ K2 O: h  d

4 ]3 x4 F' l4 @% U. b5 D至此,此自定义函数在FR的公式环境中已可以随意使用。
, F  I' c) p9 J7 Z& w2 c2 e9 O; u/ \3 @" y; g, M$ \8 d8 o
; k( w" ?7 P! x  Q) ]" r
[color=rgba(10, 18, 32, 0.63921568627451)]网盘下载包含安装文件数据库、使用步骤说明、软注册文件以及文本实施资料与视频培训资料
6 ]5 g7 U0 {% Q# d! \/ j( F/ R( |. n 帆软Report 10.0全功能500并发软注册.rar (216 Bytes, 下载次数: 46)

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

本版积分规则

帖子推荐:
客服咨询

QQ:2753533861

服务时间 9:00-22:00

快速回复 返回顶部 返回列表