本篇就是随便写的,想到哪写到哪,不谈什么算法和源码,就是看效果,先看张图:


上面的格网(矢量图层)是采用1:25W的比例尺计算而来的


标准的比例尺总过有8种,如下:


首先我们要想要对江浙沪皖(江苏,浙江、安徽和上海四个行政区划)的矢量或影像进行切图(瓦片)操作,(本篇QGIS中的图层是矢量数据,影像同理)我们有两种切法,第一种就是按shp图层的外接矩形来算瓦片的xyz,因为通过地图缩放层级(zoom)和范围(envelope)很容易就能算出瓦片的张数,并通过瓦片的xyz去计算和渲染瓦片结果,比如,我代码中对shp数据的读取解析可以知道其范围如下:



知道范围后,我们就可以算出在16地图缩放层级下,江浙沪皖的(矢量)栅格瓦片一共有多少张了,如下:


剩下的就是基于单张瓦片的xyz换算成具体的经纬度去计算,去切图了,比如,我们以其中一个xyz瓦片为例,如下:

{"type":"Polygon","coordinates":[[[114.8730469,35.1199086],[114.8730469,35.1244016],[114.87854,35.1244016],[114.87854,35.1199086],[114.8730469,35.1199086]]]}

将这张瓦片的范围添加到QGIS中,叠加图层效果如下:


如果16缩放级别太大,看不出来瓦片和实际数据区域的"距离"效果的话,那我们就来个8级吧,重复计算,这次我们取一个落在数据区内的瓦片为例,如下:


瓦片范围:

{"type":"Polygon","coordinates":[[[118.125,29.5352296],[118.125,30.7512778],[119.53125,30.7512778],[119.53125,29.5352296],[118.125,29.5352296]]]}

添加到QGSI中,图层效果如下:


上面基于数据本身范围去计算xyz瓦片的方式有点"粗暴",甚至有点"浪费"计算资源,而下面要说的基于标准图幅切图的方式却是很"巧妙"的,比如上面我们是按照比例尺1:25w进行分幅的,可以明显看出来,这些区域其实是没有数据的,那么没有数据的格网(图幅)我们大可不必去理会(计算瓦片),如下:


上图中用黄色乱笔圈出来的图幅就是我们"无需理会"的区域,因为这些区域并没有和真实的行政区划数据有任何半毛线的关系,相反其余都是需要我们去关注的有效数据区域;通过对比我们发现,采用图幅切分法不仅会省计算资源,同时也避免了无效数据的物理存储空间的浪费,因为有可能那些没有数据的区域经过切片计算渲染后的图片还要保存在磁盘上或mongodb、或sqlite或redis中...etc

当然,如果你比例尺越小(单个图幅所表示的面积等比缩小,但是相比较地图缩放层级而言,同比例尺下的图幅面积是固定的),就意味着单个图幅的面积缩小了,自然图幅所表示的范围就变小了,范围变小了也就意味着计算得出的瓦片范围越小,瓦片越小,越能反映出和实体数据的"相交"问题,也就是越"细致",不信的话,我就再来个1:2.5W比例尺下的分幅计算结果贴上去看下效果,如下:




添加到QGIS中效果如下:


XX卫图·I50F023023图幅

从上图我们可以看出,如果按照比例尺1:2.5w的图幅去切瓦片的话,会更加的精细,比如我们拿其中一个图幅编号(除了1:100W的图幅不是10位以外,其余都是10位):I50F023023来举例,首先我们先算出这个图幅的范围是多少,如下:

{"type":"Polygon","coordinates":[[[116.75,34.0833333],[116.75,34.1666667],[116.875,34.1666667],[116.875,34.0833333],[116.75,34.0833333]]]}

叠加到QGIS中图层整体效果如下:


OK,确认了图幅范围没问题后,我们基于该图幅的范围进行不同层级下的瓦片计算,如下:


得到瓦片的数量后,其实我们就已经知道每张瓦片的xy(行列号)了,知道了xy后,瓦片的范围就知道了,瓦片的范围知道了,理所当然我们就可以拿着瓦片的范围去计算瓦片中包含了多少像元、多少要素了;像元是针对影像数据而言的,像元有波段,波段有数据,通过波段分别映射RGBA色彩值,稍加处理就可以渲染成栅格PNG了;而要素是基于矢量数据而言的,知道了要素,就可以绘制点线面了,剩下的同理是渲染成栅格PNG或矢量瓦片的PB(google protocol buffers)流了。

为了更加直观的看到不同层级下的瓦片的效果,我特意将16层级下,在图幅编号为I50F023023的范围下所计算出来的所有瓦片的范围写进了一个shp文件里,如下:


叠加到QGIS中效果如下:


剩下的就不多说了,有了上面的基础后,下面就可以嗨皮的搞切图任务了,管你是单机器单节点单线程单任务跑,还是多机器多节点集群跑亦或是单机器多线程跑,问题都是不大的,当然影像数据的波段拉伸、nodata值过滤及矢量栅格瓦片前期的样式渲染等也都是制作瓦片时需要考虑的问题,单总体来讲,还好,还好,还好?

(JAVA)全球格网图幅编号计算基于图幅进行GIS数据切瓦片的思路相关推荐

  1. java项目交友网如何实现,基于jsp的交友网站-JavaEE实现交友网站 - java项目源码

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的交友网站, 该项目可用各类java课程设计大作业中, 交友网站的系统架构分为前后台两部分, 最终实现在线上进行交友 ...

  2. c++多边形扫描线填充算法_基于3DGIS技术的梯形格网构建及其简化算法设计

    传统矢量地图LOD绘制流程包含简化.剖分与渲染三个步骤.由上述分析可知,传统矢量地图LOD绘制流程中简化与剖分是两个独立的过程,重复的剖分计算导致其渲染效率相对低下.梯形格网方法解决了传统方法中重复剖 ...

  3. 构建规则格网进行体积计算

    构建规则格网进行体积计算 1.构建规则格网 1.1生成所有格网点 2.计算体积 2.1计算凸包所包含的所有格网点 2.2插值计算凸包内格网点的高程 2.3计算体积 总体步骤: 生成凸包多边形 构建规则 ...

  4. 超详细的ArcGIS生成格网知识汇总

    1. 概述 格网是使用建立格网图层地理处理工具(ArcGIS for Desktop Standard 许可等级)和格网定义文件创建的,格网定义文件中包含了规范中的全部详情.该文件中存储了各个格网的规 ...

  5. Arcgis更换布局模板_超详细的ArcGIS生成格网知识汇总

    1. 概述 格网是使用建立格网图层地理处理工具(ArcGIS for Desktop Standard 许可等级)和格网定义文件创建的,格网定义文件中包含了规范中的全部详情.该文件中存储了各个格网的规 ...

  6. GIS空间索引(2)--格网索引与四叉树索引

    在介绍空间索引之前,先谈谈什么叫"索引".对一个数据集做"索引",是为了提高对这个数据集检索的效率.书的"目录"就是这本书内容的" ...

  7. ArcGIS制作经纬格网地图

    本博文主要针对如何通过调整属性来设置格网 创建经纬度格网 这一步↓是设置格网外界的刻度指示,不是每幅图中的必备要素,可根据要求设置. 经纬格网的外框线宽等设置 这时的格网如图示 基于创建的格网细微调整 ...

  8. Fledermaus和Surfer合作处理离散和格网数据

    最近因为涉及到巨量的点数据处理,使用了一下Fledermaus,它的能力确实出众. Fledermaus是IVS 3D公司出品的一套功能强大的交互式3维数据可视化系统.它可以帮助用户完成包括海洋(海岸 ...

  9. 基于Python实现的数据质量检查

    目录 1:应用场景 2:外部数据数据质量评估 解决方案构思一: 2.1:评估维度--"三率" 2.2:评估维度--"三性" 2.3:评估维度--"三度 ...

最新文章

  1. 漂浮机器人新进展:Cimon的头部将为国际空间站带来人工智能
  2. 分析:“AI on Hadoop”有意义吗?
  3. go语言中的方法method
  4. [Mvp.Blazor] 集成Ids4,实现统一授权认证
  5. python label显示图片_高大上的YOLOV3对象检测算法,使用python也可轻松实现
  6. Bailian4148 生理周期【枚举+中国剩余定理】
  7. JVM学习系列之对象访问的两种方式句柄和直接指针
  8. 有关DataForm组件的研究_显示多重数据模型集合——Silverlight学习笔记[24]
  9. python编写交互界面设计_第16 p,PYthon中的用户交互,Python GUI编程
  10. arm服务器虚拟x86,云服务器arm64和x86
  11. Java Excel导出(包含图片) —— Easypoi
  12. 北京发布《北京市交通出行数据开放管理办法(试行)》
  13. 自同步如果服务器删掉文件,linux服务器上ftp删掉的文件能找回
  14. 80 after generation to marry or not to marry is a question
  15. MacOS下解决宿主机和docker容器之间网络互通
  16. 基于Android Tv制作一个Tv桌面(三)
  17. 几组数据的相关性python_几的笔顺 笔画数:2 拼音:jī,jǐ 部首:几 - 智慧山
  18. 墨者靶场-SQL手工注入漏洞测试(MySQL数据库-字符型)
  19. MP3 MP5 车机 音视频解码方案设计开发
  20. db2中的时间函数(计算上年末,上月末,上季末)

热门文章

  1. Redis实战和核心原理详解(8)使用快照RDB和AOF将Redis数据持久化到硬盘中
  2. 《Python Web开发实战》踩地雷记17/3/25
  3. 浅谈linux - 描述硬件的文件设备树
  4. 职业化逻辑思维与高效率工作沟通
  5. HTML中a:link,a:visited,a:hover,a:active
  6. JAVASE-抽象类和接口
  7. 我们学校举行了计算机小组,09年主题教育
  8. 经典mysql数据库面试题_【数据库】MySQL经典面试题(练习)
  9. OpenCV NAO机器人辅助捡球丢球
  10. 自动化测试之流量回放技术