* 火星坐标系:中国国家测绘局制定的坐标系统,由WGS84加密后的坐标。高德地图、腾讯地图以及谷歌中国区地图使用的是GCJ-02坐标系
* BD09:百度坐标系,GCJ02加密后的坐标系。
实际的地图展示中,有时候会发现使用了gis图层的经纬度展示的点地图中,点位置会有所偏移,与在高德或百度地图等中看到的对应位置不一致,这种情况实际上是由于百度-高德坐标体系的不同导致的,此时需要先对坐标体系做转换后在使用数据进行地图展示。
导致点偏移的设置如下(当使用的gis图层坐标体系和数据中经纬度定位多绑定的经纬度体系不同时,会导致偏移情况的出现):
FineReport中gis图层设置:
FineReport中数据设置的地理信息选择使用 经纬度定位的方式:
使用步骤:
1、下载部署:
先下载帖子最后的 GPSConverterUtils.class 文件,在 ..\WebReport\WEB-INF\classes\com\fr\function 下新建 custom 目录,然后拷贝 GPSConverterUtils.class 文件到此目录下,重启设计器。(如需在服务器使用,则重启web服务器即可)。
2、配置:
打开设计器 服务器-函数管理器 ,添加函数,选择已放置到 ..\WebReport\WEB-INF\classes\com\fr\function\custom 目录下的 GPSConverterUtils.class 文件-确定-重命名为gpsconversion(名字可随意自定义,双击名称位置即可重命名)-确定 即可。
3、使用
在公式环境中,选择 自定义函数-gpsconversion(你命名的函数名称) ,双击添加即可。然后为此函数添加四个参数值。
函数解释如下:
- gpsconversion(type,lon,lat):高德-百度体系经纬度互转。
- type代表要执行的转换类型,值为"gd_to_bd" 表示要把高德体系转为百度体系坐标,值为"bd_to_gd" 表示要把百度体系转为高德体系坐标。
- lon代表点的经度。
- lat代表点的纬度。
- 备注:type参数必须为字符串,只能为"gd_to_bd"或"bd_to_gd",为其他内容时,会返回提示信息"坐标体系转换类型选择错误"。lon参数和lat参数必须为数字,可为小数或者整数。
复制代码
此时可通过 增强公式编辑器(仅支持9.0) 插件查看函数执行结果。点击实时计算
可看到已转换完成的百度体系值为 119.26091542232982,26.08578157175887 。
4、公式说明:
如希望其他用户使用时也可看到此函数的使用方法,可为此函数添加公式说明。
打开 ..\WebReport\WEB-INF\resources\ 下的 functions.xml 文件,找到gpsconversion函数,在Description标签内部添加公式说明即可(可直接添加以上函数解释,也可根据自己的理解重新编辑描述内容)。
添加完成后重启设计器(或web服务器),设计器中打开选中此函数,在右边的公式说明中即可看到描述
函数默认返回的是保留14位小数点精度的值用逗号分割组成的字符串,如果需要分拆经纬度单独使用,可参考- TODOUBLE(INDEXOFARRAY(split(gpsconversion("gd_to_bd",119.254356,26.080030),","),1))
复制代码 使用split函数以,号分割字符串行成数组后,以INDEXOFARRAY函数获取1位元素,可获取到经度值,2位元素可获取到纬度值,具体的函数解释请参考公式说明!
根据不同需求,可使用round函数保留指定位数。效果如图:
至此,此自定义函数在FR的公式环境中已可以随意使用。
编辑于 2018-6-3 19:04
编辑于 2018-6-4 09:23
|