网站大量收购独家精品文档,联系QQ:2885784924

ArcMap切图原理.docx

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ArcMap切图原理

ArcMap切图原理(一)——AO实现(C#)工作环境系统:win7 64bit软件:ArcGIS 10.0、ArcGIS Server 10.0IDE:Microsoft Visual Studio 2010开发语言C#.Net framework 3.0ArcGIS Server for .net sdk引用类库:地图切图参数ArcGIS Server发布切片地图服务流程:准备地图文档发布地图服务设置缓存参数开始切图切图结束服务发布成功。使用ArcGIS Server发布切片地图服务时,需要确定以下参数:比例尺级别、切片原点、图像高度和宽度、DPI。下图所示为ArcGIS10.0中切片地图服务的一个缓存参数设置。切片原理ESRI使用的是二叉树索引法,将平面地图从地图左上角(切图原点)到地图右下角分成若干行列,指定比例尺下以行列号为切图图片的索引。我们需要使用到的切图参数:切图原点、图片宽高、地图范围、地图比例尺及DPI。这里DPI的左右是将比例尺换算成像素比实际距离,即为了确定每张图片实际地理范围。废话不多说,直接上实现代码。代码实现准备工作:使用arcmap准备地图文档,发布地图服务,配置切图方案,不需切图。(这一步也可代码实现,这里略过)地图服务类地图服务类提供对地图服务的访问,获取切图参数及地图文档的位置(地图文档MXD在ArcGISServer10.0中可获取,后面版本更新不可获取)连接GISServer 方法:GISServerConnectionClass gisconnection = new GISServerConnectionClass();gisconnection.Connect(host);获取MapServer服务名方法:Liststring names = new Liststring();ESRI.ArcGIS.Server.IServerObjectManager som = gisconnection.ServerObjectManager; IEnumServerObjectConfigurationInfo infos = som.GetConfigurationInfos(); infos.Reset(); IServerObjectConfigurationInfo info = infos.Next(); while (info != null) { if (info.TypeName.Equals(MapServer)) { names.Add(info.Name); } info = infos.Next(); }获取切片信息方法: IServerContext sc = gisconnection.ServerObjectManager.CreateServerContext(mapServerName, MapServer); IMapServer pMapServer = sc.ServerObject as IMapServer; ITiledMapServer tm = pMapServer as ITiledMapServer; ITileCacheInfo info = tm.GetTileCacheInfo(pMapServer.DefaultMapName);我们从ITileCacheInfo中可以获取到信息包括dpi、lod、切图原点及切图像素宽和高切片信息类从ITileCacheInfo对象中提取我们需要的信息,这里创建了一个 TileCacheInfoModel 类public class TileCacheInfoModel { #region 变à?量¢? int _dpi = 96; int[] _levels; double[] _resolutions; double[] _scale; double _originX = 0; double _originY = 0; int _tileCols = 256; int _tileRows = 256; #endregion #region 属o?性? public int Dpi { get { return _dpi; } set { _dpi = value; } } public int[] Levels { get { return _levels; } set { _levels = value; } } public double[] Resolutions { get { return _resolutions; } set { _resolutions = value; } } public double[] Scale { get { return _scale; }

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档