首页 / 浏览问题 / 移动GIS / 问题详情
imobile 投影转换之后的图形面积变大
76EXP 2024年04月10日

各位大佬,我在使用如下方法进行投影转换(4523坐标转天地图墨卡托影像所对应的坐标系)之后得到的geometry的面积增大了许多(4700变成6300),是将shp(只有一个面)中的数据读取出来后按照如下方法进行投影转换后得到的面积增大了1000+,但是在地图上面并没有变形之类的,请问是为什么呢?该如何解决?

CoordSysTranslator.convert(
    _points,
    sourcePrjCoordSys,
    tagPrjCoordSys,
    CoordSysTransParameter(),
    CoordSysTransMethod.MTH_GEOCENTRIC_TRANSLATION
)

1个回答

您好,计算面积使用的是什么方法呢,推荐使用Geometrist.computeGeodesicArea(Geometry geometry, PrjCoordSys prjCoordSys) 计算经纬度面积,该方法计算的是真实世界中对应的面积
3,470EXP 2024年04月11日

面积是直接取得georegion里面的area,是将原始shp(EPSGCode为4523)中的数据读取出来后然后将坐标点串通过

CoordSysTranslator.convert方法进行投影转换后绘制到trackinglayer上计算线段的长度和面的面积都有较大的偏差,
sourcePrjCoordSys为EPSGCode=4523的坐标系,
tagPrjCoordSys是http://t0.tianditu.gov.cn/img_w/wmts?DPI=96这个服务所对应的坐标系(应该是3857的)
GeoRegion是存储面对象的,仅有坐标数字值,没有单位。单位来自与数据集DatasetVector。如果数据集单位是度,那么面积就是平方度,如果数据集单位是米,那就是平方米。

1、如果数据集单位是米,那么通过GeoRegion的getArea() 接口得到的面积就是平方米。

2、如果数据集单位是度,那么可以通过Geometrist.computeGeodesicArea(Geometry geometry, PrjCoordSys prjCoordSys) 接口来计算GeoRegion 的面积,得到的单位为平方米,传入投影坐标系对象prjCoordSys。
...