# 瓦片裁剪

构建地图瓦片前,综合考虑该瓦片的使用场景及可用的资源非常重要。

创建大型的地图瓦片往往需要大量的时间和资源。如果条件允许,可以有针对性的就较小的地图区域进行瓦片裁剪测试,或者创建几个较低级别的瓦片地图,以确保生成的瓦片图像能够达到预期的效果。

在本节中,我们将首先介绍如何规划地图瓦片,瓦片相关的参数的作用及意义,再详细说明瓦片裁剪的操作过程。

# 规划地图瓦片

为地图瓦片所设置的裁剪属性可大大影响瓦片创建和使用的成功几率。开始创建瓦片后,有些选项(如切片宽度和高度)不可更改,除非删除现有瓦片数据,重新创建。因此,提前规划切片方案和其他属性至关重要。

可以简单的将规划瓦片裁剪的过程分为三部分:

一、制定切片方案

切片方案包括瓦片的比例级别、切片尺寸和切片原点。

这些属性定义了边界的存在位置,多瓦片叠加时这些参数十分重要。例如,我们可能要和Google地图、Bing地图做叠加,那么裁剪的瓦片需要和这些web地图的分级比例、切片原点等参数保持一致。

  • 【图片格式】:决定创建切片时的输出格式。图像格式确定了切片在磁盘上的大小、图像质量及透明度。在MapGIS平台中支持的图像格式类型有:*.png、*.gif、*.jpeg、*.png32、*.gif、*.webp。

提示:

*.png格式使用8位颜色,只支持简单的二值透明,即某些部分完全透明,而其余部分完全不透明。若地图调整了图层透明度且需要裁剪出来的瓦片具有该透明特性,则需选择*.png32或者*.webp格式的图片。

  • PNG32:使用32位颜色的PNG图片格式,具有8位的透明度通道,既可以展示高质量的图像,又支持复杂的透明效果。

  • WebP:由谷歌在2010年发布的一种用于Web端支持有损和无损压缩的图片格式,并且支持图片透明度。WebP能达到和JPEG、PNG相同的图片质量,同时体积更小,在web端的浏览更流畅清晰。

  • 【切片高宽】:切片的宽度和高度提供256 或 512两类。如果要构建的瓦片将叠加另一瓦片地图,应确保对两个瓦片均使用相同的切片宽度和高度。选择较小的切片宽度和高度可提高请求切片的应用程序的性能,因为需要传输的数据较少。

  • 【分辨率】:DPI,是指生成的切片的分辨率。默认值 96 dpi。当用户最终是在大屏中显示栅格瓦片时,96dpi栅格瓦片可能会出现不清晰的效果,此时就可适当增加分辨率,如300dpi。增大分辨率必然会对瓦片裁剪及瓦片显示效率造成影响,因此请慎用!

  • 【大图大小】:通过瓦片裁剪后,生成的最大图片的尺寸,包括1024、2048、4096三个可选值。大图尺寸越大,裁剪速率越高,但对裁剪服务器的配置要求越高。

提示:

1、瓦片裁剪时是先按照大图的尺寸生成栅格瓦片,再将大图按照切片高宽裁剪为一张张瓦片。大图可以有效减少地图显示的次数,因此当矢量地图显示较慢时,大图可以极大的提升裁剪效率。

2、大图为4096时表示一张4096*4096像素的瓦片。一般情况下,客户机内存大于8G时即可满足该要求。

(1)比例级别

创建切片方案时,采用哪些地图比例创建切片是最为重要的选择。

不同的比例级别表现为地图瓦片的细节层次。例如1:200,000的比例尺可以看到省级道路;1:100,000的比例尺不光观察到省级道路,还可观察到市区道路;1:20,000比例尺可以表现出道路周边的商铺信息。

瓦片的比例尺设置的合理性取决于地图数据的设计以及瓦片的使用目的。如果瓦片数据需要与其它瓦片相叠加,那么这些瓦片所使用的比例尺方案应该尽量保持一致;如果地图数据设计时已经规划好在哪些比例尺下显示的细节内容,那么瓦片的比例尺设置可以依据那些比例尺来规划。

(2)切片原点(地图单位)

切片方案原点是指切片方案格网的左上角。切片原点不一定代表创建瓦片的起始点。使用公用切片方案原点可以确保它们能够相互叠加与合并。

二、规划图层数据可见性

地图是由多个图层组成,每一个图层所显示的地理信息粗细粒度不一。在逐渐放大地图的过程中,国家、省、市、县、区、街道等详细信息逐级显示出来。这些因比例不同而发生的变化有助于地图以有序方式传达更详细的信息。

如何使得瓦片数据同样有序显示,除了制作瓦片的地图数据本身所控制的显示比外,还可以通过设置地图图层的起始、终止裁剪级别加以控制。

三、裁剪参数

(1)瓦片裁剪范围

  • 地图的全图范围:即地图范围,该选项缓存地图中所有数据的整个边界框。这是默认选项。

  • 自定义范围:即自填范围,您可以通过输入Xmin、Xmax、Ymin、Ymax的值来确定要进行瓦片裁剪的区域范围。

(2)瓦片裁剪级别

在瓦片裁剪中,通过了两种方式供用户选择:"按级数的起始范围全部裁剪"和""按指定级数的起始行进行裁剪"。用户需要综合考虑参与裁剪的地图数据的数据量大小,以及裁剪级别的高低,来选择不同的裁剪方式。

一般而言,“按级数的起始范围全部裁剪”方式适用于级数较低、数据量较小的裁剪,一次能够完成多个级别数据的裁剪;“指定级数的起始行裁剪”适用于级数高、数据量较大的裁剪,但是每次只能完成指定的一个级别的瓦片裁剪。

# 创建地图瓦片

# 功能说明

瓦片裁剪工具可将矢量地图按照一定的裁剪策略,生成栅格瓦片数据。栅格瓦片是矢量地图的显示快照,以GIF、JPG、PNG等形式存储的。栅格瓦片显示效率优于矢量地图。

同时,当用户在瓦片裁剪过程中取消操作,或遇到断电、程序死机等极端情况时,可通过瓦片裁剪工具进行瓦片续裁。

# 操作说明

提示:

在做瓦片数据的时候请先配置好待裁剪地图数据,且保证裁剪地图有正确的空间参照系,可与裁剪比例尺相对应。

1. 启动"工具"面板->"瓦片裁剪"功能,弹出如下所示对话框:

2. 选择裁剪策略。目前系统支持如下三种裁剪策略:

  • 【自定义】:可以根据需求手动输入裁剪级别及比例尺信息,最大级数可到30级。
  • 【经纬度】:目前Web地图常用的一种裁图模式。要求地图的空间参照系必须为地理坐标系,否则无法使用此裁剪策略。经纬度裁剪方式时,世界地图在第1级被裁剪为2张256*256的图片,第2级被裁剪为8张256*256的图片,后面的级别依次类推。

具体比例尺方案如下:

  • 【球面墨卡托】:目前Web地图常用的一种裁图模式。要求地图的空间参照系必须为Web墨卡托投影,否则无法使用此裁剪策略。球面墨卡托裁剪方式时,世界地图在第1级被裁剪为1张256*256的图片,第2级被裁剪为4张256*256的图片,后面的级别依次类推。

具体比例尺方案如下:

3. 若用户采用“自定义”策略时,需设置如下参数:

  • 【原点坐标】:设置裁剪地图文档时,第一个裁剪网格的原点。用户可以在“原点坐标”栏中,输入裁剪网格的左上角的XY值,来确定原点坐标。默认原点为(0,0);

  • 【图片参数】:设置生成的瓦片结果图片的格式、大小、高宽等信息。更详细说明可参考"规划地图瓦片"章节;

  • 【比例尺信息】:在“比例尺信息”栏中,用户可以设置瓦片裁剪级数和对应的比例尺;

    • 添加:可以添加瓦片级数,同时系统会以上一级比例尺的2倍的比例计算出新比例尺。同时,用户在比例尺栏中点击比例尺,也可以手动输入新的比例尺;
    • 删除:可以删除选中的瓦片级数;
    • 默认:会弹出“级数个数设置”对话框,用户可以设置第一级比例尺及级数个数,系统会自动按照2倍关系计算比例尺。如下图所示:

提示:

与栅格金字塔中的金字塔层类似,瓦片级数的第1级对应的比例尺最小,表示的地理范围最大,级数增加,对应的比例尺必须大于上一级设置的比例尺,否则裁剪中会报错。

  • 【高级】:点击“高级”按钮,弹出“其他信息”对话框(如下图所示),用户可以设置裁剪网格的背景色、图片的压缩比(压缩比越大,瓦片损失的数据越少),以及瓦片的一些其他信息。

    • 透明色:当输出背景透明图片格式(*.PNG、透明*.GIF)时,若数据中有图元颜色与此颜色相同,则在结果瓦片中该部分图元会被透明处理,不予绘制;
    • Jpg图片压缩比:输出图片为*.JPG时,可以设置图片压缩比。压缩比越小,结果瓦片数据量越小,但瓦片质量损失越大。
    • GIF是否透明:勾选时,裁剪*.GIF数据背景透明;反之,背景不透明。
    • 是否高质量生成图片:勾选时,裁剪数据采用高质量绘制;反之,采用低质量绘制,折线可能会出现类似锯齿状的边界。采用高质量绘制时,会降低裁剪效率。

  • 【导入】:导入已有的裁剪策略文件。裁剪策略文件可以是已保存的xml文件,也可以是读取*.mut/*.tdf/MongoDB格式的瓦片数据中信息。

  • 【保存】:保存当前的裁剪策略信息。下次启动"瓦片裁剪"时,"自定义"方式默认采用此裁剪策略信息。

  • 【另存】:将当前的分级文件保存成xml文件,供用户在其他的瓦片裁剪中,快速应用裁剪策略信息。

3. 点击“下一步”进入“图层信息”设置。在“瓦片裁剪”向导的“图层信息”页面上,设置所选中的地图文档中图层瓦片裁剪对应的起始级数和终止级数;

“图层信息”页上的配置说明如下:

(1)选择地图

  • 【选择地图】:在下拉框中选择要进行瓦片裁剪的地图文档。地图文档中所包含的图层将在图层设置列表中列出;

点击“设置地图左上角”后的【为原点坐标】按钮,可以设置地图范围的左上角坐标为裁剪格网的原点值。

(2)预览

“指定级别”栏,确定选择需要预览的级数,点击“预览”,弹出“瓦片浏览器”窗口。可参考”瓦片输出”设置中的“预览”。

(3)图层设置

在“图层设置”栏中,设置每个图层的在裁图中的限制级数。可以选择地图文档中包含的每个图层的裁剪起始和终止级数,在瓦片的裁剪中,系统会在每个图层的对应的限制级数中进行裁剪。

另外,用户可以点击“将图层裁剪级别”后的【同步到图层】按钮,若点击该按钮,则图层的显示比率范围将根据用户设置的“起始级数”、“终止级数”发生改变,其中,“最小显示比率”根据“起始级数”对应的比例尺得到,“最大显示比率”根据“终止级数”对应的比例尺得到。

4. 点击“下一步”进入“瓦片输出”设置。在瓦片裁剪向导的“瓦片输出”页面上,用户可设置裁剪结构的输出路径、裁剪的地图范围、裁剪方式等设置,并预览裁剪结果。

在“瓦片输出”页面上的具体设置参考如下:

(1)在“瓦片储存路径”栏中,设置瓦片存储路径。目前系统可支持如下三种存储方式:

  • 【本地文件】:本地瓦片格式包括*.mut、*.tdf、*.mbtiles三种格式。其中MapGIS新增的MUT(MapGIS Universal Tiles)瓦片格式。意为MapGIS的跨平台通用型瓦片存储。这种瓦片格式不依赖瓦片服务,轻量、易迁移和部署,具备跨平台特性,可以跨Windows、Linux、桌面端、服务器端、移动端使用。

  • 【MongoDB】:将结果栅格瓦片存储在MongoDB数据库中。

    • IP地址:MongoDB数据库所在的客户机IP地址;
    • 端口号:MongoDB数据库端口号,默认为27017。其中,MapGIS Datastore创建的MongoDB数据库默认端口号为30001;
    • 数据库名:MongoDB数据库名称;
    • 集合名:结果栅格瓦片的存储集合名称,用户可自定义,但不能与MongoDB中已有的集合重名;
    • 用户名/密码:若MongoDB数据库开启了密码保护,此处需设置用户名密码信息。若未开启,此处空着即可。

提示:

MapGIS DataStore 创建的MongoDB数据库的超级管理员 admin 不具备访问其他库记录的权限,需要用户在MongoDB中重新创建一个普通用户,并设置密码信息。开启MongoDB密码限制后,此处只能用新建的用户及密码,不能用admin账户。

  • 【PostgresSQL】:将结果栅格瓦片存储在PostgreSQL数据库中。
    • IP地址:PostgresSQL数据库所在的客户机IP地址;
    • 端口号:PostgresSQL数据库端口号,默认为5432。其中,MapGIS Datastore创建的PostgresSQL数据库默认端口号为54321;
    • 数据库名:PostgresSQL数据库名称;
    • 集合名:结果栅格瓦片的存储集合名称,用户可自定义;
    • 用户名/密码:PostgresSQL数据用户名密码信息。

提示:

设置瓦片存储路径时,若选择未裁剪完的瓦片数据。系统可读取瓦片的裁剪信息,点击"裁剪"即可进行瓦片续裁。

(2)设置瓦片的裁剪范围。在“瓦片裁剪范围”栏中,可设置瓦片裁剪采用“地图范围”或“自填范围”。

  • 【地图范围】:默认采用地图范围作为裁剪范围,用户不可以进行修改;

  • 【自填范围】,用户可以通过"交互输入XY范围"、"导入范围"或"拉框"三种方式自定义裁剪范围。

(3)选择瓦片的裁剪方式。系统提供的瓦片裁剪方式有两种:按级数的起始范围全部裁剪、指定级数的起始行裁剪;

选择“按级数的起始范围全部裁”,主要适用于级数低,数据量较小的瓦片裁剪操作。用户选择该裁剪方式后,需要设置裁剪的起始级数和终止级数。

当裁剪的瓦片级数高、数据量大时,宜采用“指定级数的起始行裁”,利用多台裁剪服务器来同时裁剪数据。选择该裁剪方法后,需要指定瓦片级数和裁剪的起始行和终止行。如下图设置,表示在瓦片的第7级上,裁剪行编号从0到20的瓦片。

提示:

通过设置裁剪范围和瓦片裁剪方式,可裁剪矢量地图的局部区域的瓦片。当用户地图范围较大且裁剪比例尺很大时,裁剪会非常耗时。可利用多个机器按照范围或级别裁剪局部区域瓦片,再通过“瓦片合并”功能将多个瓦片合并为一个,可实现手动的分布式裁剪,提升瓦片裁剪整体效率。

(4)瓦片信息查看。在“瓦片输出”页面上的“瓦片信息”栏中,可以查看当前裁剪设置下的瓦片结果大约占用的磁盘空间数(级数越高,数据量越大),以及预览裁剪结果;

单击【预览】按钮,弹出“瓦片浏览器”窗口,如下图所示:

在瓦片浏览器窗口上,用户可以预览经过之前一系列裁剪设置后的瓦片结果,以及预览窗口中的一些显示信息。其中,“转换参数”表示地图视窗上一个刻度单位对应实际情况下多少米,如上图中该参数值为4000,是因为被裁剪数据为1:400万的地图,地图视窗上刻度单位为毫米,视窗上1mm表示实际距离4000m,因此此时的“转换参数”为4000。

提示:

针对经纬度数据,在MapGIS K9中“转换参数”取100000,而在10中取的是111194.872221777(可在10的安装路径下…\MapGIS 10\Program\Config\MapTileConfig文件夹下TileParamConfig.xml文件中,对该数据进行查看或修改),因此同一个经纬度数据在K9和10中裁剪后所得到的结果会出现偏差。

提示:

在瓦片浏览器上,若用户勾选了“显示编号”和“显示网格”,如上图所示,可以看到每个格网的左上角都对应有一个编号(行数-列数),如0-0、1-0,分别表示该瓦片的第0行0列、第1行0列。在裁剪方式的“指定级数的起始行裁”中,设置的裁剪起始行值,可以在预览窗口中进行具体的确认。

5. 完成设置,点击“裁剪”,弹出“页面裁剪进度信息”提示框,裁剪的进度会在此提示框中动态的显示,如下图所示:

通常裁剪的级数越高时,耗时越多,裁剪第1级速度最快。裁剪完成,“瓦片裁剪”向导自动关闭。用户可以用"瓦片浏览"工具来查看瓦片。

# 分布式裁剪

当用户需要裁剪地图范围及比例尺比较大时,通过"瓦片裁剪"功能进行瓦片裁剪可能耗时几天甚至几十天。可通过"制作多机裁剪配置文件"功能,先制作多机裁剪配置文件。再在多个客户端上利用多机裁剪配置文件执行"多机裁剪",最终通过"瓦片合并"将多机裁剪结果合并为一个瓦片数据。

# 制作多机裁剪配置文件

# 功能说明

通过此功能可配置多机裁剪的划分类型、地图、裁剪范围、比例尺等信息,并生成*.xml文件。

# 操作说明

1. 启动"工具"面板->"制作多机裁剪配置文件"功能,弹出如下所示对话框:

2. 在"策略类型"设置页面,可设置如下参数:

(1)多机划分类型

  • 【按级数行号划分】:选择此方式时,可根据地图范围、起始级别、终止级别计算裁剪总瓦片个数,再均分给n个节点。

  • 【按范围划分】:选择此方式时,可根据地图y值范围均分给n个节点。

(2)选择裁剪地图 当地图文档中包括多个二维地图时,可通过下拉框选择待裁剪地图。

(3)输入裁剪范围 设置瓦片裁剪范围,具体各参数设置可参考"创建地图瓦片"章节。

3. 点击"下一步"进入"切片信息"设置。具体各参数设置可参考"创建地图瓦片"章节。

  • 【导入裁剪策略文件】:导入裁剪策略文件,裁剪策略文件(*.xml)可通过"创建地图瓦片"功能生成。

4. 点击"下一步"进入"生成文件"设置。

  • 【存储路径】:设置结果*.xml文件存储路径;

  • 【起始/终止级别】:设置瓦片裁剪起始/终止级别。具体各参数设置可参考"创建地图瓦片"章节;

  • 【节点数目】:设置分布式裁剪的节点数。值为n时,即分为n个客户端进行多机裁剪。

5. 点击"生成",即可生成多机裁剪配置文件(*.xml)。

# 多机裁剪

# 功能说明

完成多机裁剪配置文件制作后,可在n个客户端上分别进行多机裁剪,最终通过"瓦片合并"将多机裁剪结果合并为一个瓦片数据。

提示:

此处的多个客户端并不是指多个客户机。由于MapGIS瓦片裁剪对客户机的资源占用有限,可以一个客户机上开启多个MapGIS Desktop应用程序,每个MapGIS Desktop程序都可以认为是一个多机裁剪的客户端。

# 操作说明

1. 打开地图,启动"工具"面板->"制作多机裁剪配置文件"功能,弹出如下所示对话框:

提示:

多机裁剪地图应与制作多机裁剪配置文件时使用的地图为同一个,否则多机裁剪是没有意义的。请确认各客户端均可正常打开此地图。

2. 用户可进行如下参数设置:

  • 【多机裁剪策略文件】:选择已制作的多机裁剪配置文件(*.xml);

  • 【节点号】:选择分布式节点号,每个客户端应选择不同的节点号进行裁剪;

  • 【数据存储路径】:设置结果瓦片存储路径,目前仅支持*.mut格式。

3. 点击"切片"即可开始裁剪瓦片。

提示:

多机裁剪过程中若取消操作,或遇到断电、程序死机等极端情况时,可通过"瓦片裁剪"工具进行瓦片续裁。