基于ArcGIS下载天地图

标签: Arcgis 分类: Gis 创建时间:2019-10-16 07:15:32 更新时间:2024-11-15 10:49:44

重要声明,这不是我写的软件!!!
重要声明,这不是我写的软件!!!
重要声明,这不是我写的软件!!!

1.概述

软件是利用ARCGIS环境下载天地图,软件环境和操作说明,查看1,2节。开发思路说明,查看第3节

2软件环境

  • 地理信息平台:arcgis10.2(ArcGISEngine10.2)
  • 系统运行环境:.net3.5

3.操作指引

3.1 下该图层

勾选表示:下载选中的地图服务;如果没勾选,则下载矢量2000地图服务、矢量2000中文标注、影像2000地图服务、影像2000中文标注、地形2000地图服务、地形2000中文标注6个图层

3.2 下载级别

从第几级开始下,如果要下载17级别,则设置为下图既可以:
级别的比例尺如下:

级别 比例尺 级别 比例尺
1 2.958293554545656E8 10 577791.7098721985
2 1.479146777272828E8 11 288895.85493609926
3 7.39573388636414E7 12 144447.92746804963
4 3.69786694318207E7 13 72223.96373402482
5 1.848933471591035E7 14 36111.98186701241
6 9244667.357955175 15 18055.990933506204
7 4622333.678977588 16 9027.995466753102
8 2311166.839488794 17 4513.997733376551
9 1155583.419744397 18 2256.998866688275

3.3 范围

左上角,右下角:手动设置矩形下载范围,中间用英文逗号隔开
空间图层:勾选空间图层:是利用shape或GDB空间面层,当做范围

3.4 缓存路径

设置保存下载的目录;一般下载后的目录机构为:D:\Cache\天地图\影像2000地图服务_alllayers\L16\R00005fee

3.5 进度

显示天地图下载的进度,如下图

3.6 下载过程

三个同时开启下载
下载后的缓存

4开发思路说明

4.1 设置级别

4.2 设置下载的范围和保存目录

4.3 根据scale(比例尺)、Resolution(实际分辨率)、(extent)下载范围获取最呆行列号

1
2
3
4
5
6
7
8
9
10
11
int startCol = (int)Math.Floor((double)(((envelope.XMin - x) + (lod.Resolution * 0.5)) / (resolution * this.TileInfo.Width)));
int startRow = (int)Math.Floor((double)(((y - envelope.YMax) + (lod.Resolution * 0.5)) / (resolution * this.TileInfo.Height)));
if (startCol < 0){
startCol = 0;
}
if (startRow < 0){
startRow = 0;
}
int endCol = (int)Math.Floor((double)(((envelope.XMax - x) - (lod.Resolution * 0.5)) / (resolution * this.TileInfo.Width)));
int endRow = (int)Math.Floor((double)(((y - envelope.YMin) - (lod.Resolution * 0.5)) / (resolution * this.TileInfo.Height)));
return new int[] { startCol, startRow, endCol, endRow };

4.4 获取天地图的下载地址

注意tilerow(行号),tilecol(列号),tilematrix(级别)

1
http://t0.tianditu.com/img_c/wmts?service=wmts&request=gettile&version=1.0.0&layer=img&format=tiles&tilematrixset=c&tilecol=3&tilerow=0&tilematrix=2

4.5 下载图片,保存到目录下:行列号是R/C+十六进制

保存结构为:目录>文件夹Layers>文件夹_alllayers>级别>行号>列号.png(目录\Layers_alllayers\L04\R000004cd\C00000695.png)

4.6 形成xml等配置文件

4.7 arcmap查看

小额赞助
本人提供免费与付费咨询服务,感谢您的支持!赞助请发邮件通知,方便公布您的善意!
**光 3.01 元
Sun 3.00 元
bibichuan 3.00 元
微信公众号
广告位
诚心邀请广大金主爸爸洽谈合作
每日一省
isNaN 和 Number.isNaN 函数的区别?

1.函数 isNaN 接收参数后,会尝试将这个参数转换为数值,任何不能被转换为数值的的值都会返回 true,因此非数字值传入也会返回 true ,会影响 NaN 的判断。

2.函数 Number.isNaN 会首先判断传入参数是否为数字,如果是数字再继续判断是否为 NaN ,不会进行数据类型的转换,这种方法对于 NaN 的判断更为准确。

每日二省
为什么0.1+0.2 ! == 0.3,如何让其相等?

一个直接的解决方法就是设置一个误差范围,通常称为“机器精度”。对JavaScript来说,这个值通常为2-52,在ES6中,提供了Number.EPSILON属性,而它的值就是2-52,只要判断0.1+0.2-0.3是否小于Number.EPSILON,如果小于,就可以判断为0.1+0.2 ===0.3。

每日三省
== 操作符的强制类型转换规则?

1.首先会判断两者类型是否**相同,**相同的话就比较两者的大小。

2.类型不相同的话,就会进行类型转换。

3.会先判断是否在对比 null 和 undefined,是的话就会返回 true。

4.判断两者类型是否为 string 和 number,是的话就会将字符串转换为 number。

5.判断其中一方是否为 boolean,是的话就会把 boolean 转为 number 再进行判断。

6.判断其中一方是否为 object 且另一方为 string、number 或者 symbol,是的话就会把 object 转为原始类型再进行判断。

每日英语
Happiness is time precipitation, smile is the lonely sad.
幸福是年华的沉淀,微笑是寂寞的悲伤。