首页 / 浏览问题 / 移动GIS / 问题详情
imobile 如何根据EPSG创建坐标系?
76EXP 2023年05月29日
因为加载了在线的天地图,地图获取的坐标系不正确,如何根据EPSG 创建坐标系(idesktop中有此功能)
问题关闭原因: 解决,天地图地址添加DPI参数等

1个回答

您好,1.请问加载了天地图后获取地图坐标系哪里不准确呢,一般天地图就是4490坐标系或者墨卡托投影坐标系的,

2.imobile可以创建坐标系,可以用GeoCoordSys地理坐标系类自定义目标地理坐标系,其中可以设置坐标系单位、大地参照系对象以及中央子午线对象等参数;还有用PrjCoordSys(GeoCoordSys geoCoordSys, Projection projection, PrjParameter prjParameter, java.lang.String name)根据指定的参数来构造一个 PrjCoordSys即投影坐标系的新对象。
3,420EXP 2023年05月30日
桌面如何转?您的意思是在桌面加载天地图,然后设置坐标系导出工作空间然后在移动端加载吗?
坐标转换可以用CoordSysTranslator投影转换类,比如要把gps获取到的经纬度信息放到墨卡托天地图上面显示,应该把经纬度赋到point2d,再用一point2ds接收point2d,再用CoordSysTranslator.convert(Point2Ds points, PrjCoordSys sourcePrjCoordSys, PrjCoordSys targetPrjCoordSys, CoordSysTransParameter coordSysTransParameter, CoordSysTransMethod coordSysTransMethod)此方法根据源投影坐标系与目标投影坐标系对坐标点串进行投影转换,结果将直接改变源坐标点串,这里的sourcePrjCoordSys可以赋值为new PrjCoordSys(PrjCoordSysType.PCS_EARTH_LONGITUDE_LATITUDE),targetPrjCoordSys则用map.getPrjCoordsys,CoordSysTransParameter一般没要求只用一实例对象就行,最后的转换方法用CoordSysTransMethod.MTH_GEOCENTRIC_TRANSLATION基于地心的三参数转换法,之后会直接改变一开始point2ds中点的值

我试了下你说的这种方法(如下),转出来的坐标还是定位到了西藏那块去了(gps位置在重庆):

val p = Point2D(point!!.x, point!!.y)
val ps = Point2Ds()
ps.add(p)
try {

    val sourcePrjCoordSys=PrjCoordSys(PrjCoordSysType.PCS_EARTH_LONGITUDE_LATITUDE)
    val targetPrjCoordSys=mMap!!.prjCoordSys
    val coordSysTransParameter=CoordSysTransParameter()
    val method=CoordSysTransMethod.MTH_GEOCENTRIC_TRANSLATION
    CoordSysTranslator.convert(ps,sourcePrjCoordSys,targetPrjCoordSys,coordSysTransParameter,method)
} catch (e: Exception) {
    Log.e("转换坐标失败!","${e.message.toString()}")

}
point.x = ps.getItem(0).x
point.y = ps.getItem(0).y
CoordSysTransMethod.MTH_GEOCENTRIC_TRANSLATION这个好像是基于地心的三参数转换法
口误,是三参数转换方法,感谢指正已纠正,另外dpi也是需要注意的,通常使用96
...