我们只需要通过确定两个点的坐标就能确定一个范围 , 分别是点(Xmin , Ymin)和(Xmax , Ymax) , 则通过两个点获得行列的最大值和最小值 , 然后通过循环就能得到所有的瓦片 , 然后通过.NET中.NET命名空间中的类来下载每一个切片 , 并将每一个切片保存在本机上 , 代码如下:
= new ();
..Add("user-agent", "/5.0 ( NT 6.1; Win64; x64; rv:21.0) Gecko/ /21.0");
= .(, nCol, nRow, );
str2 = .((long) nCol, 0x10).();
str3 = "" + str2;
str3 = "C" + str3.(str2.);
= .(@"{0}\{1}.png", , str3);
.(, );
3、如何重新组织下载的切片
下载的切片是散乱的 , 必须通过有效的组织才能作为 的缓冲切片 , 则需要遵循 对瓦片的组织方式:
中的缓存是以文件夹结合文件名来组织和读取瓦片 , 如图:
文章插图
文章插图
文章插图
我们可以看到 , 文件夹的第一级别为 L00、L01 。。。。。 , 代表底图的级别;
文件夹的第二级别为、. 。。。。。 , 代表一个级别中 , 所有的行 , R后面的值就是上面计算出来的y值的范围 , 其中后面是通过16进制的编码;
文件夹的第三级为、 。。。。。 , 代表一行中所有的列 , C后面的值就是上面计算出来的x值的范围 , 也是16进制的编码;
例如:瓦片 它的行列号和级别分别为139、567、11 , 则它存储的位置为【L11】—【】—【】 。
4、发布 服务
使用(Xmin , Ymin)和(Xmax , Ymax)两个点做一个矩形 , 然后将该矩形发布为地图服务 , 并将地图切片 , 这样在文件夹下则生成这个地图服务的缓存文件和配置文件 , 这时候只要把上面下载好的天地图瓦片文件夹复制到相应的文件夹下 , 然后修改配置文件:
文章插图
只需要修改conf.xml和L00、L01等级别文件相互映射 。将比例尺、分辨率和地图级别对应即可 。
是如何读取瓦片并显示在相应的位置的那?
就是通过conf.xml中的地图分辨率配合图片的文件位置和编号计算出瓦片的位置 , 比如位置为 【L00//】的一个瓦片 , 然后通过L00从conf.xml中相应的 , 这个瓦片的位置为149行853列 , 瓦片为256*256像素 , 所以可以算出瓦片的经纬度 , 故显示在相应的位置 。
上面这是我的猜想 , 然后通过修改L00中一个瓦片的名称 , 发现这个瓦片的位置也就显示在不同的地方了 , 故得出上面的猜想是正确的 。
Conf.xml文件内同如下:
..5625
..78125
..-4
..725e-4
..583e-5
57044..2925e-5
63522..4063e-5
71761.71.7031e-5
8880..3644e-6
重启服务 , 完成配置过程 , 则将下载好的天地图瓦片发布为自己的地图服务:
文章插图
- Mapnik简介与安装
- 关于力破天穹的介绍 力破天穹
- 8月15日是中秋节吗 八月十五中秋节是哪一天
- 什么叫厄尔尼诺天气 厄尔尼诺天气的形成原因
- 赣州旅游景点排行榜
- 下雪天飞机能正常起飞吗
- 云办公,从不盲目跟风
- 寒食节是在哪一天
- 七天无理由退货怎么操作
- 微信聊天记录怎么直接转发给朋友