首页 / 浏览问题 / 移动GIS / 问题详情
Android坐标转换问题
45EXP 2022年04月20日

坐标转换问题,我创建获取的定位是经纬度坐标,我创建了xian1980的投影坐标,X坐标返回的是科学计数法。

PrjCoordSys prjCoordSys = new PrjCoordSys();
prjCoordSys.fromXML("  <sml:CoordinateReferenceSystem>\n" +
        "    <sml:Name>Xian_1980_GK_Zone_21</sml:Name>\n" +
        "    <sml:Type>2335</sml:Type>\n" +
        "    <sml:EPSGCode>2335</sml:EPSGCode>\n" +
        "    <sml:Units>METER</sml:Units>\n" +
        "    <sml:DistUnits>METER</sml:DistUnits>\n" +
        "    <sml:GeographicCoordinateSystem>\n" +
        "    <sml:Name>GCS_XiAn_1980</sml:Name>\n" +
        "    <sml:Type>37312</sml:Type>\n" +
        "    <sml:EPSGCode>4610</sml:EPSGCode>\n" +
        "    <sml:Units>DEGREE</sml:Units>\n" +
        "    <sml:DistUnits>METER</sml:DistUnits>\n" +
        "    <sml:HorizontalGeodeticDatum>\n" +
        "    <sml:Name>D_XiAn_1980</sml:Name>\n" +
        "    <sml:Type>39312</sml:Type>\n" +
        "    <sml:Spheroid>\n" +
        "    <sml:Name>International_1975</sml:Name>\n" +
        "    <sml:Type>40023</sml:Type>\n" +
        "    <sml:SemiMajorAxis>6378140</sml:SemiMajorAxis>\n" +
        "    <sml:InverseFlattening>298.257</sml:InverseFlattening>\n" +
        "    </sml:Spheroid>\n" +
        "    </sml:HorizontalGeodeticDatum>\n" +
        "    <sml:PrimeMeridian>\n" +
        "    <sml:Name>Greenwich</sml:Name>\n" +
        "    <sml:Type>8901</sml:Type>\n" +
        "    <sml:PrimeMeridian>0</sml:PrimeMeridian>\n" +
        "    </sml:PrimeMeridian>\n" +
        "    </sml:GeographicCoordinateSystem>\n" +
        "    <sml:MapProjection>\n" +
        "    <sml:Name>Gauss_Kruger</sml:Name>\n" +
        "    <sml:Type>43005</sml:Type>\n" +
        "    </sml:MapProjection>\n" +
        "    <sml:Parameters>\n" +
        "    <sml:FalseEasting>21500000</sml:FalseEasting>\n" +
        "    <sml:FalseNorthing>0</sml:FalseNorthing>\n" +
        "    <sml:CentralMeridian>123</sml:CentralMeridian>\n" +
        "    <sml:StandardParallel1>0</sml:StandardParallel1>\n" +
        "    <sml:StandardParallel2>0</sml:StandardParallel2>\n" +
        "    <sml:ScaleFactor>1</sml:ScaleFactor>\n" +
        "    <sml:CentralParallel>0</sml:CentralParallel>\n" +
        "    <sml:Azimuth>0</sml:Azimuth>\n" +
        "    <sml:FirstPointLongitude>0</sml:FirstPointLongitude>\n" +
        "    <sml:SecondPointLongitude>0</sml:SecondPointLongitude>\n" +
        "    <sml:RectifiedAngle>0</sml:RectifiedAngle>\n" +
        "    </sml:Parameters>\n" +
        "    </sml:CoordinateReferenceSystem>");
boolean aa = CoordSysTranslator.forward(point2ds,prjCoordSys);
if (aa){
    Log.d("978111", "X:"+point2ds.getItem(0).getX()+"   Y:"+point2ds.getItem(0).getY());
}else {
    Log.d("978111", "失败");
}

Log打印出  D/978111: X:2.1535013534609377E7   Y:4625225.743950611

Y坐标是能对应上的 但是X坐标对应不上

1个回答

您好,根据您的描述,您可以在桌面里面转换下坐标,再放到移动端打开,看看是否是数据的原因呢。

希望可以帮助到您。
3,685EXP 2022年04月20日
我的数据就是一个当前定位的坐标点,桌面哪个我没有用过呀。
您好,请您提供以下您获取到待转换定位的坐标与投影,以及要转换为坐标的名称,这边通过桌面给您转换以下看看结果呢
待转换的定位坐标 经度123.421331 纬度 41.761366 wgs84坐标  要转到XIAN80 高斯投影6度带 带号21  应用带号

您好,这边根据您提供的数据,得到以下结果

您得到的X结果只是用科学计数法表示了呢

希望可以帮助到您

怎么能让他显示正常的啊,显示科学计数法是因为他太长了吧
您可以使用BigDecimal
好的 我去搜搜试试看
这个坐标转换成高斯投影过来以后,天地图的在线影像显示是空白的,这个是什么原因。
您好,需要保持坐标系一致

Map.setDynamicProjection  这个方法能否实现,让地图正常的显示。通过动态投影,实现我定位转过来的坐标和地图对应上。

可以的,重要的是保持坐标一致
因为天地图在线影像就提供了2种 一个是经纬度一个是墨卡托的。所以只能用经纬度的进行动态投影。
...