A图 |
B图 |
C图 |
关于有边界道路图, 本人考虑过如下一些作法。最简单的方法是在画笔中, 用直线一条一条地画道路线, 每条道路按其边界画两条线, 可以得到如A图所示的图形, 然后再用橡皮擦一点一点修改每个十字路口, 把不用的线擦掉, 得到B图所示的图形。想一想就知道有多麻烦, 而且很难保证所画的道路的两条边线一定平行。为了画出平行的直线, 我试着用VB编写程序来画线。程序运行时用鼠标画一条线, 在旁边按设定的间距自动画一条平行线, 最后用SavePicture语句将图片框中的图形存成BMP格式的位图文件, 经过试验, 确实画出来了, 得到的是一堆交叉的平行线条, 每个路口都和A图一样。后来, 我没有费心修改它。
随着我想到了Word和Excel里的作图工具, 利用它可以作出不同宽度的矢量直线, 线的颜色线宽都可设定、修改, 且有明确的置前置后关系。画有边界道路可以采用白线叠加的方法。画一条较宽的直线, 在它上面放置一条比它窄一点的白色直线, 就可得到一对表示道路边界的平行线。画出几条交叉的粗线, 再它们上面画上白色的交叉的稍细的直线, 因为后画的白线都在顶层, 所以会自动得到一个个交叉的路口, 方便快捷, 且不必修改。于是我决定在Word里制作地图。先是将我自己用铅笔白纸绘制的地图缩印成B5大小, 插入文档作为背景, 然后用作图工具沿着每一条道路画线, 每条线的宽度都与路的宽度对应。机动车道和自行车道隔开的那种道路为主要干道, 线宽取为9磅, 窄一点的是7.5磅, 往下是6磅、4.5磅, 有几条小胡同我取的是3磅。道路图全画完大约有一百多条线, 包括粗细不同的直线和自由曲线。复制道路的工作采用VBA来进行。先是录制宏, 选定一条直线, 复制、粘贴, 改为白色, 线宽减去1.5磅, 向左上移动, 移回原位, 宏录制结束。然后编辑宏, 在宏的VBA代码中加上For-Next语句, 依次对每条直线进行同样的操作。回到Word界面, 执行宏。可以看见一条条道路被复制出来改为白色又放回原位的景象, 一条又一条很是壮观。一百多条道路, 几十秒钟就都处理完了, 效果很好, 路口没有像A图那样交叉的现象。而且所作的是放大不失真打印无锯齿的矢量图, 用激光打印机打印出来得到光滑笔直的道路图, 非常漂亮。在地图中添加一大块浅黄色的多边形, 并把它置于最底层, 就得到了漂亮的街区图。
就有边界道路图的绘制, 我也考虑过其它途径, 其一是AutoCAD, 其二是PhotoShop。在CAD中, 可以直接画平行线, 然后可以修改每个交叉处的交叉形式。但在道路宽窄不同时需要画间距不同的平行线, 需要经常设定间距, 稍显麻烦, 当时考虑到这一点就没采用画平行线的方法, 而是用偏移(Offset)的方法。以扫描得到的地图作为背景图案, 沿着道路的一条边画一条直线, 点击工具条上的Offset按钮, 执行偏移操作, 先不选对象实体, 按T键, 选其中的(Through)功能。然后选中一条直线, 在对应的道路的另一条边界上点一下, 得到了与背景道路边界对齐的两条平行线。一百多条道路很快就画完了, 路口同样是A图的形式。因为我用的都是单根直线, 所以修改路口时不能简单的修改平行线相交方式, 只能在每个路口依次修改。用Break命令断开, 用夹持点移动端点, 用Trim命令修剪。费了不少事, 麻烦了好一阵。现在想想, 也许用平行线作图也麻烦不到哪去, 应该采用之。但不管怎么说, 在路口的处理上, 在Word里作图是相当省事的。
在PhotoShop里作图是后来想到的方法。其思路是先作出一条条表示道路的直线, 然后用选取粗线颜色的区域, 得到选区后将选区转化为路径, 用细笔头对路径描边。思路简单, 可行性不强, 而且用PhotoShop画直线图形实在是剑走偏锋。我后来简单试了一下, 直线区域转化为选区没什么问题, 选区的边缘是笔直的, 但选区转化成路径后大部分边缘都变弯了, 描边后得到的道路边界都是弯曲的, 像一幅卡通画, 罢了。
在CAD里作道路图, 其街区的上色涉及到区域填充(Hatch), 稍为麻烦。有时边界不准, 有时需要重新填充。相比之下, 在Word里给街区时, 在背景作一大块浅色多边形就了事, 更容易一点。另外在Word里修改、移动道路时也很简单, 这两点是CAD所不及的。我曾尝试在CAD里效仿Word里的作法用叠加白线的方法来作出有边界道路, 却发现两个问题:CAD里线宽不是随便设的, 最宽为2.11毫米, 实在想画粗线就得用多义线(Polyline);另外在CAD里线的颜色没有白色只有反白。想想也是, 谁会在工程制图里打印5磅的白色线条呢?太难为它了, 罢了。
后来我发现在Excel软件中作地图比Word更方便。与Word相比, Excel有如下四个优点。一、在Excel中选中某根直线时, 工具条编辑栏的左端会显示该直线的名称及序号。这点在编辑宏时很有用。二、地图画出来后很大, 得A3纸才装得下。但打印A3的激光打印机很难找到, 一般是考虑将大图分两部分用A4的纸打印出来然后拼页。但在Word中我试了几种方法也没能把图打印到两页纸上。最后我发现在Excel软件中可以实现跨页打印, 解决了我的一大难题。三、在Excel软件中作图区域很大, 在放大图形时不必考虑幅面大小。四、在Excel中可以方便的编辑宏, 在VBA中利用“ .Text = Cell(I, 1)”的方法可以将单元格里的内容转入文本框, 建立数百个写有单位地名的文本框, 以放置到地图上去。应用Excel软件, 我利用作图工具, 结合VBA的应用, 作出了铁岭地图。
察看铁岭地图在宏的VBA代码中加上For-Next语句, 依次对每条直线进行同样的操作。回到Word界面, 执行宏。可以看见一条条道路被复制出来改为白色又放回原位的景象, 一条又一条很是壮观。一百多条道路, 几十秒钟就都处理完了, 效果很好, 路口没有像A图那样交叉的现象。而且所作的是放大不失真打