zoukankan      html  css  js  c++  java
  • ArcGIS API For JS空间参考系的浅析

    更新与2019年03月15日

    一、概述

    我们都知道点的意义在于坐标,没在不同的坐标系下我们的代表位置不同,坐标对于地图至关重要,缺少了坐标系地图毫无意义,我们都知道坐标一般分为地理坐标系和投影坐标系,地理坐标系用(lon, lat)表示,而投影坐标系用(x,y)表示,二者一个代表球面,一个代表平面,在arcgis中我们创建map容器时可以设置指定的坐标系,通过extent指定spatialReference.wkid,也可以不指定,当我们不指定的时候,map的空坐标系会根据第一个加载到地图容器的图层的坐标系,采用第一个图层加载到图层的坐标系,这也就是为什么加载我们一般先加载静态地图,无论layer的坐标系如何,我们都加在到map中,所以必须保证map的spatialReference和layer的spatialReference一致即可,有时候会需要我们进行转换,当然也不尽然完全可以转换。由于Web墨卡托投影的广泛使用spatialReference类专门有一个方法判断坐标系是否为Web墨卡托投影→isWebMercator,返回值是布尔类型。

    二、关于坐标转换的问题

    在"esri/geometry/webMercatorUtils"命名空间下有个webMercatorUtils类用于地理坐标系和墨卡托的转换

    1、geographicToWebMercator(geometry)方法

    用于地理坐标经纬度转换为Web墨卡托投影想x,y坐标

    代码示例:

        var paths = this.getPaths(obj.coords),
            sr = this.map.spatialReference,
            line, polyline;
        //坐标为空直接返回
        if (!paths) return;
        //paths里面是一串用经纬度表示的点,属于地理坐标系
        line = new Polyline({ paths: paths, spatialReference: sr });
        //判断sr是否是为墨卡托投影
        if (sr.isWebMercator()) return;
        //表示当前map不是地理坐标系统,那我们就需要转换line了,告诉它line里面的114,30...这些点其实是          lon,lat而不是x,y,否则就飞到海里去了
        line = webMercatorUtils.geographicToWebMercator(line);
        polyline = new Graphic(line, symbolLine);
    

    2、webMercatorToGeographic(geometry, isLinear?)方法

    用于将投影坐标系转为地理坐标系。

    代码示例:

        var paths = this.getPaths(obj.coords),
            sr = this.map.spatialReference,
            line, polyline;
        //坐标为空直接返回
        if (!paths) return;
        //paths里面是一串用X,Y表示的点,属于投影坐标系
        line = new Polyline({ paths: paths, spatialReference: sr });
        //判断sr是否是为墨卡托投影
        if (!sr.isWebMercator()) return;
        //表示当前坐标系不是墨卡托投影坐标系就返回
        line = webMercatorUtils.webMercatorToGeographic(line);
        polyline = new Graphic(line, symbolLine);
    

    三、那些类会用到坐标系

    1、map,通过extent设置坐标系

    2、Geometry的子类

    四、关于map容器和Layer的坐标系问题(动态投影)

    我们在实例化地图类,如果指定投影,那么就要确保所有的图层都能使用该投影进行绘制,对于切片图层,必须要求其投影和地图投影一致;对于动态图层如果地图类指定的为投影坐标系分为以下两种情况:

    1、动态图层为投影坐标系,map为投影坐标系(也可以为地理坐标系),此时动态图层需要进行转换。

    2、动态图层为地理坐标系,map为投影坐标系(也可以为地理坐标系),此时动态图层不需要进行转换。

  • 相关阅读:
    寻找水王
    学习进度条(第十一周)
    学习进度条(第十周)
    学习进度条(第九周)
    团队项目:个人工作总结10
    团队项目:个人工作总结09
    团队项目:个人工作总结08
    深度学习之--深度置信网络DBN
    神经网络学习之----受限玻尔兹曼机RBM(代码实现)
    神经网络学习之----受限玻尔兹曼机RBM
  • 原文地址:https://www.cnblogs.com/tuboshu/p/10752327.html
Copyright © 2011-2022 走看看