• ArcGIS使用字体文件制作符号库!


    符号库制作(个人总结)

    ArcGIS制作的符号库有多种,刚刚毕业进入公司,接触到符号库的制作,在前人的脚步之下,本人整理通过字体符号(Character Marker Symbol)制作符号库的步骤。

    重要方法:对于大量制造符号,可以在arcmap中打开style文件,然后复制某一个符号,之后不是制造符号,而是更改符号!这样就可以节省在制造的过程中要选择相应的符号类型、字体库等,可以节省时间。只要更改style文件中符号对应相应字体库中的字体符号即可。

    既然是通过字体符号库制作arcgis的符号库,那么首先要有的是字体库(ttf格式文件)。

    使用的工具 FontCreator6.0。工具使用比较简单,下面是软件主界面。用户可以通过自己需要设置主界面的工具栏(在工具栏上右击选择需要的即可)。

    图中显示的时打开的已经存在的字体库(file->open->fontfile)。用户也可以自己新建一个新的字体库,对于一个新的项目,最好新建一个全新的字体库。新建字体库在file下new一个就行(对于新建的字体库最好先清空里面的字体,否则太乱了,哈哈)。

    在有了字体库以后便可以添加新的字体文件了。单击工具栏的按钮,弹出新建字体文件对话框。

    其中蓝色显示的表示已经使用的,白色的表示尚未使用。新增时双击白色格子后单击“OK”按钮即可,便会添加新的文件。

    右下角为新增的空白文件。

    对于字体文件可以自己双击打开进行绘制、添加图形,也可以从其他图形文件中拷贝图形。此软件提供直接拷贝编辑好的字体文件的功能,用户可以在同一个主窗体中拷贝已有的字体文件或者从不同的工程中相互拷贝。

    在自行绘制图形的时候,最要规定出图形绘制的范围,否则在arcgis中打开可能造成图形不可见,经过试验证明,左右最好在0~2100之间,上下最好在baseline之上winscent之下。当然也可以根据要求进行调整。(自己可以多试几次,找到规律就好)

    在自己绘制的过程中,许多图形是由多个图形拼接而成。列入上图中的矩形框是由两个矩形叠加而成,叠加的部分或者覆盖或者相互抵消,这个由图形的边框方向决定,用户可以通过选中图形后右击,选择change direction来改变,自己赶快来试一下吧!

    另外对于该软件的使用在此不再多说,大家自己多试试就熟练了。

    制作好之后便可以进行下面的操作了,首先要安装自己的字体库。方法有两种:

    1、  直接将自己的字体库文件(ttf格式)拷贝到c盘windows下的fonts文件夹中。

    2、  右击字体库文件,选择安装即可。

    这样你的字体库文件便安装成功了。我们便可以通过arcgis调用字体库中的字体进行新的符号制作喽!

    打开arcgis9.3,进入工具栏tools下的styles中的style manager,弹出style manager窗体。

    如果已经有了style文件,那么单击style下拉按钮,在最后选择add,指定本地style格式文件目录添加到style manager中即可。

    如果没有style文件,那么单击style下拉按钮,在最后选择creat new,指定新建style格式文件存储目录并将其添加到stylemanager中即可。(想建立自己的符号库,最好是新建一个style文件,最起码不会乱嘛,我这里就直接用之前做过的做演示了)

    添加进来style文件之后,点开树节点,选择marker symbol,在右侧显示我们文件的点状符号。当然新建的style文件点开之后是空的。在右侧显示符号的地方你右击->new->markersymbol,弹出新建点状符号窗体。

    选择type为 character marker symbol,font为自己安装的ttf文件名称,在下面便显示你ttf中存在的符号。其余先默认吧!(这点很重要哦!)

    选择要进行符号制作对应的图形,便将其添加到其中,在左上角可以看到预览信息。我们可以通过按钮放大查看,以便于后面操作。设置符号的大小(这里设置其和esri的标准大小相同)。

    Units:points

    Size:18

    Units:inches

    Size:0.25

    Units:milimeter

    Size:6.35

    Units:centimeters

    Size:0.635

    一般选择points为单位就行,输入的时候还方便。一般情况下不要设置angle选项,color选项可以根据要求自己设定。

    单击按钮,可以新加一个图层,通过按钮将其置于下面,添加这个图层主要是用在背景,设置其图形为不透明的。否则的话,对于图形中白色的部分生成符号后是透明的,影响美观。

    背景图形的形状以及大小、位置等一般与符号图形一模一样,只要挡住原本图形中的白色部分即可,当然也不可以多挡了。这样就不会引起由于背景图形覆盖面大造成生成符号后符号边缘有白色不透明区域,也不会引起由于背景图形不符合而符号存在透明的部分。

    背景图形的颜色可以设置,如果符号有背景色,那么就设置为符号背景色的颜色,如果没有就设置为白色即可。

    其实,归根结底就是在制作字体符号的一般同时制作一对,一个是符号图形,一个是背景填充(其实先制作一个,然后再拷贝一个,进行一下修改就可以了)。背景填充要完全覆盖原始符号图形空白区域但又不可以超过符号图形的区域。对于一些特殊的图形,例如没有封闭空白区域的,不用设置背景图层,这种符号是很让人省心的。

    现在就制作好一个符号了,单击ok按钮,完成这个符号的制作。

    在arcmap中添加一个点状图层,单击点状图层样式,在more symbol中选择或者添加自己刚刚的style格式文件,然后选择刚刚做好的符号就可以对其进行查看了。

    是不是有点小激动啊!哈哈!

    不要急嘛!

    最后,因为外面用的大部分都是serverstyle格式的符号库文件,因此我们也要将我们的style格式文件转换为serverstyle格式的符号库文件。

    我的arcgis安装在c盘,转换工具路径是c盘-programfile-ArcGis-utilities-make serverstyle set.exe程序(安装目录自己找找就行,很简单滴!),将你的style格式文件导入转化为serverstyle格式的就行了。(注意在转换的过程中,转换目录最好不要有汉字,要不然容易导致失败)

    好的!符号制作的过程就大致如此了!下面也说一下我其中遇到的几个问题,有解决的也有尚未解决的,大家可以参考一下。

    1、新建一个字符图形,进行拷贝后(作为背景图形),发现在arcgis中二者位置不对应了!这个问题很让人头疼,浪费自己调整位置的时间。尚未找到原因,只是在拷贝的时候拷贝字体文件,而不是打开文件后拷贝里面的组合图形,这样可以减少此种现象的出现。另外实在对应不上就重新制造符号。

    2、在字体库中绘制好了图形,但是在arcgis选择参与符号的图形时不显示,只显示此文件刚建立时原始的样子(也就是其中绘制的图形无法通过文件查看)。其实这并不影响我们的使用,只是在找图形时不太好找而已。重新启动arcgis并重新添加一下文件一般就好了。

    3、在字体库中显示良好的图形文件在arcgis中显示不完全。处理方法就是在字体制作软件中重新调整它的大小。

    4、对于符号颜色改变效果的问题。在使用符号的时候,我们可以重新制定符号的显示颜色,这里有一个很大的问题。例如:

    其中圆形内部的灰色是背景图形的,无论怎么改变图形颜色,变得只有边框的蓝色,而填充的灰色是不会跟着变化的。颜色的变化只可以变化制作时处于上面的图形图层,而背景图层的颜色是不会改变的。这个问题还没有解决,有哪位会的麻烦告诉我一下哈!

    注意框右侧的小锁控制符号层颜色是否可以改变,锁定的在符号制作完成使用时无法改变颜色。

            补充:对于符号可以通过fontcreator进行直接的制作,也可以通过photoshop等图片处理软件制作成bmp格式图片后直接拖动到字体文件中或者通过TOOLS下面的IMPORT IMAGE工具导入(似乎只支持bmp格式图片文件,自己试了其余几种常用的图片文件格式均不支持)。这种方法对于复杂的符号很有用处,因为通过fontcreator制作复杂的符号非常困难,而用photoshop等制作相对简单很多。但是要注意一点,不管bmp格式图片不管是包含几种颜色,转化为字体文件后只有白与黑两种颜色,所以一定要是图形的颜色较深、背景的颜色较浅,最好的方法就是图形用纯色(红、黑、蓝等深色),背景颜色用白色即可。下面是几个不同颜色的图片转换之后的效果。

    转换之后的效果依次为:

    对于bmp图形的大小我还没有进行测试,但是这个应该不影响,因为可以转换之后进行拉大和缩小,这里我用到的bmp格式文件的大小是300*300的。

    QQ:78910938

    Email:jingkun.liu@163.com

  • 相关阅读:
    C++中获取高精度时间差
    有关宏的一个问题
    HDU 2504 又见GCD
    .NET中统一的存储过程调用方法(收藏)
    如何让你的SQL运行得更快
    最赚钱的5种成功创业可行方式
    SQL语句优化技术分析
    js document.getElementByID("aa")的位置
    写SQL时尽量不要对字段进行运算操作
    连接池的问题
  • 原文地址:https://www.cnblogs.com/Jingkunliu/p/2452135.html
Copyright © 2020-2023  润新知