arcgis for flex 调用切片地图–arcgis 调用google map 续
时间:2011-05-06 来源:factar
项目中要求加入另一家公司的切片地图做底图,而数据是通过arcigs server 发布的,前端使用arcigs for flex 做展现,从而引出了底图和数据叠加的问题,由于是软件专业,对地理信息了解不多,着实费了不少力气,现在将不同的数据叠加的2个要求做如下总结:
一、 最基础的是两个数据之间的空间参考系是一样的。
博客的下面提供了arcigs 的空间参考系的基础介绍。
二、 找好切片地图的原点。
以下是具体实现步骤。
1. 通过类似加载google地图的方法将切片地图引入arcgis for flex中。详见(http://www.cnblogs.com/factar/archive/2011/03/31/2000948.html)。
2. 设置切片地图的空间坐标系为你发布的数据的空间坐标系,如我发布的北京数据用的是坐标系:
PROJCS["bj",GEOGCS["GCS_Beijing_1954",DATUM["D_Beijing_1954",SPHEROID["Krasovsky_1940",6378245.0,298.3]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]
Arcgis for flex 新建坐标系代码是:
New SpatialReference(wkid:Number, wkt:String = null)
其中wkid 是 已经定义过的坐标系id
http://help.arcgis.com/en/webapi/flex/help/index.html#/Coordinate_system_IDs/017p0000001p000000/ 在 这个地址上有介绍。
new SpatialReference(4153)
Wkt是指定义好的坐标系文本描述(well-known text of a spatial reference),只支持arcigs server10。例如我上面提到的我的北京数据用的坐标系描述。
new SpatialReference(NaN,'PROJCS["bj",GEOGCS["GCS_Beijing_1954",DATUM["D_Beijing_1954",SPHEROID["Krasovsky_1940",6378245.0,298.3]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Gauss_Kruger"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]] '));
3. 将google map的调用地址改为你需要调用的切片服务的地址。并根据自己服务的切片规则和调用地图规则修改好。
4. 设置切片地图的原点进行配准。
_tileInfo.origin=new MapPoint(230016.9860406399, 460458.49134922854);
这个point的值要设置好才能对上。
整理下实现该功能的思路。
开始时按照调用google地图的方式调用自己的切片地图服务,最先想到的是修改getTileURL方法中的调用地图服务的连接。经过一番努力,摸清规则之后,发现底图和数据匹配不上,继续跟踪空间坐标系的问题,终于解决掉。下一篇介绍如何将这个功能加入到flexviewer 中。
空间参考系-坐标系
由一组点、线和/或面以及一组规则组成的一个参考框架,用于定义点在二维或三维空间中的位置。在地球表面上使用的直角坐标系和地理坐标系是坐标系的常见示例。
在 ArcGIS 中,该术语是指用于定位空间中某个位置并且定义位置之间相互关系的参考系。坐标系使得各个数据集能够在相互之间进行地理配准。 创建新要素类或栅格数据集时,指定坐标系是初始步骤之一。 在 ArcGIS 中通常使用三个坐标系,包括地理坐标系、投影坐标系和垂直坐标系。
1.1 地理坐标系
使用经度和纬度来定义球体或椭球体表面上的点位置的参考系统。地理坐标系定义包括基准面、本初子午线和角单位。
1) 基准面: 测量系统的参考规范,通常是表面上坐标系位置(水平基准面)或者表面上方或下方的高度(垂直基准面)。又分为地心基准面和大地基准面。
地心基准面:一种基于原点位于地球质心的椭圆体的水平大地基准面。例如,世界坐标系 1984、北美洲基准面 1983 以及澳大利亚大地基准面 1994。第一个使用的是 WGS84 椭圆体;后两个使用的是 GRS80 椭圆体。 地心基准面与卫星定位系统(例如 GPS)的兼容性比区域基准面更好。
大地基准面:计算地球表面上的位置或地球表面以上或以下的高度时所依据的基准面。
2) 角单位:球体或椭球体上的测量单位,通常为度。有些地图投影参数(比如中央子午线和标准纬线)以角单位定义
3) 本初子午线:又称格林尼治子午线
1884 年经国际协议正式确定作为本初子午线的经线,即 0 度经线,其他所有经线都是基于这条经线计算得到的。 格林尼治本初子午线经过英格兰格林尼治皇家天文台。
1.2 投影坐标系
用于定义二维或三维点、线和面要素的 x、y 和 z 位置的参考系统。 投影坐标系由地理坐标系、地图投影、地图投影所需的所有参数及线性测量单位定义。
1) 地图投影:在平面上描绘地球曲面的方法。 该方法通常需要对由经线和纬线构成的地球网格进行系统的数学变换,以将其变换到平面上。 可以将某些投影看作在其中心有光源的透明球体(尽管并不是所有的投影都源于球体的中心),将经线和纬线投射到一张纸上。通常,这张纸可以铺平置于与球体相切的位置(平面投影或方位投影),也可以形成圆锥或圆柱置于球体的上方(圆柱投影和圆锥投影)。 每种地图投影都会造成距离、面积、形状、方向或其中某种组合的变化。
1.3 垂直坐标系: 用于定义相对于表面的 z 值位置的参考系统。 表面可以是重力相关表面,如大地水准面,也可以是更规则的表面,如椭球体或球体