什么是地图瓦片?

地图瓦片是包含了一系列比例尺、一定地图范围内的地图切片文件。地图瓦片按照金字塔结构组织,每张瓦片都可通过级别、行列号唯一标记。在平移、缩放地图时,浏览器根据金字塔规则,计算出所需的瓦片,从瓦片服务器获取并拼接。地图瓦片,是一种改善地图浏览用户体验的优化策略。

随着测绘技术的发展,地图数据的体量越来越大,一般情况下,电子地图生成地图瓦片(以下简称切图)少则需要几天,多则一个月乃至更长时间。如何才能高效地生成地图瓦片,是众多技术人员共同关心的问题。

多任务切图原理

多任务切图是将地图切图任务拆分成多个子任务,同时开启多个进程,每个进程自动领取并执行切图子任务。切图结果支持保存为本地瓦片,也支持保存到MongoDB数据库。  

多任务切图支持在一台计算机上开启多个进程执行切图任务,也支持在多个计算机分别开启多个进程,获取子任务执行切图任务。

多任务切图的优势

相对单任务切图,多任务切图能够有效缩短生成地图瓦片的时间。切图过程中,如果有闲置机器资源,可以增加进程数;反之,如果机器资源紧张,则可以减少进程数,做到最大限度地、合理有效地利用计算机资源。

经过多次、反复的测试验证,对于单台机器,建议设置的切图任务个数在2~CPU个数×2的范围进行取值,可以显著提升切图效率。

测试场景说明:China矢量地图,切图比例尺1:18055,拆分得到100个子任务,共生成1638400张256*256像素的瓦片。

多任务切图功能,既支持单个机器上切图(单机多任务),也支持多个机器协同切图(多机多任务)。经过反复多次测试验证表明,输出时瓦片存储类型不同,瓦片的存储位置不同,要有效提高切图效率,适用的切图方式也是不同的。下表1中给出了一些推荐设置。

注:图3、表1中的测试结论,均基于SuperMap iDesktop 9D SP1。

SuperMap多任务切图要点

在SuperMap桌面软件中执行多任务切图时,需要注意以下几点:

1.数据源只读:多任务切图时每个切图任务会同时访问地图中图层所在的数据源,所以数据源需要设置为只读打开,并保存工作空间。

2.切图进程数目:根据计算机的CPU个数来设置多任务切图的进程数,推荐进程数在2~CPU个数×2的范围内。

3.多机切图:执行多机多任务切图,需要确保多台机器均能连接到Host主机,并进入共享目录。 

4.共享目录:输出瓦片存储类型为原始或紧凑时,多机多任务切图需要在主机中设置一个共享目录,确保其他机器对该共享目录有读写权限,并且无密码。

SuperMap多任务切图实战

在SuperMap桌面软件中进行多任务切图的流程,如下图4所示,只需简单4步,即可完成多任务切图。注:图4流程中的进程1、进程2……进程N等多个进程执行切图任务,在计算机后台进行,无需人工参与。

我们通过对SuperMap数据产品包中的示例地图China进行单机多任务切图,来了解具体的切图步骤。

(1)新建切图任务

打开China地图,在地图选项卡制图分组中,单击多任务,在弹出的对话框中选择新建切图任务。

(2)设置切片基本参数

设置切图比例尺,块大小,瓦片名称,瓦片路径,瓦片存储类型,以及瓦片范围等基本参数。

China地图设置了标准的14级别的比例尺,在此例中,切图比例尺采用默认的地图比例尺,其他参数也使用默认值。

(3)设置多任务参数

根据上一步的参数设定,系统自动拆分完任务之后,会弹出多任务切图对话框,在对话框中,检查或设置工作空间路径、地图的名称,以及进程数等参数。

根据切图计算机的配置,设置进程参数为6并应用。

(4)执行生成

参数确认无误后,点击生成,系统后台自动执行切图任务。地图切图完成后,会弹出此次切图的用时统计,方便了解切图耗时。

SuperMap桌面产品及数据产品包下载,请点击:http://support.supermap.com.cn/DownloadCenter/ProductPlatform.aspx

五分钟学GIS | 快速生成地图瓦片秘籍的更多相关文章

  1. 五分钟学Java:如何才能学好Java Web里这么多的技术

    原创声明 本文作者:黄小斜 转载请务必在文章开头注明出处和作者. 系列文章介绍 本文是<五分钟学Java>系列文章的一篇 本系列文章主要围绕Java程序员必须掌握的核心技能,结合我个人三年 ...

  2. 五分钟学Java:如何学习Java面试必考的JVM虚拟机

    原创声明 本文首发于微信公众号[程序员黄小斜] 本文作者:黄小斜 转载请务必在文章开头注明出处和作者. 本文思维导图 为什么要学习JVM虚拟机 最近的你有没有参加Java面试呢?你有没有发现,Java ...

  3. 只需五分钟-用Maven快速搭建Spring Cloud微服务

    Maven安装手册 1.准备安装包 安装包: apache-maven-3.5.4-bin.zip  (最好JDK 1.7及以上版本) 集成包: eclipse-maven3-plugin.zip 2 ...

  4. 五分钟用Docker快速搭建Go开发环境

    挺早以前在我写过一篇用 `Docker`搭建LNMP开发环境的文章:[用Docker搭建Laravel开发环境](http://mp.weixin.qq.com/s?__biz=MzUzNTY5MzU ...

  5. 五分钟学Java:如何学习Java面试必考的网络编程

    原创声明 本文作者:黄小斜 转载请务必在文章开头注明出处和作者. 本文思维导图 简介 Java作为一门后端语言,对于网络编程的支持是必不可少的,但是,作为一个经常CRUD的Java工程师,很多时候都不 ...

  6. 五分钟学后端技术:如何学习Redis、memcache等常用缓存技术

    原创声明 本文作者:黄小斜 转载请务必在文章开头注明出处和作者. 本文思维导图 什么是缓存 计算机中的缓存 做后端开发的同学,想必对缓存都不会陌生了,平时我们可能会使用Redis,MemCache这类 ...

  7. 五分钟学Java:可变参数究竟是怎么一回事?

    在逛 programcreek 的时候,我发现了一些专注基础但不容忽视的主题.比如说:Java 的可变参数究竟是怎么一回事?像这类灵魂拷问的主题,非常值得深入地研究一下. 我以前很不重视基础,觉得不就 ...

  8. 五分钟学Java:打印Java数组最优雅的方式是什么?

    在逛 Stack Overflow 的时候,发现了一些访问量像‎安第斯山一样高的问题,比如说这个:打印 Java 数组最优雅的方式是什么?访问量足足有 220W+,想不到啊,这么简单的问题竟然有这么多 ...

  9. 五分钟学Java:一篇文章搞懂spring和springMVC

    原创声明 本文作者:黄小斜 转载请务必在文章开头注明出处和作者. 本文思维导图 什么是Spring,为什么你要学习spring? 你第一次接触spring框架是在什么时候?相信很多人和我一样,第一次了 ...

随机推荐

  1. dbvisualizer设置自动补全不显示模式名

  2. Vue证明题

    看来我需要对我的vue能力做一个证明了~~ 最近辞职了,又逢病重,找工作的时候发现对vue要求蛮高的,说会不行,还必须要有过vue的项目. 我这种半路出家的哪里来的vue的项目,公司又不是那种一线互联 ...

  3. Java数组遍历

    1.数组声明格式: 数据类型 [] 数组名 = new 数据类型[长度]: 数组长度一旦确定无法更改. 数组里的数据必须是相同类型或自动向上转型后兼容的类型 2.数组遍历 //一维数组 String ...

  4. UILabel颜色逐渐变化

    @interface UIViewController () @property (weak, nonatomic) IBOutlet UIView *backView; //空间是用storyBoa ...

  5. Java 编程技巧之数据结构

    前言: 介绍几种常见的java数据结构及应用. 使用HashSet判断主键是否存在 HashSet 实现 Set 接口,由哈希表(实际上是 HashMap )实现,但不保证 set  的迭代顺序,并允 ...

  6. 你(可能)不知道的 web api

    转自奇舞周刊 简介 作为前端er,我们的工作与web是分不开的,随着HTML5的日益壮大,浏览器自带的webapi也随着增多.本篇文章主要选取了几个有趣且有用的webapi进行介绍,分别介绍其用法.用 ...

  7. Cascade R-CNN目标检测

    成功的因素: 1.级联而非并联检测器 2.提升iou阈值训练级联检测器的同时不带来负面影响 核心思想: 区分正负样本的阈值u取值影响较大,加大iou阈值直观感受是可以增加准确率的,但是实际上不是,因为 ...

  8. MyISAM和InnoDB引擎的区别

    MySQL默认采用的是MyISAM. MyISAM不支持事务,而InnoDB支持.InnoDB的AUTOCOMMIT默认是打开的,即每条SQL语句会默认被封装成一个事务,自动提交,这样会影响速度,所以 ...

  9. 【leetcode】987. Vertical Order Traversal of a Binary Tree

    题目如下: Given a binary tree, return the vertical order traversal of its nodes values. For each node at ...

  10. 树莓派上安装boost库

    一.安装boost库 sudo apt-get install libboost-dev aptitude search boost 二.编写测试代码 #include <iostream> ...