(六)WebGIS中地图瓦片在Canvas上的拼接显示原理

简介: 文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/。 1.前言 在之前的五个章节中,我们在第一章节里介绍了WebGIS的基本框架和技术,第二章节里介绍了什么是瓦片行列号以及计算它的原因,第三章节里介绍了如何通过地理范围计算出这个范围内瓦片的行列号,第四和第五章节里介绍了在得到瓦片行列号后如何获得离线和在线地图的URL,这个章节里,我们将介绍在通过URL得到瓦片后,如何将其显示在浏览器相对应的地方,拼接出整块地图。

文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/

1.前言

在之前的五个章节中,我们在第一章节里介绍了WebGIS的基本框架和技术,第二章节里介绍了什么是瓦片行列号以及计算它的原因,第三章节里介绍了如何通过地理范围计算出这个范围内瓦片的行列号,第四和第五章节里介绍了在得到瓦片行列号后如何获得离线和在线地图的URL,这个章节里,我们将介绍在通过URL得到瓦片后,如何将其显示在浏览器相对应的地方,拼接出整块地图。

2.左上角瓦片起始点屏幕坐标的计算

在第三章节中,我介绍了对于左上角瓦片起始点屏幕坐标的换算原理和方法,这里我再次给出这个公式:

offSetX = ((realMinX- minX )/resolution);

offSetY = ((maxY - realMaxY )/resolution);

英文代表如下意思:

realMinX、realMaxY:请求的左上角瓦片对应的真实地理坐标(geoX,geoY)。

minX、maxY:屏幕可视范围的左上角对应的真实地理坐标(geoScreenX,geoScreenY)。

resolution:当前地图级别里屏幕一像素代表的实际地理单位长度。

因为可视范围里,左上角屏幕坐标为(0,0)。

所以offSetX和offSetY便为左上角瓦片的起始点屏幕坐标(offSetX,offSetY)。

这里如果大家对以上参数的换算有不了解之处,请查看此系列中的第三章节——通过地理范围换算出行列号。

3.任意瓦片屏幕坐标的计算

同样,我首先给出相关的公式:

coord.x = offSetX + ( clipX - fixedTileLeftTopNumX)* tileSize;

coord.y = offSetY + ( clipY - fixedTileLeftTopNumY)* tileSize;      

英文代表如下意思:

offSetX、offSetY:最左上角瓦片的屏幕坐标

clipX、clipY:目前瓦片的行列号

fixedTileLeftTopNumY、fixedTileLeftTopNumY:最左上角瓦片的行列号

tileSize:瓦片大小(一张瓦片的像素)

coord:目前瓦片的屏幕坐标

这里的fixedTileLeftTopNumY和fixedTileLeftTopNumY,在第三章里我同样介绍了如何获得。

4.瓦片拼接流程

         

通过流程图可以看到,瓦片的拼接需要通过遍历X轴和Y轴。依次获取瓦片屏幕坐标后拼接。这里涉及到X轴和Y轴时的遍历个数,其实就是请求到的所有瓦片,在X轴上的个数以及Y轴上的个数。同样,在第三章里我对这个个数的换算有比较详细的讲解,这里不再累述。

5.前端地图显示整体流程

          

得到的地图效果图如下:

               

6.总结

至此,WebGIS中前端地图显示系列就告一段落了。我相信大家在这个系列里,或多或少都对WebGIS有了新的认识。我们知道图像分为栅格图像和矢量图像,这里我仅仅只是介绍了栅格图像在WebGIS中的加载,那么矢量图像怎么加载呢?同样,有了这些原理知识,我们该如何设计栅格图像类,以及以后的矢量图像类等等呢?在下一个系列里,我们将开始探索WebGIS中核心类的设计。希望大家持续关注。

 

 

高中时,看别人抽烟,总觉得是为了装
大学时,室友有时候躲在阳台上抽闷烟,那时候觉得抽烟的人可能心里面有点故事
上研时,一个研友经常夜深人静里一边敲代码一边抽烟,开始觉得用抽烟来提神是可以理解的
工作到现在,看到身边的朋友抽烟,不再想着这是为了驱散苦、释放乐、缓解疲、扮深沉。抽烟只是一个简单的事情而已

                                                          -----欢迎转载,但保留版权,请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/

                                                                  如果您觉得本文确实帮助了您,可以微信扫一扫,进行小额的打赏和鼓励,谢谢 ^_^

                                    

 

目录
相关文章
|
人工智能 算法 数据管理
工业机理模型
工业机理模型
656 2
|
4月前
|
自然语言处理 监控 供应链
如何开发供应商管理系统中的外协生产板块(附架构图+流程图+代码参考)
本文详细介绍了供应商管理系统(VMS)中外协生产板块的构建与实现,涵盖功能设计、业务流程、开发技巧及优化策略。通过外协订单管理、进度跟踪、质量监控与成本控制等功能,帮助企业提升供应链管理效率,并结合实际代码示例,为开发团队提供技术参考。
|
10月前
|
Dubbo 应用服务中间件 API
使用 Apifox、Postman 测试 Dubbo 服务,Apache Dubbo OpenAPI 即将发布
Apache Dubbo 3.3.3(即将发布)实现了与 OpenAPI 的深度集成,通过与 OpenAPI 的深度集成,用户能够体验到从文档生成到接口调试、测试和优化的全流程自动化支持。不论是减少手动工作量、提升开发效率,还是支持多语言和多环境,Dubbo 3.3.3 都展现了其对开发者体验的极大关注。结合强大的 Mock 数据生成和自动化测试能力,这一版本为开发者提供了极具竞争力的服务治理解决方案。如果你正在寻找高效、易用的微服务框架,Dubbo 3.3.3 将是你不容错过的选择。
877 248
|
9月前
|
图形学
unity噪声消融效果Shader实现
在 Unity 中实现噪声消融效果,利用噪声纹理和透明度裁剪技术。噪声纹理(如 Perlin 噪声)为物体表面提供随机参考值,透明度裁剪通过设置阈值控制显示与消失。具体步骤包括引入噪声纹理、设置阈值和边缘颜色,使用自定义着色器代码实现物体部分消失的视觉效果。通过调整材质球和噪声贴图,可优化最终呈现。
|
11月前
体育赛事直播系统怎么开发(足球篮球电竞)
一、通过购买现成源码(如“熊猫比分”)并进行二次开发,是一种快速启动体育直播项目的方式,适合需求变动不大、预算有限的情况。但需注意,大规模改动可能增加工作量和潜在错误。 二、全新定制开发体育直播系统,虽成本高、周期长(约2周),但能完全根据客户需求设计,提供更高的灵活性和定制化程度。开发前需详细规划功能与界面布局,确保最终产品符合预期。
体育赛事直播系统怎么开发(足球篮球电竞)
|
11月前
|
缓存 网络协议 算法
从零开始掌握HTTP协议
本文介绍HTTP协议的演变,从HTTP1.0到HTTP2.0。HTTP1.0为无状态连接,每次请求独立;HTTP1.1引入持久连接、管道化请求和更多状态码;HTTP2.0采用二进制分帧、多路复用、头部压缩及服务器主动推送,大幅提升性能与用户体验。了解这些区别有助于开发者优化应用和服务。
|
11月前
|
算法 网络协议 Python
探秘Win11共享文件夹之Python网络通信算法实现
本文探讨了Win11共享文件夹背后的网络通信算法,重点介绍基于TCP的文件传输机制,并提供Python代码示例。Win11共享文件夹利用SMB协议实现局域网内的文件共享,通过TCP协议确保文件传输的完整性和可靠性。服务器端监听客户端连接请求,接收文件请求并分块发送文件内容;客户端则连接服务器、接收数据并保存为本地文件。文中通过Python代码详细展示了这一过程,帮助读者理解并优化文件共享系统。
|
安全 搜索推荐 机器人
纳米技术与医疗:纳米机器人的临床应用前景
【9月更文挑战第28天】纳米机器人作为纳米技术在医疗领域的重要应用,正逐步改变着传统医疗的面貌。它们在药物输送、癌症治疗、手术辅助和疾病诊断等方面展现出广阔的应用前景。随着科学技术的不断进步和纳米技术的不断成熟,我们有理由相信,纳米机器人将成为医疗领域的一个重要且不可或缺的组成部分,为人类的健康事业做出更大的贡献。同时,我们也应关注纳米技术的安全性和可靠性问题,确保其在医疗应用中的安全和有效。
1112 1
|
弹性计算 缓存 开发框架
企业用户如何选择云服务器?2024年阿里云企业级服务器价格配置表整理汇总
企业在选择云服务器之前,快速云提醒要留意好以下几个要点: 1、CPU:如果网站访问流量较大,动态页面比较多,建议选择2核以上的CPU。 2、内存:内存越大,则可用缓存越大,打开速度越快,建议选择1G以上的内存。 3、硬盘:硬盘的大小要根据网站的大小来决定,在选择时应该考虑留一部分的剩余空间。 4、带宽:带宽越大,访问速度越快,支持访问人数也就越多,网站应用这类型的网站,至少要2M以上的带宽。 5、操作系统:在选择操作系统时,对哪种操作系统比较了解就选择哪种操作系统,windows系统对asp程序支持较好,不过占用内存较多;而Linux系统对php程序支持较好,更省内存。
738 2
|
安全 Windows
Windows 无法连接打印机,请检查打印机名并重试。如果这是网络打印机,请确保打印机已打开,并且打印机地址正确。报错代码:0x00000709
Windows 无法连接打印机,请检查打印机名并重试。如果这是网络打印机,请确保打印机已打开,并且打印机地址正确。报错代码:0x00000709
Windows 无法连接打印机,请检查打印机名并重试。如果这是网络打印机,请确保打印机已打开,并且打印机地址正确。报错代码:0x00000709