基于FME实现点线面要素wgs84、bd09、gcj相互之间的转换

1,709 阅读2分钟

由于我国特殊国情,公众版地理信息服务(包括电子底图)都要进行各种坐标偏移旋转等数据加密处理(火星坐标系),并获取国土资源部数据审查并颁发审图号才可公开发布。目前流行的互联网地图基本都是用的火星坐标系,而百度地图是在火星坐标系的基础上进行二次加密,形成自己的bd09坐标系。企业的GIS数据都是通过传感器或者实地测量获得的非加密的WGS84坐标(即常用的gps那种坐标),当企业将自己的业务数据叠加到互联网底图时,不可避免出现图层叠加偏移问题。网络上关于坐标相互之间的转换的算法都有公开(可自行百度),但是这些算法基本都是基于点的坐标进行转换的,对于比较复杂的线或者面,每一个要素都又许多个坐标点构成。 FME作为业内非常强大的数据转换和处理工具,基本可以实现零代码实现各种数据相互的复杂处理。因此基于FME写了一个转换模块,实现复杂要素的批处理。核心是pythoncaller中的转换算法。下面是FME模块的截图:

基本思路就是复杂的线或者面转换成点,点经过坐标转换后再转成线或者面。FME可以支持基本任何格式的数据转换,包括shp、cad、数据库要素等。 当然另外有一个大神通过postgis实现复杂要素的批量转换。这里贴上网址:github.com/FreeGIS/Pos… 如果有需求,大家可以自行下载