@scomper

OmniGraffle 实例──制作地图图示

2017.07.05

OmniGraffle 制作地图图示涉及到大量对象和图层操作,为了避免重复劳动,还需要对内容进行科学的组织与规划,结合版面、图层、置入文件的格式来安排内容层次和控制好颗粒度,方便编辑的同时避免对象和层级过于复杂而导致 OmniGraffle 运行速度下降。另外,作为主要素材来源的 SVG 格式,需要认知 Sketch 和 OmniGraffle 解读它的兼容问题,了解导入和导出上存在的差别和局限。

涉及到的知识点:

  • SVG 格式转换中的注意事项;
  • 内容规划,版面、图层、SVG 还是 PDF;
  • 图层的运用,将选择对象创建为新图层,合并图层,内容在图层间的移动;
  • 对象的快速操作,选择相似对象、锁定(⌘L 锁定,⌥⌘L 解除锁定)、缩放(缩放到所选对象、⌘J 滚动到所选对象);
  • 放大镜和置入图像,局部放大的两种方式。

SVG 格式的转换

SVG 格式(可缩放矢量图形 Scalable Vector Graphics)是由矢量绘图类软件创建的,例如:Adobe Illustrator、CorelDRAW、Microsoft Visio 等,Mac 平台上Sketch 和 OmniGraffle 都支持导入和导出 SVG 格式,不过前者的支持更完整一些,同样的文件在 OmniGraffle 中打开可能会出现错乱,而 Sketch 则正常。

SVG 地图资源整理」中提供的几幅中国地图的 SVG,其中铁路线路的 SVG 文件在 OmniGraffle 和 Sketch 中打开就差异很大。

OmniGraffle 打开后字体的位置几乎全部丢失,填充色也都变成了「黑色」,个别曲线转换还出现了异常,上图所示分别是 OmniGraffle(左侧)和 Sketch(右侧)打开后的效果,填充颜色出现差异还是很好调整的,但是线条端点莫名多了几个就只能删掉重绘这条线。归根结底还是 OmniGraffle 对 SVG 的支持力度有限,所以在使用时需要注意:

  • 字体位置和大小可能会变化,可以转成曲线再导入;
  • 填充颜色可能会发生变化,透明度丢失,填充变成黑色;
  • 部分线条会变成形状

总的来说,SVG 的内容越复杂 OmniGraffle 还原度上就越差,有时候不用 Sketch 过渡一下(Sketch 打开然后再次导出成 SVG)OmniGraffle 面对复杂的 SVG 文件直接就抓瞎了,这个阶段往往会让人因此而放弃 OmniGraffle。如果没有特别的理由确实 Sketch 更胜任此类操作。

内容规划

每一张地图里都包含大量的对象,这些对象又分成几层,例如:轮廓、行政区域、城市、站点、线路等等,而且不同的地图尺寸上还存在差异,处理组合前首先需要整理。

按照「版面 - 图层 - 群组」的层级结构整理内容。版面,利用版面将「素材」和绘制「图示」隔开,素材区域中对地图进行规整和要素划分,统一地图尺寸和轮廓。将地图包含的元素按使用需求剥离成多个群组,用名称做好群组的归属标记。

统一地图大小

以图层为容器导入不同的地图资源后,首先要统一它们的大小,新导入的 SVG 地图资源通常是只有一个群组,为了整体缩放方便,建议先不解散群组,等调整好大小以后再解散群组,如果已经解散群组可以在图层上右键「选择图层中的全部内容」。

选择一个地图作为基准,添加参考线来确定边界和参照点,通过图层的叠放顺序和调整对象透明度来进行对齐操作。上方图层中找到轮廓对象调整填充颜色透明度(例如案例中的 path5893),直到能看到下方图层,切换到下方的图层群组所有对象,便于通过数值微调大小和位置,检查器窗口中「几何形状」选择「保持高宽比」避免缩放变形。

图层和群组都可以进行锁定或解锁、隐藏或显示(点击图层旁的控制项来实现)来聚焦要编辑的对象减少干扰。OmniGraffle 只能针对图层进行隐藏,群组和对象支持锁定。

按需求整理划分成群组

大小统一后还原透明度并解散群组,以图层为单元对地图内容进行分类整理,将可能重复的要素(如,地图轮廓)和不同标注需求的内容(城市名称、铁路线路、水系、站点等)单独群组(⇧⌘G)。

群组的命名上推荐使用不同来源地图层作为前缀,这样以后使用时如果发生问题或者修改,能快速定位和回溯到原始素材上。

地图资源中不一定都需要导入繁杂的 SVG 矢量对象,如果使用中不会做什么修改,导入 PDF 反而更简单,这也能降低 OmniGraffle 的运算量提高操作的速度。例如上图所示中,南海诸岛的图示就是在 Sketch 中局部选择导出的 PDF 文件。铁路站点名称的(ditu1-cities name pdf)也是一张 PDF 图片,这张城市名称图选择使用 PDF 格式,一方面是 OmniGraffle 对 SVG 的字体定义支持有限,另一方面是需求决定的,城市名称在绘制过程中主要是作为参照和定位,PDF 格式足以应对。

整理过程中会频繁的解散群组(⇧⌘U)再重新群组(⇧⌘G),解散后更容易在画布上直接选择对象。为避免混乱和列表过长影响操作,当前图层中建议每次只解散同一类型的对象,编辑完成后群组打包再解散编辑其他群组对象。

图层的运用

OmniGraffle 中对象的隐藏是基于图层的,遇到大量对象的编辑场景时,把同类对象放在一个图层更易于隐藏、锁定和调整层级前后顺序。

制作「图示」的版面中图层的定位和「素材」版面不同,素材中不同的图层保存的是不同来源的地图,主要目的利用图层的叠加和透明来比较和统一地图尺寸,所以图层内部只用群组的方式来组织不同类型对象。然而在操作中不难发现,调整群组中的某个对象时,直接在画布上很难选择对象,从左侧的对象列表中选择又不够直观。

图示版面每个图层用来保存一类地图元素,例如,城市名称、江河湖泊、行政区板块和周边的陆地和海洋等,需要注意的是,直接在层列表中按住 ⌥ 拖拽复制图层即可,不要到画布中复制粘贴,层列表中复制粘贴相对的位置会保持不变,而画布中粘贴会以当前鼠标位置为插入点。

按照排列叠加的顺序排列图层的上下关系,解散当前图层中的群组,通过图层隐藏和锁定就能很方便的编辑当前图层的对象。

多个地图来源中有些对象是重复的,解散群组后选择保留和删除不需要的对象,如,国家版图的轮廓几个地图中都有,找到后保留一个。同时,国家版图在背景之前其他所有层之后,所以最后有必要将版图对象单独移动到背景层,以避免遮挡。

对象的快速操作

地图图示编辑过程中会牵扯到大量对象的交互操作,掌握必要的快捷键快速定位目标非常有必要。

Sketch 中定位对象非常方便,⌘2 缩放到选择对象,⌘3 基于对象居中画面,对象上右键(Pick Layer)还能在当前位置的多个对象中选择。按住 ⌘ 键可以在忽略层级顺序直接选择对象。

OmniGraffle 中对象的选择策略是基于图层的,这里也反应出前期合理进行内容分层的重要性,否则要查找定位一个对象非常困难。OmniGraffle 中推荐的策略是切换到对象所在图层编辑,为避免误触隐藏或锁定处于当前图层之上的图层。OmniGraffle 可以跨层选择某个对象,如果没有被选中请对照以下几种情况:

  • 对象处于锁定的图层;
  • 被其他对象遮挡,可锁定前方对象后再选择下方的对象;
  • 对象是群组中的一部分,解散群组后才方便选择单个对象。

定位具体对象 OmniGraffle 也有快捷支持,左侧对象列表上右键选择⌘J 定位到所选对象,缩放到选择对象默认没有快捷键,可以到「系统偏好设置 - 键盘」中自行添加一个自定义的键盘快捷,如 ⌥⌘J。缩放画布按住 ⌘ 键双指在触控板上上下移动,如果已经有选择对象,缩放会保持选择对象一直处于画布之中。

放大还是置入图片

地图图示中经常会用到局部放大,例如,放大某一个省份来突出显示。实现类似的放大在 OmniGraffle 中有两种方式,一种比较简单利用填充的「放大」特效来实现,一种是往形状中置入图片然后放大其中的图片。

从行政区域图层中选择一个省份的板块形状复制成一个新的图层,等比缩放到合适大小后选择填充,填充特殊选项中叠加选「乘」,效果选「放大」,调整合适的放大比例就完成了。

填充特效放大的方式操作简单,但是有个不足的地方在于它是对下一层的内容进行放大,位置移动放大的区域也会随之变化,不能固化放大的区域。如果希望除了放大区域外其他部分不显示线路让画面干净一些这种方式要实现很繁琐(形状补集计算抠出一个蒙版)

往现有的形状中置入图片来实现放大效果更灵活,因为是图片填充,所以形状的位置可以随意摆放,放大比例只需要调整置入图片的缩放大小即可,在图像设置中调整显示区域。

这种方式需要注意的问题是置入图片的大小,图片太大会影响加载速度,太小不清晰,所以推荐用画框框出一块输出成 PDF 然后置入,这样既保证了清晰度也能控制好尺寸。

画框也是一个图层,画框层所在的位置决定了输出的内容包含那些层,例如,图示中希望部分输出铁路线的山西局部,画板放在背景和行政层之上,这样「仅从画板输出」就能获得只有山西部分的透明背景图片。


OmniGraffle 处理地图图示并不是最合适的软件,Sketch 处理这种复杂层级的对象编辑可能更灵活一些,但是每个软件都有学习成本和熟练使用的时间成本,所以选择顺手的总是对的。

从繁复中找到处理问题的方式才能把自己从工具中解放出来,地图编辑不失为一个好的案例,试试呗。

--「壹页单章」会员计划 --

Comments
Write a Comment