public abstract class Geometry
extends com.supermap.data.InternalHandleDisposable
限定符和类型 | 方法和说明 |
---|---|
static void |
addCustomGeometryCreatedListener(CustomGeometryCreatedListener l)
添加一个用于接收自定义几何对象创建结束事件(
CustomGeometryCreatedEvent )的监听器。 |
abstract Geometry |
clone()
克隆一个Geometry对象。
|
abstract void |
dispose()
释放该对象所占用的资源。
|
boolean |
fromXML(String xml)
根据传入的 XML 字符串重新构造几何对象。
|
Rectangle2D |
getBounds()
返回几何对象的最小外接矩形。
|
int |
getID()
返回几何对象的标识符,此标识符用于唯一标识该几何对象。
|
Point2D |
getInnerPoint()
返回几何对象的内点。
|
GeoStyle |
getStyle()
返回几何对象的几何风格。
|
GeometryType |
getType()
返回几何对象的类型。
|
Object |
getVariantID()
返回几何对象的 ID 标识符,此标识符用于唯一标识该几何对象。
|
boolean |
hitTest(Point2D point,
double tolerance)
测试在指定容限允许的范围内,指定的点是否在几何对象的范围内。
|
boolean |
isEmpty()
判断几何对象是否为空值,不同的几何对象的是否为空的条件各异,请参见各具体几何类型的该方法。
|
Geometry |
mirror(Point2D startPoint,
Point2D endPoint)
返回此几何对象关于指定线段对称的几何对象。
|
void |
offset(double dx,
double dy)
将此几何对象偏移指定的量。
|
static void |
removeCustomGeometryCreatedListener(CustomGeometryCreatedListener l)
移除一个用于接收自定义几何对象创建结束事件(
CustomGeometryCreatedEvent )的监听器。 |
void |
resize(Rectangle2D bounds)
缩放此几何对象,使其最小外接矩形等于指定的矩形对象。
|
void |
rotate(Point2D basePoint,
double angle)
以指定点为基点将此几何对象旋转指定角度,逆时针方向为正方向,角度以度为单位。
|
void |
setBounds(Rectangle2D bounds)
设置最小外接矩形。
|
void |
setEmpty()
清空几何对象中的空间数据,但几何对象的标识符和几何风格保持不变。
|
void |
setID(int value)
设置几何对象的标识符,此标识符用于唯一标识该几何对象。
|
void |
setStyle(GeoStyle value)
设置几何对象的风格。
|
String |
toXML()
根据 GML 3.0 规范,将该几何对象的空间数据输出为 XML 字符串。
|
public Rectangle2D getBounds()
Rectangle2D
对象表示几何对象的最小外接矩形。Rectangle2D
public void setBounds(Rectangle2D bounds)
bounds
- 设置的最小外接矩形public Point2D getInnerPoint()
内点可以在很多情况下被使用,例如,当创建标签专题图时,几何对象的内点将作为标签专题图的锚点。
public int getID()
public Object getVariantID()
public void setID(int value)
value
- 表示几何对象的标识符的整数。public boolean isEmpty()
Geometry.offset(double, double)
Geometry.offset()
方法的示例。public GeoStyle getStyle()
public void setStyle(GeoStyle value)
value
- 用来设置几何对象风格的 GeoStyle
对象。Geometry.offset(double, double)
Geometry.offset()
方法的示例。public GeometryType getType()
GeometryType
类所定义的常量值之一,具体请参见 GeometryType
类。GeometryType
public boolean fromXML(String xml)
调用该方法时,首先将该几何对象的原始数据清空,然后根据传入的 XML 字符串重新构造该几何对象。
GML (Geography Markup Language)即地理标识语言, GML 能够表示地理空间对象的空间数据和非空间属性数据。GML 是基于 XML 的空间信息编码标准,由开放式地理信息系统协会 OpenGIS Consortium (OGC) 提出,得到了许多公司的大力支持,如 Oracle、Galdos、MapInfo、CubeWerx 等。
GML 作为一个空间数据编码规范,提供了一套基本的标签、公共的数据模型,以及用户构建应用模式(GML Application Schemas)的机制。
xml
- XML 格式的字符串。Geometry.offset(double, double)
Geometry.offset()
方法的示例。public boolean hitTest(Point2D point, double tolerance)
即判断以测试点为圆心,以指定的容限为半径的圆是否与该几何对象有交集,若有交集,则返回 true;否则返回 false。
point
- 测试点。tolerance
- 容限值,单位与数据集的单位相同。Point2D
public Geometry mirror(Point2D startPoint, Point2D endPoint)
startPoint
- 线段的起点。endPoint
- 线段的终点。Geometry.offset(double,double)
Geometry.offset()
方法的示例。public void offset(double dx, double dy)
如图所示为一个面对象平移后的效果。
dx
- 偏移 X 坐标的量。dy
- 偏移 Y 坐标的量。public void offsetTest() { // 假设打开一个工作空间 workspace 对象,工作空间中存在一个数据源 datasource 对象 // 从数据源中取出一个数据集 dataset // 取出数据集中 SmID=53 的记录,返回其对应的几何对象 DatasetVector dataset = (DatasetVector) datasource.getDatasets().get( "World"); Recordset recordset = dataset.query("SmID=53", CursorType.STATIC); Geometry geometry = recordset.getGeometry(); // 判断几何对象是否为空,不为空时依次对几何对象进行重构、设置样式、平移、对称、旋转以及缩放操作 if (!geometry.isEmpty()) { geometry.fromXML(geometry.toXML()); geometry.setStyle(new GeoStyle()); geometry.offset(100, 100); Rectangle2D rectangle2D = geometry.getBounds(); geometry.mirror(geometry.getInnerPoint(), new Point2D(rectangle2D .getBottom(), rectangle2D.getRight())); geometry.rotate(geometry.getInnerPoint(), 30); geometry.resize(new Rectangle2D(0, 0, 1024, 1024)); } // 释放资源 recordset.dispose(); dataset.close(); geometry.dispose(); }
public void resize(Rectangle2D bounds)
对于几何点,该方法只改变其位置,将其移动到指定的矩形的中心点;对于文本对象,该方法将缩放文本大小。
如图所示为对面对象的缩放的效果。
当传入的矩形对象的面积为0时,抛出异常 ArgumentInvalid。
bounds
- 调整大小后几何对象的范围。IllegalArgumentException
- 如果 bounds 的面积为0。public void rotate(Point2D basePoint, double angle)
以指定点为基点将此几何对象旋转指定角度,逆时针方向为正方向,角度以度为单位。目前三维矢量面 GeoRegion3D
不支持旋转 rotate 的方法。如果想使用旋转功能,需要先使用二维矢量面的旋转方法,再添加到三维场景中。
如图所示的是对面对象以指定基点旋转90度后的效果。
basePoint
- 旋转的基点。angle
- 旋转的角度,单位为度。public void setEmpty()
public String toXML()
注意:几何对象输出的 XML 字符串只含有该几何对象的地理坐标值,不含有该几何对象的风格和 ID 等信息。
Geometry.offset(double, double)
Geometry.offset()
方法的示例。public abstract void dispose()
public static void addCustomGeometryCreatedListener(CustomGeometryCreatedListener l)
CustomGeometryCreatedEvent
)的监听器。l
- 一个用于接收自定义几何对象创建结束事件的监听器。public static void removeCustomGeometryCreatedListener(CustomGeometryCreatedListener l)
CustomGeometryCreatedEvent
)的监听器。l
- 一个用于接收自定义几何对象创建结束事件的监听器。Copyright © 2021–2024 SuperMap. All rights reserved.