public abstract class SymbolLibrary
extends com.supermap.data.InternalHandleDisposable
点状符号库类、线型符号库类和填充符号库类都继承自该抽象类。用来管理符号对象,包括符号对象的添加、删除。
限定符和类型 | 方法和说明 |
---|---|
int |
add(Symbol symbol)
将指定的符号对象添加到该符号库中。
|
int |
add(Symbol symbol,
SymbolGroup desGroup)
向符号库中添加指定的符号对象。
|
void |
clear()
清空该符号库中的所有符号对象。
|
boolean |
contains(int id)
测试当前符号库是否包含指定的 ID 号。
|
SymbolGroup |
findGroup(int id)
根据指定符号的 ID 号,查找该符号所属的分组。
|
Symbol |
findSymbol(int id)
在该符号库中查找指定 ID 号的符号对象。
|
Symbol |
findSymbol(String name)
根据指定的名称,在该符号库中查找该名称所对应的符号对象,返回第一个与指定名称相同的符号对象。
|
boolean |
fromFile(String fileName)
导入符号库文件,该操作会先删除当前符号库中已经存在的符号。
|
int |
getAvailableID()
获取符号库可用id
|
int |
getMaxID()
获取符号库最大id
|
SymbolGroup |
getRootGroup()
返回符号库的根组对象。
|
boolean |
moveTo(int id,
SymbolGroup group)
把指定的符号对象移动到指定的符号分组中。
|
boolean |
remove(int id)
根据指定的 ID 号,移除该符号库中相应的符号对象。
|
boolean |
toFile(String fileName)
导出符号库文件。
|
dispose
public SymbolGroup findGroup(int id)
id
- 指定符号的 ID 号。SymbolLibrary.contains(int)
SymbolLibrary.contains()
方法的示例。public boolean contains(int id)
id
- 需要进行测试的 ID 值。public void containsTest() { // 假设打开一个工作空间 workspace 对象,返回资源库,从资源库返回填充符号库 symbolLibrary // 查找当前符号库(SymbolLibrary)ID 为8的符号对象及其所属的分组 if (symbolLibrary.contains(8)) { Symbol symbol = symbolLibrary.findSymbol(8); SymbolGroup symbolGroup = symbolLibrary.findGroup(8); System.out.println("ID 为8的符号对象的名称为:" + symbol.getName()); System.out.println("分组中符号的个数为:" + symbolGroup.getCount()); // 删除 ID 为8的符号对象 symbolLibrary.remove(8); System.out.println("删除一个对象后分组中符号的个数:" + symbolGroup.getCount()); } }
public int getAvailableID()
IllegalStateException
- 当前对象已被释放public Symbol findSymbol(int id)
id
- 指定的 ID 值。SymbolLibrary.contains(int)
SymbolLibrary.contains()
方法的示例。public Symbol findSymbol(String name)
name
- 指定的名称。public boolean toFile(String fileName)
fileName
- 导出的文件名称。public void toFileTest() { // 假设打开一个工作空间 workspace 对象,返回资源库,从资源库返回填充符号库,将该符号库导出为符号库文件,填充符号库后缀为 bru,点状符号库后缀为 sym,线型符号库后缀为 lsl Resources resources = workspace.getResources(); SymbolLibrary symbolLibrary = resources.getFillLibrary(); symbolLibrary.toFile("D:/symbolLibrary"); }
public boolean fromFile(String fileName)
该方法不能获取系统符号
filename
- 导入的符号库文件名称。SymbolLibrary
中。
public void fromFileTest() { // 假设打开一个工作空间 workspace 对象,返回资源库,从资源库返回填充符号库 SymbolLibrary // 假设当前 D 盘已存在一个符号库文件 symbolLibrary.bru,将该文件导入到当前符号库 SymbolLibrary 中,该操作会先删除当前符号库中已经存在的符号 symbolLibrary.fromFile("D:/symbolLibrary.bru"); }
public boolean remove(int id)
id
- 待移除符号对象的 ID 号。SymbolLibrary.contains(int)
SymbolLibrary.contains()
方法的示例。public int add(Symbol symbol, SymbolGroup desGroup)
symbol
- 待添加的符号。desGroup
- 新添加符号对象的目标分组。public boolean moveTo(int id, SymbolGroup group)
id
- 指定的要移动符号对象的 ID 号。desGroup
- 指定的目标分组。public int add(Symbol symbol)
symbol
- 待添加的符号对象。public void clear()
public SymbolGroup getRootGroup()
如下图所示,结合 SuperMap Object Java 的接口,利用图示帮助理解符号库的组织结构,该结构适用于点状符号库、线型符号库和填充符号库。
符号库的组织结构类似于Windows资源管理器的组织结构,磁盘的根目录下可以存在零个或多个文件夹以及零个或多个文件,每个文件夹中又可以有零个或多个子文件夹以及零个或多个文件,以此类推层层嵌套;符号库的根组就相当于这个磁盘的根目录,文件夹可以看做符号库的子分组,文件就好比各种符号,一个符号库只能存在一个根组,根组中可以有零个或多个子分组以及零个或多个符号,每个子分组下还可以有零个或多个子分组以及零个或多个符号,以此类推。
如下图所示,红色虚线框所示是符号库的根组,根组也是分组,对应 SymbolGroup
类对象,根组是符号库的最高分组层次,根组中可以包含零个或多个子分组以及零个或多个符号,子分组也是分组,同样对应 SymbolGroup
类对象,其中所有子分组又构成一个子分组集合,对应 SymbolGroups
类对象,根组中至多有一个分组集合,即SymbolGroups
类对象,SymbolGroups
类对象是 SymbolGroup
类对象的集合,用来管理根组中的各子分组,通过 SymbolGroups
类对象来完成根组中子分组的创建与移除。当子分组(例如下图绿色框所示)中还包含有零个或多个子分组以及零个或多个符号,那么这些子分组和符号又构成了的一个分组(下图蓝色虚线框所示), 而这个绿色框标识的子分组称为蓝色虚线框所示的这个分组的父分组,并且,蓝色虚线框中的所有子分组构成了一个子分组集合,对应一个 SymbolGroups
类对象,同样该蓝色虚线框所示的分组中也至多有一个子分组集合,通过这个子分组集合对象来完成该蓝色虚线框所示的分组中的子分组的创建与移除。以此类推,下图中的黄色框所示的子分组对应一个 SymbolGroup
类对象,粉色虚线框内的子分组又构成一个分组对象(此分组对象中包含零个符号和三个子分组),即对应一个 SymbolGroup
类对象,因此,黄色框所示的分组是粉色虚线框所示分组的父分组,同样粉色虚线框所示分组中也包含了一个子分组集合。总之,符号库呈现一种树形组织结构。
注:所谓的分组和子分组是符号库的逻辑组织形式,都是使用户可以将类别相同的符号放在一个组中,从而方便管理和使用。
综上所述,一个符号库(SymbolLibrary
)包含有唯一的一个根组(SymbolGroup
类对象),每个 SymbolGroup
类对象至多包含有一个 SymbolGroups
类对象,但却可以包含有零个或多个 Symbol
类对象,其中 SymbolGroups
类对象是 SymbolGroup
类对象的集合,以此实现符号库的树形管理结构。
public int getMaxID()
IllegalStateException
- 当前对象已被释放Copyright © 2021–2024 SuperMap. All rights reserved.