com.supermap.data
类 Geometry

java.lang.Object
  继承者 com.supermap.data.Geometry
直接已知子类:
GeoArc, GeoBezier3Curve, GeoBSpline, GeoCardinal, GeoChord, GeoCircle, GeoCompound, GeoCompoundCurve, GeoCurve, GeoCurvePolygon, GeoEllipse, GeoEllipticArc, GeoEntity, GeoGraphicCompound, GeoLegend, GeoLine, GeoLineM, GeoMap, GeoMapBorder, GeoMapGrid, GeoMapScale, Geometry3D, GeometryEPS, GeometryParametric, GeoMultiCurve, GeoMultiSurface, GeoNorthArrow, GeoPicture, GeoPie, GeoPoint, GeoRectangle, GeoRegion, GeoRoundRectangle, GeoText, GeoUserDefined

public abstract class Geometry
extends java.lang.Object

所有具体几何类型(GeoPoint, GeoLine, GeoRegion 等)的基类,提供了基本的几何类型的方法。

该类用于表示地理实体的空间特征,并提供相关的处理方法。根据地理实体的空间特征不同,分别用点(GeoPoint),线(GeoLine),面(GeoRegion)等加以描述。当该类的子类的对象实例被 dispose 后,再调用该类的方法会抛出 ObjectDisposedException。

用户自己创建的 Geometry 对象,例如 GeoPointGeoLineGeoRegion 等对象,在执行完系列操作后,需要对其进行释放。


方法摘要
 void addCustomGeometryCreatedListener(CustomGeometryCreatedListener l)
          添加一个用于接收自定义几何对象创建结束事件(CustomGeometryCreatedEvent)的监听器。
 void dispose()
          释放该对象所占用的资源。
 boolean fromXML(java.lang.String xml)
          根据传入的 XML 字符串重新构造几何对象。
 Rectangle2D getBounds()
          返回几何对象的最小外接矩形。
 int getID()
          返回几何对象的标识符,此标识符用于唯一标识该几何对象。
 Point2D getInnerPoint()
          返回几何对象的内点。
 GeoStyle getStyle()
          返回几何对象的几何风格。
 GeometryType getType()
          返回几何对象的类型。
 java.lang.Object getVariantID()
          返回几何对象的 ID 标识符,此标识符用于唯一标识该几何对象。
 boolean hitTest(Point2D point, double tolerance)
          测试在指定容限允许的范围内,指定的点是否在几何对象的范围内。
 boolean isEmpty()
          判断几何对象是否为空值,不同的几何对象的是否为空的条件各异,请参见各具体几何类型的该方法。
 Geometry mirror(Point2D startPoint, Point2D endPoint)
          返回此几何对象关于指定线段对称的几何对象。
 void offset(double dx, double dy)
          将此几何对象偏移指定的量。
 void removeCustomGeometryCreatedListener(CustomGeometryCreatedListener l)
          移除一个用于接收自定义几何对象创建结束事件(CustomGeometryCreatedEvent)的监听器。
 void resize(Rectangle2D bounds)
          缩放此几何对象,使其最小外接矩形等于指定的矩形对象。
 void rotate(Point2D basePoint, double angle)
          以指定点为基点将此几何对象旋转指定角度,逆时针方向为正方向,角度以度为单位。
 void setEmpty()
          清空几何对象中的空间数据,但几何对象的标识符和几何风格保持不变。
 void setID(int value)
          设置几何对象的标识符,此标识符用于唯一标识该几何对象。
 void setStyle(GeoStyle value)
          设置几何对象的风格。
 java.lang.String toXML()
          根据 GML 3.0 规范,将该几何对象的空间数据输出为 XML 字符串。
 
从类 java.lang.Object 继承的方法
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

方法详细信息

getBounds

public Rectangle2D getBounds()
返回几何对象的最小外接矩形。点对象的最小外接矩形退化为一个点,即矩形的左边界坐标值等于其右边界坐标值,上边界坐标值等于其下边界的坐标值,分别为该点的 x 坐标和 y 坐标。

返回:
一个 Rectangle2D 对象表示几何对象的最小外接矩形。
另请参见:
Rectangle2D
默认值:
默认值为 Rectangle2D(0,0,0,0)。

getInnerPoint

public Point2D getInnerPoint()
返回几何对象的内点。对于不同的几何对象,其位置不同。
  1. 点对象的内点是该点本身;
  2. 线对象的内点是线对象的第一个子对象的内点(当线对象只有一个子对象时,取该子对象的内点),当该子对象有奇数个节点时,取中间一个节点为内点,当该子对象有偶数个节点时(多于两个节点的情况),取中间两个节点之后者,当该子对象有两个节点时,取两节点之中心为内点;
  3. 面对象的内点是在几何对象的内部,并靠近中央的点;
  4. 文本对象的内点是该文本对象的第一个子对象的锚点。

内点可以在很多情况下被使用,例如,当创建标签专题图时,几何对象的内点将作为标签专题图的锚点。

返回:
几何对象的内点。
默认值:
默认值为 Point2D(0,0)。

getID

public int getID()
返回几何对象的标识符,此标识符用于唯一标识该几何对象。

返回:
该几何对象的标识符。

getVariantID

public java.lang.Object getVariantID()
返回几何对象的 ID 标识符,此标识符用于唯一标识该几何对象。

返回:
成功返回该几何对象的 ID 标识符,失败返回空值。

setID

public void setID(int value)
设置几何对象的标识符,此标识符用于唯一标识该几何对象。

参数:
value - 表示几何对象的标识符的整数。

isEmpty

public boolean isEmpty()
判断几何对象是否为空值,不同的几何对象的是否为空的条件各异,请参见各具体几何类型的该方法。

返回:
一个布尔值指定几何对象是否为空。
另请参见:
offset(double, double)
示例:
请参见 Geometry.offset() 方法的示例。
默认值:
如果几何对象为空值则为 true,否则为 false。默认值为 true。

getStyle

public GeoStyle getStyle()
返回几何对象的几何风格。几何风格是用于定义几何对象在显示时的符号、线型、填充模式等信息。

返回:
几何对象的风格。
默认值:
默认值为 null。

setStyle

public void setStyle(GeoStyle value)
设置几何对象的风格。几何风格是用于定义几何对象在显示时的符号、线型、填充模式等信息。

参数:
value - 用来设置几何对象风格的 GeoStyle 对象。
另请参见:
offset(double, double)
示例:
请参见 Geometry.offset() 方法的示例。

getType

public GeometryType getType()
返回几何对象的类型。该方法的返回值为 GeometryType 类所定义的常量值之一,具体请参见 GeometryType类。

返回:
几何对象的类型。
另请参见:
GeometryType

fromXML

public boolean fromXML(java.lang.String xml)
根据传入的 XML 字符串重新构造几何对象。该 XML 必须符合 GML3.0 规范。

调用该方法时,首先将该几何对象的原始数据清空,然后根据传入的 XML 字符串重新构造该几何对象。

GML (Geography Markup Language)即地理标识语言, GML 能够表示地理空间对象的空间数据和非空间属性数据。GML 是基于 XML 的空间信息编码标准,由开放式地理信息系统协会 OpenGIS Consortium (OGC) 提出,得到了许多公司的大力支持,如 Oracle、Galdos、MapInfo、CubeWerx 等。

GML 作为一个空间数据编码规范,提供了一套基本的标签、公共的数据模型,以及用户构建应用模式(GML Application Schemas)的机制。

参数:
xml - XML 格式的字符串。
返回:
如果构造成功返回 true,否则返回 false。
另请参见:
offset(double, double)
示例:
请参见 Geometry.offset() 方法的示例。

toXML

public java.lang.String toXML()
根据 GML 3.0 规范,将该几何对象的空间数据输出为 XML 字符串。

注意:几何对象输出的 XML 字符串只含有该几何对象的地理坐标值,不含有该几何对象的风格和 ID 等信息。

返回:
表示几何对象的 XML 字符串。
另请参见:
offset(double, double)
示例:
请参见 Geometry.offset() 方法的示例。

hitTest

public boolean hitTest(Point2D point,
                       double tolerance)
测试在指定容限允许的范围内,指定的点是否在几何对象的范围内。

即判断以测试点为圆心,以指定的容限为半径的圆是否与该几何对象有交集,若有交集,则返回 true;否则返回 false。

参数:
point - 测试点。
tolerance - 容限值,单位与数据集的单位相同。
返回:
测试结果,点中了该几何对象返回 true;否则返回 false。
另请参见:
Point2D

mirror

public Geometry mirror(Point2D startPoint,
                       Point2D endPoint)
返回此几何对象关于指定线段对称的几何对象。文本对象不支持该方法。

参数:
startPoint - 线段的起点。
endPoint - 线段的终点。
返回:
该几何对象关于指定对称的几何对象。
另请参见:
offset(double,double)
示例:
请参见 Geometry.offset() 方法的示例。

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();
    }
 

resize

public void resize(Rectangle2D bounds)
缩放此几何对象,使其最小外接矩形等于指定的矩形对象。

对于几何点,该方法只改变其位置,将其移动到指定的矩形的中心点;对于文本对象,该方法将缩放文本大小。

如图所示为对面对象的缩放的效果。

当传入的矩形对象的面积为0时,抛出异常 ArgumentInvalid。

参数:
bounds - 调整大小后几何对象的范围。
抛出:
ArgumentInvalid - 如果 bounds 的面积为0。

rotate

public void rotate(Point2D basePoint,
                   double angle)

以指定点为基点将此几何对象旋转指定角度,逆时针方向为正方向,角度以度为单位。目前三维矢量面 GeoRegion3D 不支持旋转 rotate 的方法。如果想使用旋转功能,需要先使用二维矢量面的旋转方法,再添加到三维场景中。

如图所示的是对面对象以指定基点旋转90度后的效果。

参数:
basePoint - 旋转的基点。
angle - 旋转的角度,单位为度。

setEmpty

public void setEmpty()
清空几何对象中的空间数据,但几何对象的标识符和几何风格保持不变。


addCustomGeometryCreatedListener

public void addCustomGeometryCreatedListener(CustomGeometryCreatedListener l)
添加一个用于接收自定义几何对象创建结束事件(CustomGeometryCreatedEvent)的监听器。

参数:
l - 一个用于接收自定义几何对象创建结束事件的监听器。

removeCustomGeometryCreatedListener

public void removeCustomGeometryCreatedListener(CustomGeometryCreatedListener l)
移除一个用于接收自定义几何对象创建结束事件(CustomGeometryCreatedEvent)的监听器。

参数:
l - 一个用于接收自定义几何对象创建结束事件的监听器。

dispose

public void dispose()
释放该对象所占用的资源。当调用该方法之后,此对象不再可用。