ArcGIS for Android 10.2.9(7):坐标转化

本文介绍了GIS应用中常见的坐标转换问题,特别是WGS84坐标与其他坐标系如北京54坐标系之间的转换方法。通过GeometryEngine类提供的project方法,详细解释了如何实现不同坐标系间的矢量对象(点、线、面)转换。

在我们的GIS应用项目里,常常遇见坐标转换的问题。最常见的就是WGS84坐标转其他坐标系,原因是WGS84坐标系是目前GPS数据采集所用的坐标系,而我国实际生产项目里常用的地图却是北京54坐标系,西安80坐标系以及中国大地2000坐标系等。所以当我们用设备采集到GPS经纬度以后,需要将其进行坐标转换才可以正确显示到我们使用的地图上。

坐标转化api:

GeometryEngine类的方法:
public static Geometry project (Geometry geometry, SpatialReference inputSR,
    SpatialReference outputSR)

这个方法里三个参数分别是需要转换矢量对象(点、线、面),输入对象的空间参考坐标系,输出对象的空间参考坐标系。最后得到一个转换后的矢量对象。

比如:

将84坐标转换为墨卡托坐标代码:

 Point point1 = new Point(113, 23);
        Point point2 = (Point) GeometryEngine.project(point1, SpatialReference.create(SpatialReference.WKID_WGS84),
                SpatialReference.create(SpatialReference.WKID_WGS84_WEB_MERCATOR));

将一个点从WGS84坐标系转换为MapView上加载图层的坐标系:

   Point point3=(Point) GeometryEngine.project(point1, SpatialReference.create(4326),mMapView.getSpatialReference());

常用转化:


        //1. 屏幕坐标转换成投影坐标
        mMapView.setOnSingleTapListener(new OnSingleTapListener() {
            @Override
            public void onSingleTap(float v, float v1) {
                Point point = mMapView.toMapPoint(v, v1);
            }
        });


        //2.投影坐标转换成屏幕坐标
        Point point = mMapView.toScreenPoint(new Point(113, 23));


        //3.投影坐标转换成经纬度
        mMapView.setOnSingleTapListener(new OnSingleTapListener() {
            @Override
            public void onSingleTap(float v, float v1) {
                Point clickPoint = mMapView.toMapPoint(v, v1);
                Point wgsPoint = (Point) GeometryEngine.project(clickPoint, mMapView.getSpatialReference(),
                        SpatialReference.create(4326));
            }
        });

        //4.经纬度转换成投影坐标
        Point wgsPoint = null;
        Point mapPoint = (Point) GeometryEngine.project(wgsPoint, SpatialReference.create(4326),
                mMapView.getSpatialReference());

SpatialReference:
指的ArcGIS里的地理坐标系对象

其中通过WKID来建立地理坐标系对象是最常见的,WKID,全称是Well Known ID,即ArcGIS对众多的空间坐标系进行的编号。只要我们知道空间参考坐标系所对应的编号,就可以通过这个编号获取到该控件参考坐标系。比如上个例子用到的SpatialReference.create(4326),4326对应的是WGS84坐标系,所以SpatialReference.create(4326)就是WGS84地理坐标系对象了。

 //这两个是一样的,4326就是84坐标
  SpatialReference spatialReference = SpatialReference.create(4326);
  SpatialReference spatialReference1 = SpatialReference.create(SpatialReference.WKID_WGS84);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值