1.没有豆浆机怎么办?

喝豆浆是我们早晨中基本必备的一环,油条豆浆,其乐融融。如果我问大家豆浆是怎么来的,五谷不分的人会说是用钱买的,了解有黄豆这会事的人会说是用豆浆机把黄豆磨出来的。如果我们再倒退十几年,我相信见到过挑着担子卖豆浆的人就会给出一个更详细的答案了,先用水侵泡黄豆一夜,然后在器皿中充分捣碎,再用中火一直煮,并且要不断搅拌,直至浮沫消失,豆浆才做成了。

听到这个答案,很多人就会惊讶了,这么麻烦啊,还是有豆浆机方便。现在我提出一个问题,如果停电了,如果豆浆机坏了,如果你没有钱去买豆浆机,你还能自己做出豆浆吗?难道你就只能去买别人的豆浆喝?

2.如果没有二次开发包,怎么办?

如果我把已经有的地图数据比作黄豆,我问大家一个问题,如果我们的项目由于经费问题,不提供正版的Runtime,也不提供AGS的地形图服务,那我们该如何让浏览器来显示地形图呢?当然,有的人会指出一整套开源的方案,比如我用Geoserver啊等等。

那如果我再问你,假如有一天我们碰到了一个奇怪的业主,它跟你说,我们只想地图在第级别显示,我们只想地图显示某一区域,我们的要素太多太多了,我们希望能在地图拖动的时候动态的将可视范围内的要素加载上来,等等等等问题。如果你是一个只知道用豆浆机的人,你该如何完成这些刁钻的问题?

二次开发做到一定程度的人,也不会只局限在,C/S时加载MXD出个地图,B/S时写入一个地形图服务URL出个图的。他同样也必须了解,到底是如何将服务端一个一个瓦片变成浏览器里看到的一张完整的地图的。

这里我将连续花上几个篇幅来一一回答这个问题。

3.地图比例尺中的Scale和Resolution

前面我不厌其烦的给大家说了很多本节的题外话,现在言归正传,我们开始这个系列中的第一个问题,地图比例尺换算原理。想要从底层实现瓦片的显示,我们首先必须了解瓦片本身。

我们用arcgis切完图后,打开发布的服务或者打开config.xml配置文件,可以看到所切之图的相关配置。如图所示:

其中levels即为所切图的比例尺参数。每一层Level包含了一个resolution参数和一个scale参数。

Scale表示的是比例尺,即地图上的一厘米代表着实际上的多少厘米。例如地图上1厘米代表实地距离500千米,可写成:1 ∶ 50,000,000或写成:1/50,000,000。

Resolution表示的是分辨率。Resolution 的实际含义代表当前地图范围内,1像素代表多少地图单位(X地图单位/像素),地图单位取决于数据本身的空间参考。可见Resolution跟 dpi有关系(dpi代表每英寸的像素数),跟地图的单位也有关系。

4.行列号——瓦片存放地址的标识

在这里给大家再介绍一个GIS里的术语——行列号。我么可以这么想象,把一张矩形的地图,按照一定的规律(按照切图原点,切图范围,瓦片大小),分成了很多个大小相同的矩形,那么这个矩形所在位置,我么基本上是可以用Row和Col来表示出来。当然,如果我们了解影像金字塔这个概念,那么前面还要加上一个Level(影像级别),说通俗点就是你目前切割的这个矩形是属于整个影像中的哪一层的。

这里,我们先看看切完地图后,瓦片的存放路径,我以离散型瓦片(Exploded)为例:

这里的L06表示的是瓦片所在地图的级别,R00001179d表示的瓦片的行号,C0000a24e为瓦片的列号。这些数字是怎么算出来的,容我留着在后面的几章给大家一一来讲解。

不过这里我可以负责任的告诉大家,如果想知道行列号怎么换算,那么下面这个问题你必须知道答案。

屏幕上1像素代表实际距离是多少?

5.屏幕上1像素代表的实际距离是多少?

在计算瓦片的行列号之前,我们需要得到图上一像素代表实际距离多少米。现在假设地图的坐标单位是米,dpi为96 ;    1英寸=2.54厘米;     1英寸=96像素;     最终换算的单位是米;     如果当前地图比例尺为1:125000000,则代表图上1米等于实地125000000米;     米和像素间的换算公式:     1英寸=0.0254米=96像素     1像素=0.0254/96 米     则根据1:125000000比例尺,图上1像素代表实地距离是 125000000*0.0254/96 = 33072.9166666667米。

6.平面坐标系和经纬度坐标系中的比例尺

6.1平面坐标系中的比例尺

当数据库为平面坐标系统时,此时系统中所需的比例尺应该从scale中取得。因为原scale中表示的实际单位是厘米,而我们系统中需要的单位是米,所以在填写地图比例尺时,会将scale除以一百后再填写。更具第二节中描写,我们可以在系统中换算出1像素代表了多少米。

6.2经纬度坐标系中的比例尺

当数据库为经纬度坐标系统时,此时系统中所需的比例尺应该从resolution中取得。此时的resolution直接代表了地图上一像素等于实际中的多少度。

但是,因为代码中已经有了一个如第二节中所描述的一个转换算法,所以此时在填写数据库中比例尺时,需要将此算法逆向换算后再填入。

即:resolution*96/inch2centimeter

7.英寸转厘米所引发的问题

英寸转厘米的国际参数是:2.5399998,当利用天地图或者其他第三方非AGS切图的地图时,都可使用这个参数值。

但是,当用AGS所切之图时,此参数变成了:2.54000508001016。这可能是AGS自己内部定义的一个转换参数。

根据参数的不同,当我们换算经纬度坐标系下的比例尺时,要根据不同的参数来进行转换。当是AGS地图时,则为:resolution*96/2.54000508001016。

8.总结

在了解屏幕上1像素代表实际距离多少是怎么算出来之后,我们可以进入下一章节了——根据地理范围换算出瓦片行列号的原理。

敬请大家持续关注,我将争取每一到两周做一次更新,如果工作繁忙,可能更新时间还会延后。这一系列我将大致写出20到25篇文章,其中涉及到原理,设计,实现方面的知识,其中可能有很多不对的地方,原谅我是一个在GIS领域只走了小小的一步的新人,原谅我资质的愚笨,容我冒昧的总结前人的成果,结合我的所思所想,和大家一起分享。

转自:http://www.cnblogs.com/naaoveGIS/category/600559.html

从底层谈webgis原理设计与实现(二)探究本质,WebGIS前端地图显示之地图比例尺换算原理...相关推荐

  1. webGIS学习(二)探究本质,WebGIS前端地图显示之地图比例尺换算原理 发布于 3 年前 作者 lzxue 7473 次浏览 来自 技术 1.没有豆浆机怎么办? 喝豆浆是我们早晨中基本

    1.没有豆浆机怎么办? 喝豆浆是我们早晨中基本必备的一环,油条豆浆,其乐融融.如果我问大家豆浆是怎么来的,五谷不分的人会说是用钱买的,了解有黄豆这会事的人会说是用豆浆机把黄豆磨出来的.如果我们再倒退十 ...

  2. 从底层谈webgis原理设计与实现(九)WebGIS中的矢量查询(针对AGS和GeoServer)

    1.前言 在第七章里我们知道了WebGIS中要素的本质是UIComponent,而矢量图层的本质是包含了n(n>=0)个UIComponent的Canvas.我们在UIComponent的gra ...

  3. (三)WebGIS前端地图显示之根据地理范围换算出瓦片行列号的原理(核心)

    https://www.cnblogs.com/naaoveGIS/p/3899821.html (三)WebGIS前端地图显示之根据地理范围换算出瓦片行列号的原理(核心) 文章版权由作者李晓晖和博客 ...

  4. 浅谈WEBGIS运用栅格地图实现原理[更新:Google Maps带来的新型WebGIS设计模式]

    为什么要取这样的一个题目呢?主要是因为今天去了一家公司和他们谈了谈,本来是指望做兼职的,谈到最后当然是不成了.去谈的是地图制作(可兼职)一职,要求是地图制图经验,最后加了个有WEBGIS开发经验.本来 ...

  5. 深入浅谈,CPU设计原理

    首先,声明这是一篇转载文,这篇文章是,从卡饭论坛 看到的一篇文章<深入浅谈,CPU设计原理>,是一篇连载,文章,卡饭论坛,是我高中的时候,经常去的论坛,里面有很多好的文章,推荐给大家.也许 ...

  6. 计算机文字输入原理,也谈计算机汉字键盘设计“三原理”

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 也谈计算机汉字键盘设计"三原理" (2019-11-23 16:33:53)[编辑][删除]转载▼ 标签: 教育 文化 杂谈 it 军 ...

  7. 简谈基于fpga设计9/7小波变换原理

    简谈基于fpga设计9/7小波变换原理 9/7小波变换包括行变换,列变换. 其中行变换包括第一步行变换,第一步行更新,第二步行变换,第二步行更新. 列变换包括第一步列变换,第一步列更新,第二步列变换, ...

  8. 嵌入式软件开发工程师谈软件架构的设计

    嵌入式软件开发工程师谈软件架构的设计 注:此处嵌入式特指基于linux平台,单片机和其他rtos不在讨论范围 笔者从事嵌入式软件开发有6,7个年头,bsp,驱动,应用软件,android hall,f ...

  9. 电源布线工程师谈电源PCB设计

    电源布线工程师谈电源PCB设计 一般PCB基本设计流程如下:前期准备->PCB结构设计->PCB布局->布线->布线优化和丝印->网络和DRC检查和结构检查->制版 ...

  10. 浅谈jQuery Mobile设计思想

    来自51CTO技术社区:http://mobile.51cto.com/others-288591.htm jQuery Mobile设计思想是本文要介绍的内容,主要是来了解jQuery Mobile ...

最新文章

  1. 错误名称:EntityCommandExecutionException
  2. 【 MATLAB 】【 MATLAB 】DFT的性质讨论(三)序列的循环卷积及其 MATLAB 实现
  3. VC++ 串行化编程实例
  4. php excel文件导出之二 图像导出
  5. 通俗易懂!白话朴素贝叶斯
  6. 使用百度地图API制作线路轨迹播放
  7. 聊聊flink的FencedAkkaInvocationHandler
  8. php组成,php接口有几部分组成?
  9. 命令行窗口常用的一些小技巧
  10. Kafka:集群部署
  11. c语言逃跑的蠕虫函数,源码指标:穿越5线 第一时间吃鱼身 上行末端逃跑 没有未来函数 通达信幅图 精品公式...
  12. java中路由的使用方法_java – 在camel路由中使用方法作为生产者
  13. 常见Linux发行版的异同
  14. Thread 线程基础之-线程池ThreadPool一
  15. java开发工程师简历模板
  16. Xshell6 plus绿色永久版_SSH连接工具_站长必备工具集
  17. 制造业MES系统数字化转型
  18. Kerberos异常之unnable to obtain password from user
  19. 重新学习Python的第二天_列表及字符串的学习与练习
  20. 苹果开发者账号注册错误:关联的Apple ID国家/地区并不匹配

热门文章

  1. 什么是免备案虚拟主机?阿里云国际版云服务器给你答案
  2. Centos-Wake On Lan远程唤醒服务器
  3. 苏宁小店上线社区拼购,物流供应链是其有力竞争武器
  4. wps启用编辑按钮在哪里_WPS文字打印设置
  5. ACE认证考试—阿里云产品概念深化学习
  6. 面试时会问到的项目中的问题总汇
  7. html ckplayer.swf,Flash基础入门之ckplayer.js视频播放插件
  8. ckPlayer播放器嵌入页面时报错CKobject is not defined解决方案
  9. 索引导致大量写入数据时效率低下
  10. 吉林大学计算机数据中心排名,2018年度中国医院排行榜发布,吉大一院跻身50强!...