作者:taco
在移动应用开发中,我们经常集成第三方地图服务,如百度地图和高德地图,它们大多采用火星坐标系。那么,我们如何将标准坐标系下的数据服务与这些地图服务的位置进行匹配呢?直接叠加是否可行?本文将详细阐述如何实现两者之间的精确位置匹配。
一、数据准备
经过测试,我们发现CGCS2000坐标系(EPSG:4490)的数据无法直接与高德底图进行叠加。因此,我们需要对数据进行适当的转换处理。
1.安装插件
打开桌面iDesktopX软件在导航栏【视图】模块中选择【插件管理】功能,选择【电子地图坐标转换】功能进行安装。安装后重启iDesktopX。

安装完成后,会提示需要重启iDesktopX,重启后即可在导航栏中看到【插件】按钮。其中包含了我们安装的【电子地图坐标转换】工具

2.投影转换
单击【电子地图转换】工具,并打开该工具。选择需要转换的数据进行转换即可。
右键数据集选择【属性】,在【坐标系】中选择【重设坐标系】。导入提供的火星坐标系xml(https://download.youkuaiyun.com/download/weixin_42532695/90114342)文件,并应用到该数据即完成数据的火星坐标系转换。



3.地图保存与发布
将转换后的数据添加至地图中并配图,保存地图以及工作空间,已备发布使用。

在iServer中选择工作空间,发布为地图服务。


二、移动端加载
通过以下方式可添加高德底图
mMapView = (MapView) findViewById(R.id.mapview);
mMapControl = mMapView.getMapControl();
mMap = mMapControl.getMap(); //获取在地图控件中显示的地图对象
mMap.setWorkspace(mWorkspace); //设置当前地图所关联的工作空间
DatasourceConnectionInfo gaodedsinfo = new DatasourceConnectionInfo();
gaodedsinfo.setEngineType(EngineType.GaoDeMaps);
Datasource gaodeds = mWorkspace.getDatasources().open(gaodedsinfo);
mMapControl.getMap().getLayers().add(m_datasource.getDatasets().get(0),true);
通过以下方式可叠加rest地图
DatasourceConnectionInfo restinfo = new DatasourceConnectionInfo();
restinfo.setServer("http://localhost:8090/iserver/services/map-WorkSpace-3/rest/maps/Result_Convert%40shpaa");
restinfo.setEngineType(EngineType.Rest);
restinfo.setAlias("rest");
rest_datasource = mWorkspace.getDatasources().open(restinfo);
mMapControl.getMap().getLayers().add(rest_datasource.getDatasets().get(0),true);
mMapControl.getMap().refresh();
上述方式即可完成rest地图与高德底图的叠加
193

被折叠的 条评论
为什么被折叠?



