public class Generalization extends Object
限定符和类型 | 方法和说明 |
---|---|
static void |
addSteppedListener(SteppedListener l)
添加一个进度条事件(
SteppedEvent )的监听器。 |
static boolean |
aggregatePoints(DatasetVector pointDataset,
double distance,
Unit unit,
int minPilePointCount,
Datasource outDatasource,
String resultRegionDatasetName,
String resultClassFieldName)
已过时。
|
static boolean |
aggregatePoints(DatasetVector pointDataset,
double distance,
Unit unit,
int minPilePointCount,
Datasource outDatasource,
String resultRegionDatasetName,
String resultClassFieldName,
SteppedListener... listeners)
对点数据集进行聚类,使用密度聚类算法,返回聚类后的类别或同一簇构成的多边形。
|
static boolean |
aggregatePoints(DatasetVector pointDataset,
int aggregateCount,
String weightFieldName,
Datasource outDatasource,
String resultRegionDatasetName,
String resultClassFieldName)
已过时。
|
static DatasetVector |
aggregatePolygons(DatasetVector sourceDataset,
Datasource targetDatasource,
String targetDatasetName,
AggregatePolygonParameter param,
SteppedListener... listeners)
面聚合。
|
static GeoRegion[] |
autoCompletePolygon(DatasetVector regionDataset,
Rectangle2D bounds,
GeoLine geoLine)
拓扑自动构面。
|
static DatasetVector |
createRandomPoints(DatasetVector sourceDatasetVector,
RandomPointsParameter randomPointsParameter,
Datasource targetDatasource,
String targetDatasetName)
创建随机点。
|
static DatasetVector |
createRandomPoints(DatasetVector sourceDatasetVector,
RandomPointsParameter randomPointsParameter,
Datasource targetDatasource,
String targetDatasetName,
SteppedListener... listeners)
创建随机点
|
static DatasetVector |
createStripMapPages(DatasetVector sourceDataset,
DatasetVector barriersDataset,
Datasource targetDatasource,
String outputDatasetName,
double aLengthAlongTheLine,
double aLengthPerpendicularToTheLine,
double dDistanceFromFirstPointOfTheEdge,
double dOverlapDistance,
SteppedListener... listeners)
创建带状分幅页面。
|
static DatasetVector |
createStripMapPages(DatasetVector sourceDataset,
DatasetVector barriersDataset,
Datasource targetDatasource,
String outputDatasetName,
double aLengthAlongTheLine,
double aLengthPerpendicularToTheLine,
SteppedListener... listeners)
创建带状分幅页面。
|
static DatasetVector |
createVectorPyramid(DatasetVector targetDataset,
int nMinLevel,
int nMaxLevel,
int nStep,
double weight,
VectorPyramidMethod method,
boolean separateStorage,
SteppedListener... listeners)
创建矢量金字塔。
|
static DatasetVector |
createVectorPyramid(DatasetVector targetDataset,
int nMinLevel,
int nMaxLevel,
int nStep,
double weight,
VectorPyramidMethod method,
SteppedListener... listeners)
创建矢量金字塔。
|
static DatasetVector |
dissolve(DatasetVector sourceDatasetVector,
Datasource targetDatasource,
String targetDatasetName,
DissolveParameter dissolveParameter)
已过时。
此方法已废弃,请使用支持进度监听的新方法
Generalization.dissolve(DatasetVector, Datasource, String, DissolveParameter, SteppedListener...) 替换。 |
static DatasetVector |
dissolve(DatasetVector sourceDatasetVector,
Datasource targetDatasource,
String targetDatasetName,
DissolveParameter dissolveParameter,
SteppedListener... listeners)
矢量数据融合,返回结果矢量数据集。
|
static GeoLine[] |
dualLineToCenterLine(Recordset sourceRecordset,
double maxWidth,
double minWidth)
根据给定的宽度从双线记录集中提取中心线。
|
static DatasetVector |
dualLineToCenterLine(Recordset sourceRecordset,
double maxWidth,
double minWidth,
Datasource outputDatasource,
String outputDatasetName)
根据给定的宽度从双线记录集中提取中心线。
|
static DatasetVector |
dualLineToCenterLine(Recordset sourceRecordset,
double maxWidth,
double minWidth,
Datasource outputDatasource,
String outputDatasetName,
SteppedListener... listeners)
双线提取中心线
|
static GeoLine[] |
dualLineToCenterLine(Recordset sourceRecordset,
double maxWidth,
double minWidth,
SteppedListener... listeners)
双线提取中心线
|
static boolean |
edgeMatch(DatasetVector sourceDatasetVector,
DatasetVector targetDatasetVector,
EdgeMatchParameter edgeMatchParameter)
已过时。
此方法已废弃,请使用支持进度监听的新方法
Generalization.edgeMatch(DatasetVector, DatasetVector, EdgeMatchParameter, SteppedListener...) 替换。 |
static boolean |
edgeMatch(DatasetVector sourceDatasetVector,
DatasetVector targetDatasetVector,
EdgeMatchParameter edgeMatchParameter,
SteppedListener... listeners)
图幅接边功能。
|
static boolean |
eliminate(DatasetVector sourceDatasetVector,
double regionTolerance,
double vertexTolerance,
EliminateMode eliminateMode,
boolean isDeleteSingleRegion)
已过时。
此方法已废弃,请使用支持进度监听的新方法
Generalization.eliminate(DatasetVector, double, double, EliminateMode, boolean, SteppedListener...) 替换。 |
static boolean |
eliminate(DatasetVector sourceDatasetVector,
double regionTolerance,
double vertexTolerance,
EliminateMode eliminateMode,
boolean isDeleteSingleRegion,
SteppedListener... listeners)
碎多边形合并,即将数据集中小于指定面积的多边形合并到相邻的多边形中。
|
static boolean |
eliminate(DatasetVector sourceDatasetVector,
String[] groupFields,
String[] priorityFields,
double regionTolerance,
double vertexTolerance,
EliminateMode eliminateMode,
boolean isDeleteSingleRegion)
碎多边形合并,即将数据集中小于指定面积的多边形合并到相邻的多边形中,支持优先级字段和分组字段。
|
static boolean |
eliminate(DatasetVector sourceDatasetVector,
String[] groupFields,
String[] priorityFields,
double regionTolerance,
double vertexTolerance,
EliminateMode eliminateMode,
boolean isDeleteSingleRegion,
SteppedListener... listeners)
碎多边形合并
|
static boolean |
eliminateLine(DatasetVector sourceDatasetVector,
String newDatasetName,
String groupField,
double noteLineTolerance)
碎线合并
|
static boolean |
eliminateLine(DatasetVector sourceDatasetVector,
String newDatasetName,
String groupField,
double noteLineTolerance,
SteppedListener... listeners)
碎线合并
|
static boolean |
eliminateSpecifiedRegions(DatasetVector sourceDatasetVector,
int[] smallRegionIDs,
int[] excludeRegionIDs,
String[] groupFields,
String[] priorityFields,
boolean isMaxBorder,
double vertexTolerance)
碎多边形合并,需要指定被合并的多边形的 ID,支持优先级字段和分组字段。
|
static boolean |
eliminateSpecifiedRegions(DatasetVector sourceDatasetVector,
int[] smallRegionIDs,
int[] excludeRegionIDs,
String[] groupFields,
String[] priorityFields,
boolean isMaxBorder,
double vertexTolerance,
SteppedListener... listeners)
指定要被合并的多边形的 ID,进行碎多边形合并操作。
|
static DatasetVector |
featureEnvelope(DatasetVector sourceDataset,
String targetDatasetName,
Datasource targetDatasource)
已过时。
此方法已废弃,请使用支持进度监听的新方法
Generalization.featureEnvelope(DatasetVector, String, Datasource, SteppedListener...) 替换。 |
static DatasetVector |
featureEnvelope(DatasetVector sourceDataset,
String targetDatasetName,
Datasource targetDatasource,
boolean isSinglePart)
已过时。
此方法已废弃,请使用支持进度监听的新方法
Generalization.featureEnvelope(DatasetVector, String, Datasource, boolean, SteppedListener...) 替换。 |
static DatasetVector |
featureEnvelope(DatasetVector sourceDataset,
String targetDatasetName,
Datasource targetDatasource,
boolean isSinglePart,
SteppedListener... listeners)
对象范围面
|
static DatasetVector |
featureEnvelope(DatasetVector sourceDataset,
String targetDatasetName,
Datasource targetDatasource,
SteppedListener... listeners)
对象范围面
|
static boolean |
integrate(DatasetVector sourceDatasetVector,
double tolerance,
Unit unit)
已过时。
|
static boolean |
integrate(DatasetVector sourceDatasetVector,
double tolerance,
Unit unit,
SteppedListener... listeners)
已过时。
|
static boolean |
isPrjCoordSysIdentical(PrjCoordSys sourcePrjCoordSys,
PrjCoordSys targetPrjCoordSys)
判断坐标系是否一致。
|
static boolean |
lineAttachRegion(GeoLine geoLine,
GeoRegion geoRegion,
List<GeoRegion> listRegionCompare,
double toleranceLineAttachRegion,
double toleranceRegionMerge,
double toleranceChange,
boolean isUsePreProcess)
线靠面功能,此接口主要用于国土数据处理,例如,在国土数据处理中,对于扣除比例为0.5的情况,会把线靠到两个面的公共线上。
|
static DatasetVector |
pointsRegionalization(DatasetVector sourceDataset,
Datasource targetDatasource,
String targetDatasetName,
double dDistance,
Unit distanceUnit,
SteppedListener... listeners)
点群区域化。
|
static GeoLine |
regionToCenterLine(GeoRegion sourceRegion)
提取面对象的中心线,一般用于提取河流的中心线。
|
static GeoLine |
regionToCenterLine(GeoRegion sourceRegion,
Point2D pointFrom,
Point2D pointTo)
根据给定的起点和终点提取面对象的中心线,一般用于提取河流的中心线。
|
static DatasetVector |
regionToCenterLine(Recordset regionRecordset,
Datasource outputDatasource,
String outputDatasetName)
提取面记录集的中心线,一般用于提取河流的中心线。
|
static DatasetVector |
regionToCenterLine(Recordset regionRecordset,
Datasource outputDatasource,
String outputDatasetName,
SteppedListener... listeners)
面提取中心线
|
static DatasetVector |
regularizeBuildingFootprint(DatasetVector sourceDataset,
Datasource targetDatasource,
String targetDatasetName,
RegularizeParameter param,
boolean isAttributeRetained,
SteppedListener... listeners) |
static void |
removeSteppedListener(SteppedListener l)
移除一个进度条事件(
SteppedEvent )的监听器。 |
static DatasetVector |
vectorResample(DatasetVector srcDataset,
ResampleInformation resampleInformation,
Datasource targetDatasource,
String targetDatasetName,
SteppedListener... listeners)
矢量重采样。
|
@Deprecated public static DatasetVector dissolve(DatasetVector sourceDatasetVector, Datasource targetDatasource, String targetDatasetName, DissolveParameter dissolveParameter)
Generalization.dissolve(DatasetVector, Datasource, String, DissolveParameter, SteppedListener...)
替换。融合是指将融合字段值相同的对象合并为一个简单对象或复杂对象。适用于线对象和面对象。子对象是构成简单对象和复杂对象的基本对象。简单对象由一个子对象组成,即简单对象本身;复杂对象由两个或两个以上相同类型的子对象组成。
调用该方法时,需要通过 dissolveParameter 参数指定一个融合参数(DissolveParameter
)对象,该对象用于指定融合所需的参数,如融合类型、融合字段、融合容限、统计字段及统计类型、过滤表达式,以及是否进行拓扑预处理、是否处理融合字段为空的对象等。
矢量数据的融合有三种方式:ONLYMULTIPART(组合)、SINGLE(融合)和 MULTIPART(融合后组合),详细介绍请参见 DissolveType
类。
sourceDatasetVector
- 指定的待融合的矢量数据集。必须为线数据集或面数据集。targetDatasource
- 指定的用于存储结构数据集的数据源。targetDatasetName
- 指定的结果数据集的名称。dissolveParameter
- 指定的融合参数。IllegalArgumentException
- 如果 sourceDataset 参数指定的数据集类型不为线或面public static DatasetVector dissolve(DatasetVector sourceDatasetVector, Datasource targetDatasource, String targetDatasetName, DissolveParameter dissolveParameter, SteppedListener... listeners)
融合是指将融合字段值相同的对象合并为一个简单对象或复杂对象。适用于线对象和面对象。子对象是构成简单对象和复杂对象的基本对象。简单对象由一个子对象组成,即简单对象本身;复杂对象由两个或两个以上相同类型的子对象组成。
调用该方法时,需要通过 dissolveParameter 参数指定一个融合参数(DissolveParameter
)对象,该对象用于指定融合所需的参数,如融合类型、融合字段、融合容限、统计字段及统计类型、过滤表达式,以及是否进行拓扑预处理、是否处理融合字段为空的对象等。
矢量数据的融合有三种方式:ONLYMULTIPART(组合)、SINGLE(融合)和 MULTIPART(融合后组合),详细介绍请参见 DissolveType
类。
sourceDatasetVector
- 指定的待融合的矢量数据集。必须为线数据集或面数据集。targetDatasource
- 指定的用于存储结构数据集的数据源。targetDatasetName
- 指定的结果数据集的名称。dissolveParameter
- 指定的融合参数。listeners
- 用于接收进度条事件的监听器。IllegalArgumentException
- 如果 sourceDataset 参数指定的数据集类型不为线或面@Deprecated public static boolean eliminate(DatasetVector sourceDatasetVector, double regionTolerance, double vertexTolerance, EliminateMode eliminateMode, boolean isDeleteSingleRegion)
Generalization.eliminate(DatasetVector, double, double, EliminateMode, boolean, SteppedListener...)
替换。在数据制作和处理过程中,或对不精确的数据进行叠加后,都可能产生一些细碎而无用的多边形,称为碎多边形。可以通过“碎多边形合并”功能将这些细碎多边形合并到相邻的多边形中,或删除孤立的碎多边形(没有与其他多边形相交或者相切的多边形),以达到简化数据的目的。
一般面积远远小于数据集中其他对象的多边形才被认为是“碎多边形”,通常是同一数据集中最大面积的百万分之一到万分之一间,但可以依据实际研究的需求来设置最小多边形容限。如下图所示的数据中,在较大的多边形的边界上,有很多无用的碎多边形。
下图是对该数据进行“碎多边形合并”处理后的结果,与上图对比可以看出,碎多边形都被合并到了相邻的较大的多边形中。
对于面积小于指定的最小多边形容限的孤立多边形,如果将该方法的 isDeleteSingleRegion 参数设置为 true,将会删除这些孤立的碎多边形,如下图所示。
注意:
sourceDatasetVector
- 指定的待进行碎多边形合并的数据集。只支持矢量二维面数据集,指定其他类型的数据集会抛出异常。regionTolerance
- 指定的最小多边形容限。单位与系统计算的面积(SMAREA 字段)的单位一致。将 SMAREA 字段的值与该容限值对比,小于该值的多边形将被消除。取值范围为大于等于0,指定为小于0的值会抛出异常。vertexTolerance
- 指定的节点容限。单位与进行碎多边形合并的数据集单位相同。若两个节点之间的距离小于此容限值,则合并过程中会自动将这两个节点合并为一个节点。取值范围大于等于0,指定为小于0的值会抛出异常。eliminateMode
- 指定的碎多边形合并方式。目前仅支持“按面积合并”(EliminateMode.ELIMINATE_BY_AREA
)方式,即将碎多边形合并到与其相邻的具有最大面积的多边形中。isDeleteSingleRegion
- 指定是否删除孤立的小多边形。如果为 true 会删除孤立的小多边形,否则不删除。public static boolean eliminate(DatasetVector sourceDatasetVector, double regionTolerance, double vertexTolerance, EliminateMode eliminateMode, boolean isDeleteSingleRegion, SteppedListener... listeners)
在数据制作和处理过程中,或对不精确的数据进行叠加后,都可能产生一些细碎而无用的多边形,称为碎多边形。可以通过“碎多边形合并”功能将这些细碎多边形合并到相邻的多边形中,或删除孤立的碎多边形(没有与其他多边形相交或者相切的多边形),以达到简化数据的目的。
一般面积远远小于数据集中其他对象的多边形才被认为是“碎多边形”,通常是同一数据集中最大面积的百万分之一到万分之一间,但可以依据实际研究的需求来设置最小多边形容限。如下图所示的数据中,在较大的多边形的边界上,有很多无用的碎多边形。
下图是对该数据进行“碎多边形合并”处理后的结果,与上图对比可以看出,碎多边形都被合并到了相邻的较大的多边形中。
对于面积小于指定的最小多边形容限的孤立多边形,如果将该方法的 isDeleteSingleRegion 参数设置为 true,将会删除这些孤立的碎多边形,如下图所示。
注意:
sourceDatasetVector
- 指定的待进行碎多边形合并的数据集。只支持矢量二维面数据集,指定其他类型的数据集会抛出异常。regionTolerance
- 指定的最小多边形容限。单位与系统计算的面积(SMAREA 字段)的单位一致。将 SMAREA 字段的值与该容限值对比,小于该值的多边形将被消除。取值范围为大于等于0,指定为小于0的值会抛出异常。vertexTolerance
- 指定的节点容限。单位与进行碎多边形合并的数据集单位相同。若两个节点之间的距离小于此容限值,则合并过程中会自动将这两个节点合并为一个节点。取值范围大于等于0,指定为小于0的值会抛出异常。eliminateMode
- 指定的碎多边形合并方式。目前仅支持“按面积合并”(EliminateMode.ELIMINATE_BY_AREA
)方式,即将碎多边形合并到与其相邻的具有最大面积的多边形中。isDeleteSingleRegion
- 指定是否删除孤立的小多边形。如果为 true 会删除孤立的小多边形,否则不删除。listeners
- 用于接收进度条事件的监听器。public static boolean eliminateLine(DatasetVector sourceDatasetVector, String newDatasetName, String groupField, double noteLineTolerance)
sourceDatasetVector
- 待合并的矢量线数据集newDatasetName
- 合并后新生成的数据集名字groupField
- 合并参考字段,只有字段值相同的矢量线才会合并noteLineTolerance
- 合并节点容限public static boolean eliminateLine(DatasetVector sourceDatasetVector, String newDatasetName, String groupField, double noteLineTolerance, SteppedListener... listeners)
sourceDatasetVector
- 待合并的矢量线数据集newDatasetName
- 合并后新生成的数据集名字groupField
- 合并参考字段,只有字段值相同的矢量线才会合并noteLineTolerance
- 合并节点容限public static boolean eliminate(DatasetVector sourceDatasetVector, String[] groupFields, String[] priorityFields, double regionTolerance, double vertexTolerance, EliminateMode eliminateMode, boolean isDeleteSingleRegion)
优先级字段使用说明:
如图为例,用户指定了 A、B、C 三个优先级字段:
sourceDatasetVector
- 待进行碎多边形合并的矢量面数据集。groupFields
- 分组字段,字段值相同的多边形才可能进行合并。priorityFields
- 合并对象的优先级字段,当分组字段不为空时有效。用户可以指定多个优先级字段或不指定。regionTolerance
- 指定的最小多边形容限。单位与系统计算的面积(SMAREA 字段)的单位一致。将 SMAREA 字段的值与该容限值对比,小于该值的多边形将被消除。取值范围为大于等于0,指定为小于0的值会抛出异常。vertexTolerance
- 指定的节点容限。单位与进行碎多边形合并的数据集单位相同。若两个节点之间的距离小于此容限值,则合并过程中会自动将这两个节点合并为一个节点。取值范围大于等于0,指定为小于0的值会抛出异常。eliminateMode
- 指定的碎多边形合并方式。目前仅支持“按面积合并”(EliminateMode.ELIMINATE_BY_AREA
)方式,即将碎多边形合并到与其相邻的具有最大面积的多边形中。isDeleteSingleRegion
- 指定是否删除孤立的小多边形。如果为 true 会删除孤立的小多边形,否则不删除。public static boolean eliminate(DatasetVector sourceDatasetVector, String[] groupFields, String[] priorityFields, double regionTolerance, double vertexTolerance, EliminateMode eliminateMode, boolean isDeleteSingleRegion, SteppedListener... listeners)
sourceDatasetVector
- 待合并的矢量面数据集groupFields
- 分组字段,字段值相同的多边形才可能进行合并priorityFields
- 合并对象的优先级字段,当分组字段不为空时有效。用户可以指定多个优先级字段或不指定。
如果指定优先级字段,则按照字段顺序,当被合并的多边形的字段值等于相邻多边形的字段值时,则合并到对应的多边形上,如果不相等,则比较下一个优先级字段的字段值。
如果所有优先级字段值都不相等,则默认合并到相邻的面积最大的多边形上。
例如,用户指定了 A、B、C 三个优先级字段,当被合并的多边形 F1 中 A 字段值等于相邻对象 F2 的 A 字段值时,则 F1 被合并到 F2 中;
如果 A 字段值不相等,则比较 B 字段值,如果 F1 的 B 字段值等于相邻对象的 F2 的 B 字段值,但同时等于 F3 的 A 字段值,则将 F1 合并到 F3 中,因为 A 字段具有更高的优先级。
如果 F2 和 F3 两个对象的 A 字段值都等于 F1 的 A 字段值,则默认使用面积最大的多边形,即,如果 Area(F2) > Area(F3),则 F1 合并到 F2,否则合并到 F3
当优先级字段为空时,使用面积最大原则,即小多边形(被合并的多边形)将会被合并到面积最大的多边形上。regionTolerance
- 碎多边形面积,小于此面积的多边形将会被合并vertexTolerance
- 节点容限eliminateMode
- 合并模式设置isDeleteSingleRegion
- 是否自动删除孤立的小多边形public static boolean eliminateSpecifiedRegions(DatasetVector sourceDatasetVector, int[] smallRegionIDs, int[] excludeRegionIDs, String[] groupFields, String[] priorityFields, boolean isMaxBorder, double vertexTolerance)
优先级字段使用说明:
如图为例,用户指定了 A、B、C 三个优先级字段:
sourceDatasetVector
- 待进行碎多边形合并的矢量面数据集。smallRegionIDs
- 指定被合并的小多边形的 ID,指定的对象如果找到符合要求的临近对象,则会被合并到临近对象中,小多边形会被删除。excludeRegionIDs
- 指定要排除的多边形的ID,即不参与运算的对象 ID。groupFields
- 分组字段,字段值相同的多边形才可能进行合并。priorityFields
- 合并对象的优先级字段,当分组字段不为空时有效。用户可以指定多个优先级字段或不指定。isMaxBorder
- 设置合并对象时是否以最大边界方式合并,如果为 true,则指定的小多边形会被合并到临近的公共边界最长的多边形上,否则,则会被合并到临近的面积最大的多边形上。vertexTolerance
- 指定的节点容限。单位与进行碎多边形合并的数据集单位相同。若两个节点之间的距离小于此容限值,则合并过程中会自动将这两个节点合并为一个节点。取值范围大于等于0,指定为小于0的值会抛出异常。public static boolean eliminateSpecifiedRegions(DatasetVector sourceDatasetVector, int[] smallRegionIDs, int[] excludeRegionIDs, String[] groupFields, String[] priorityFields, boolean isMaxBorder, double vertexTolerance, SteppedListener... listeners)
sourceDatasetVector
- 待合并的矢量面数据集smallRegionIDs
- 指定被合并的小多边形的 ID,指定的对象如果找到符合要求的临近对象,则会被合并到临近对象中,小多边形会被删除excludeRegionIDs
- 指定要排除的多边形的ID,即不参与运算的的对象 IDgroupFields
- 分组字段,字段值相同的多边形才可能进行合并priorityFields
- 合并对象的优先级字段,当分组字段不为空时有效。用户可以指定多个优先级字段或不指定。
如果指定优先级字段,则按照字段顺序,当被合并的多边形的字段值等于相邻多边形的字段值时,则合并到对应的多边形上,如果不相等,则比较下一个优先级字段的字段值。
如果所有优先级字段值都不相等,则默认合并到相邻的面积最大的多边形上或公共边界最长的多边形上
例如,用户指定了 A、B、C 三个优先级字段,当被合并的多边形 F1 中 A 字段值等于相邻对象 F2 的 A 字段值时,则 F1 被合并到 F2 中;
如果 A 字段值不相等,则比较 B 字段值,如果 F1 的 B 字段值等于相邻对象的 F2 的 B 字段值,但同时等于 F3 的 A 字段值,则将 F1 合并到 F3 中,因为 A 字段具有更高的优先级。
如果 F2 和 F3 两个对象的 A 字段值都等于 F1 的 A 字段值,则默认使用面积最大的多边形或公共边界最大的多边形
当优先级字段为空时,使用面积最大原则,即小多边形(被合并的多边形)将会被合并到面积最大的多边形或公共边界最长的多边形上。isMaxBorder
- 设置合并对象时是否以最大边界方式合并,如果为 true,则指定的小多边形会被合并到临近的公共边界最长的多边形上,否则,则会被合并到临近的面积最大的多边形上。vertexTolerance
- 节点容限public static DatasetVector dualLineToCenterLine(Recordset sourceRecordset, double maxWidth, double minWidth, Datasource outputDatasource, String outputDatasetName)
该功能一般用于提取双线道路或河流的中心线。双线要求连续且平行或基本平行,提取效果如下图。
注意:
sourceRecordset
- 指定的双线记录集。要求记录集所属的数据集类型为线或者面。maxWidth
- 指定的双线的最大宽度。要求为大于 0 的值。单位与双线记录集所属的数据集相同。minWidth
- 指定的双线的最小宽度。要求为大于或等于 0 的值。单位与双线记录集所属的数据集相同。outputDatasource
- 指定的用于存储结果中心线数据集的数据源。outputDatasetName
- 指定的结果中心线数据集的名称。IllegalArgumentException
- 如果 maxWidth 小于或等于 0,或 minWidth 小于 0public static DatasetVector dualLineToCenterLine(Recordset sourceRecordset, double maxWidth, double minWidth, Datasource outputDatasource, String outputDatasetName, SteppedListener... listeners)
sourceRecordset
- 要提取中心线的记录集maxWidth
- 最大宽度minWidth
- 最小宽度outputDatasource
- 输出中心线数据集所在的数据源outputDatasetName
- 输出中心线数据集的名字public static GeoLine[] dualLineToCenterLine(Recordset sourceRecordset, double maxWidth, double minWidth)
sourceRecordset
- 指定的双线记录集。要求记录集所属的数据集类型为线或者面。maxWidth
- 指定的双线的最大宽度。要求为大于 0 的值。单位与双线记录集所属的数据集相同。minWidth
- 指定的双线的最小宽度。要求为大于或等于 0 的值。单位与双线记录集所属的数据集相同。public static GeoLine[] dualLineToCenterLine(Recordset sourceRecordset, double maxWidth, double minWidth, SteppedListener... listeners)
sourceRecordset
- 要提取中心线的记录集maxWidth
- 双线宽度public static DatasetVector regionToCenterLine(Recordset regionRecordset, Datasource outputDatasource, String outputDatasetName)
该方法提取面记录集中每一个面对象的中心线。有关面提取中心线的介绍,请参阅 regionToCeterLine
方法。
regionRecordset
- 指定的待提取中心线的面记录集。outputDatasource
- 指定的用于存储结果数据集的数据源。outputDatasetName
- 指定的结果数据集的名称。public static DatasetVector regionToCenterLine(Recordset regionRecordset, Datasource outputDatasource, String outputDatasetName, SteppedListener... listeners)
regionRecordset
- 要提取中心线的面记录集outputDatasource
- 输出中心线数据集所在的数据源outputDatasetName
- 输出中心线数据集的名字public static GeoLine regionToCenterLine(GeoRegion sourceRegion, Point2D pointFrom, Point2D pointTo)
该功能一般用于提取河流面对象的中心线,尤其是河流干流的中心线,并且可以指定提取的起点和终点。如果面包含岛洞,提取时会绕过岛洞,采用的是最短路径绕过。如下图。
fromPoint 参数和 toPoint 参数所指定起点和终点,是作为提取的参考点,也就是说,系统提取的中心线可能不会严格从指定的起点出发,到指定的终点结束。系统一般会在指定的起点和终点的附近,找到一个较近的点作为提取的起点或终点。
注意:
sourceRegion
- 指定的待提取中心线的面对象。pointFrom
- 指定的提取中心线的起点。pointTo
- 指定的提取中心线的终点。public static GeoLine regionToCenterLine(GeoRegion sourceRegion)
该方法用于提取面对象的中心线。如果面包含岛洞,提取时会绕过岛洞,采用最短路径绕过。如下图。
如果面对象不是简单的长条形,而是具有分叉结构,则提取的中心线是最长的一段。如下图所示。
如果提取的不是期望的中心线,可以使用另一重载方法 regionToCenterLine
指定起点和终点来提取。
sourceRegion
- 指定的待提取中心线的面对象。public static GeoRegion[] autoCompletePolygon(DatasetVector regionDataset, Rectangle2D bounds, GeoLine geoLine)
该功能用给定的范围bounds对参考面数据集regionDataset进行范围查询,构成结果面的所有参考面对象都必须在bounds范围,如果最后结果面所需的参考面不在bounds范围,将会导致结果面生成失败。
bounds范围为空时取参考面数据集的范围。
自动完成面对象所需的线对象可以不闭合。
regionDataset
- 参考面数据集。bounds
- 计算范围。geoLine
- 自动完成面对象所需的线对象。@Deprecated public static boolean aggregatePoints(DatasetVector pointDataset, double distance, Unit unit, int minPilePointCount, Datasource outDatasource, String resultRegionDatasetName, String resultClassFieldName)
Generalization.aggregatePoints(DatasetVector, double, Unit, int, Datasource, String, String, SteppedListener...)
替换。对点集合进行空间位置的聚类,使用密度聚类方法 DBSCAN,它能将具有足够高密度的区域划分为簇,并可以在带有噪声的空间数据中发现任意形状的聚类。它定义簇为密度相连的点的最大集合。DBSCAN 使用阈值 e 和 MinPts 来控制簇的生成。其中,给定对象半径 e 内的区域称为该对象的 e一邻域。如果一个对象的 e一邻域至少包含最小数目 MinPtS 个对象,则称该对象为核心对象。给定一个对象集合 D,如果 P 是在 Q 的 e一邻域内,而 Q 是一个核心对象,我们说对象 P 从对象 Q 出发是直接密度可达的。DBSCAN 通过检查数据里中每个点的 e-领域来寻找聚类,如果一个点 P 的 e-领域包含多于 MinPts 个点,则创建一个以 P 作为核心对象的新簇,然后,DBSCAN反复地寻找从这些核心对象直接密度可达的对象并加入该簇,直到没有新的点可以被添加。
pointDataset
- 输入的点数据集。distance
- 密度聚类半径。unit
- 密度聚类半径的单位。minPilePointCount
- 密度聚类点数目阈值,必须大于等于2。阈值越大表示能聚类为一簇的条件越苛刻。推荐值为4。outDatasource
- 结果面数据集所在的数据源。如果resultRegionDatasetName参数不为空,则outDatasource必须有效。resultRegionDatasetName
- 结果面数据集名称。如果此参数有效,则会将点对象聚集成面对象;如果为null,则不生成面数据集。此参数与resultClassFieldName必须至少有一个有效,不能同时无效。resultClassFieldName
- 点数据集 pointDataset 中用于保存密度聚类的结果聚类类别字段,如果不为null,则必须是点数据集中存在的合法的字段。如果此参数有效,则会将聚类类别保存在此字段中。此参数和resultRegionDatasetName必须至少有一个有效,不能同时无效。public static boolean aggregatePoints(DatasetVector pointDataset, double distance, Unit unit, int minPilePointCount, Datasource outDatasource, String resultRegionDatasetName, String resultClassFieldName, SteppedListener... listeners)
对点集合进行空间位置的聚类,使用密度聚类方法 DBSCAN,它能将具有足够高密度的区域划分为簇,并可以在带有噪声的空间数据中发现任意形状的聚类。它定义簇为密度相连的点的最大集合。DBSCAN 使用阈值 e 和 MinPts 来控制簇的生成。其中,给定对象半径 e 内的区域称为该对象的 e一邻域。如果一个对象的 e一邻域至少包含最小数目 MinPtS 个对象,则称该对象为核心对象。给定一个对象集合 D,如果 P 是在 Q 的 e一邻域内,而 Q 是一个核心对象,我们说对象 P 从对象 Q 出发是直接密度可达的。DBSCAN 通过检查数据里中每个点的 e-领域来寻找聚类,如果一个点 P 的 e-领域包含多于 MinPts 个点,则创建一个以 P 作为核心对象的新簇,然后,DBSCAN反复地寻找从这些核心对象直接密度可达的对象并加入该簇,直到没有新的点可以被添加。
pointDataset
- 输入的点数据集。distance
- 密度聚类半径。unit
- 密度聚类半径的单位。minPilePointCount
- 密度聚类点数目阈值,必须大于等于2。阈值越大表示能聚类为一簇的条件越苛刻。推荐值为4。outDatasource
- 结果面数据集所在的数据源。如果resultRegionDatasetName参数不为空,则outDatasource必须有效。resultRegionDatasetName
- 结果面数据集名称。如果此参数有效,则会将点对象聚集成面对象;如果为null,则不生成面数据集。此参数与resultClassFieldName必须至少有一个有效,不能同时无效。resultClassFieldName
- 点数据集 pointDataset 中用于保存密度聚类的结果聚类类别字段,如果不为null,则必须是点数据集中存在的合法的字段。如果此参数有效,则会将聚类类别保存在此字段中。此参数和resultRegionDatasetName必须至少有一个有效,不能同时无效。listeners
- 用于接收进度条事件的监听器。@Deprecated public static boolean aggregatePoints(DatasetVector pointDataset, int aggregateCount, String weightFieldName, Datasource outDatasource, String resultRegionDatasetName, String resultClassFieldName)
Generalization.aggregatePoints(DatasetVector, double, Unit, int, Datasource, String, String, SteppedListener...)
替换。pointDataset
- aggregateCount
- weightFieldName
- outDatasource
- resultRegionDatasetName
- resultClassFieldName
- @Deprecated public static boolean edgeMatch(DatasetVector sourceDatasetVector, DatasetVector targetDatasetVector, EdgeMatchParameter edgeMatchParameter)
Generalization.edgeMatch(DatasetVector, DatasetVector, EdgeMatchParameter, SteppedListener...)
替换。该功能对两个二维线数据集进行自动接边。
调用该方法时,需要通过 edgeMatchParameter 指定接边参数(EdgeMatchParameter
)对象,该对象用于指定接边所需的参数,如接边模式、接边容限、接边线等。
sourceDatasetVector
- 接边源数据集。只能是二维线数据集。targetDatasetVector
- 接边目标数据。只能是二维线数据集,与接边源数据有相同的坐标系。edgeMatchParameter
- 接边参数类。public static boolean edgeMatch(DatasetVector sourceDatasetVector, DatasetVector targetDatasetVector, EdgeMatchParameter edgeMatchParameter, SteppedListener... listeners)
该功能对两个二维线数据集进行自动接边。
调用该方法时,需要通过 edgeMatchParameter 指定接边参数(EdgeMatchParameter
)对象,该对象用于指定接边所需的参数,如接边模式、接边容限、接边线等。
sourceDatasetVector
- 接边源数据集。只能是二维线数据集。targetDatasetVector
- 接边目标数据。只能是二维线数据集,与接边源数据有相同的坐标系。edgeMatchParameter
- 接边参数类。listeners
- 用于接收进度条事件的监听器。public static boolean lineAttachRegion(GeoLine geoLine, GeoRegion geoRegion, List<GeoRegion> listRegionCompare, double toleranceLineAttachRegion, double toleranceRegionMerge, double toleranceChange, boolean isUsePreProcess)
geoLine
- 要处理的线对象。geoRegion
- 要处理的面对象。例如在国土数据处理中,对于扣除比例为0.5的情况,传入要靠的两个面对象其中一个,对于扣除比例为1的情况,传入要靠的面对象。listRegionCompare
- 要比较的面对象,外部需要传入一个链表对象。例如,国土数据处理中,对于扣除比例为0.5的情况,这个数组里只包含一个面对象,就是要靠的两个面对象的另外一个,对于扣除比例为1的情况,传入要靠的面对象周围的对象数组。toleranceLineAttachRegion
- 指的是线靠面的时候,线的端点捕捉到节点的容限。若线的端点到节点的容限小于toleranceLineAttachRegion会直接把线的端点捕捉到面的节点上,否则会把线的端点捕捉到面的线段上,并且在面上插入垂足。若不存在这样最近的垂足,则还是会捕捉到面的节点上。toleranceRegionMerge
- 指的是面之间插入节点的容限,以及面和面之间寻找重复线的容限。toleranceChange
- 指的是如果新替换的线和原来的线之间的极大距离大于给定的容限,则函数返回FALSE。isUsePreProcess
- 指的是是否进行数据预处理,这个一般要设置为true,除非是对自己的数据非常有信心。@Deprecated public static boolean integrate(DatasetVector sourceDatasetVector, double tolerance, Unit unit)
整合接口与拓扑预处理节点捕捉相同,会将捕捉在一起的节点修改为同样的二维坐标。详情请参阅拓扑预处理节点和节点捕捉 (TopologyPreprocessOptions.setVertexesSnapped()
)。
节点容限较大会导致要素重叠或导致面和线对象被删除,还可能导致不被期望移动的节点发生移动。所以,容限值应该尽量小。
sourceDatasetVector
- 指定的待整合的数据集。可以为点、线、面数据集。tolerance
- 指定的节点容限。unit
- 指定的节点容限单位。@Deprecated public static boolean integrate(DatasetVector sourceDatasetVector, double tolerance, Unit unit, SteppedListener... listeners)
sourceDatasetVector
- [in] 待整合的源数据集tolerance
- [in] 节点容限unit
- [in] 容限单位@Deprecated public static DatasetVector featureEnvelope(DatasetVector sourceDataset, String targetDatasetName, Datasource targetDatasource, boolean isSinglePart)
Generalization.featureEnvelope(DatasetVector, String, Datasource, boolean, SteppedListener...)
替换。sourceDataset
- 待分析的数据集,仅支持线数据集和面数据集。不支持点数据集因为点是没有范围的。targetDatasetName
- 结果数据集名称。targetDatasource
- 结果数据源。isSinglePart
- 有组合线或者组合面时,是否拆分子对象。默认为true,拆分子对象。public static DatasetVector featureEnvelope(DatasetVector sourceDataset, String targetDatasetName, Datasource targetDatasource, boolean isSinglePart, SteppedListener... listeners)
sourceDataset
- 待分析的数据集,仅支持线数据集和面数据集。不支持点数据集因为点是没有范围的。targetDatasetName
- 结果数据集名称。targetDatasource
- 结果数据源。isSinglePart
- 有组合线或者组合面时,是否拆分子对象。默认为true,拆分子对象。listeners
- 用于接收进度条事件的监听器。@Deprecated public static DatasetVector featureEnvelope(DatasetVector sourceDataset, String targetDatasetName, Datasource targetDatasource)
Generalization.featureEnvelope(DatasetVector, String, Datasource, SteppedListener...)
替换。sourceDataset
- 待分析的数据集,仅支持线数据集和面数据集。不支持点数据集因为点是没有范围的。targetDatasetName
- 结果数据集名称。targetDatasource
- 结果数据源。public static DatasetVector featureEnvelope(DatasetVector sourceDataset, String targetDatasetName, Datasource targetDatasource, SteppedListener... listeners)
sourceDataset
- 待分析的数据集,仅支持线数据集和面数据集。不支持点数据集因为点是没有范围的。targetDatasetName
- 结果数据集名称。targetDatasource
- 结果数据源。listeners
- 用于接收进度条事件的监听器。public static boolean isPrjCoordSysIdentical(PrjCoordSys sourcePrjCoordSys, PrjCoordSys targetPrjCoordSys)
sourcePrjCoordSys
- 源投影坐标系。targetPrjCoordSys
- 目标投影坐标系。public static DatasetVector createRandomPoints(DatasetVector sourceDatasetVector, RandomPointsParameter randomPointsParameter, Datasource targetDatasource, String targetDatasetName)
创建指定数量的随机点要素。可以在指定的点要素上、线要素沿线和面要素内生成随机点。例如在制作精细化地图的过程中,需要标注沿道路线规整排列的树木,以及片状密林中不规则分布的树木 。
<
sourceDatasetVector
- 源数据集,支持点、线、面数据集。randomPointsParameter
- 随机点参数设置。见RandomPointsParameter
targetDatasource
- 结果数据源。targetDatasetName
- 结果数据集名称。public static DatasetVector createRandomPoints(DatasetVector sourceDatasetVector, RandomPointsParameter randomPointsParameter, Datasource targetDatasource, String targetDatasetName, SteppedListener... listeners)
sourceDatasetVector
- [in] 源数据集,支持点、线、面randomPointsParameter
- [in] 随机点参数设置targetDatasource
- [in] 输出数据源targetDatasetName
- [in] 结果数据集名称public static DatasetVector vectorResample(DatasetVector srcDataset, ResampleInformation resampleInformation, Datasource targetDatasource, String targetDatasetName, SteppedListener... listeners)
resample
srcDataset
- 待计算的源矢量数据集,支持线、面数据集。resampleInformation
- 矢量重采样的参数类targetDatasource
- 结果数据源targetDatasetName
- 结果面数据集的名称listeners
- 用于接收进度条事件的监听器public static void addSteppedListener(SteppedListener l)
SteppedEvent
)的监听器。l
- 一个用于接收进度条事件的监听器。public static void removeSteppedListener(SteppedListener l)
SteppedEvent
)的监听器。l
- 一个用于接收进度条事件的监听器。public static DatasetVector regularizeBuildingFootprint(DatasetVector sourceDataset, Datasource targetDatasource, String targetDatasetName, RegularizeParameter param, boolean isAttributeRetained, SteppedListener... listeners)
sourceDataset
- 待计算的矢量数据集targetDatasource
- 输出数据源targetDatasetName
- 结果数据集名param
- 规则化参数isAttributeRetained
- 是否保存原始字段public static DatasetVector aggregatePolygons(DatasetVector sourceDataset, Datasource targetDatasource, String targetDatasetName, AggregatePolygonParameter param, SteppedListener... listeners)
面聚合是将指定距离内的面要素融合为一个新的面要素,得到聚合后的面状要素数据集。
常用应用场景如需要得到农村居民地的聚集程度,一般需要连片度这样的指标去判定,连片度是指一定范围内的地块或者房屋聚合成一个图斑,如建设用地的地块聚合距离100米,则会将所有距离范围内的都聚合起来。
sourceDataset
- 待计算的矢量数据集,必须为面数据集。targetDatasource
- 结果数据源。targetDatasetName
- 结果数据集名称。param
- 面聚合参数。listeners
- 用于接收进度条事件的监听器。public static DatasetVector pointsRegionalization(DatasetVector sourceDataset, Datasource targetDatasource, String targetDatasetName, double dDistance, Unit distanceUnit, SteppedListener... listeners)
点群区域化是指根据聚集点群(不小于3个点)所覆盖的区域得到面状要素数据集,是制图综合中的常用功能。
sourceDataset
- 待计算的矢量数据集,必须为点数据集。targetDatasource
- 结果数据源。targetDatasetName
- 结果面数据集的名称。dDistance
- 聚合距离,即两个点要素需要在指定聚合距离内才会发生聚合,取值范围大于0。distanceUnit
- 聚合距离的单位。当数据为经纬度坐标时,不支持使用平面坐标单位(米,千米等),必须使用地理坐标单位(度、分、秒等)。listeners
- 用于接收进度条事件的监听器。public static DatasetVector createStripMapPages(DatasetVector sourceDataset, DatasetVector barriersDataset, Datasource targetDatasource, String outputDatasetName, double aLengthAlongTheLine, double aLengthPerpendicularToTheLine, double dDistanceFromFirstPointOfTheEdge, double dOverlapDistance, SteppedListener... listeners)
创建带状分幅页面是指沿着所给的线状要素,生成特定长宽的一系列连续的外接矩形面。这些矩形面可根据线状要素定义为带状地图的分幅页面,在线性工程(道路网、电力网、石油管网、河流线)中应用较多。
需要注意:生成的结果分幅页面走向与源矢量线数据的节点走向一致。
sourceDataset
- 待计算的源矢量数据集,必须为线数据集barriersDataset
- 障碍数据集,即图幅中的设计分段点(例如行政边界),生成的矩形面遇到障碍时会被截断,再重新开始计算。支持类型为点、线、面,坐标应与源数据集保持一致。targetDatasource
- 结果数据源outputDatasetName
- 结果面数据集的名称aLengthAlongTheLine
- 矩形页面的长度,即生成矩形页面的沿线长度,必须大于等于0,单位与源数据集单位一致,当源数据集为平面(投影)坐标系时数值单位默认为米,为地理(经纬度)坐标系时数值单位默认为度。当该值为0时内部会根据不同坐标系给定一个值,投影坐标下为1500米,地理坐标下为0.015度。aLengthPerpendicularToTheLine
- 矩形页面的宽度,即生成矩形页面垂直于线的长度,必须大于等于0,单位与源数据集单位一致,当源数据集为平面(投影)坐标系时数值单位默认为米,为地理(经纬度)坐标系时数值单位默认为度。当该值为0时内部会根据不同坐标系给定一个值,投影坐标下为1000米,地理坐标下为0.01度。dDistanceFromFirstPointOfTheEdge
- 起点距离,即起始分幅页面与线数据集起点的距离,默认值为 0,单位与数据集单位一致。dOverlapDistance
- 重叠距离,即相邻两个分幅页面之间重叠的距离,默认值为 0,与数据集单位保持一致。注意,重叠距离必须小于矩形页面长度的一半。listeners
- 用于接收进度条事件的监听器public static DatasetVector createStripMapPages(DatasetVector sourceDataset, DatasetVector barriersDataset, Datasource targetDatasource, String outputDatasetName, double aLengthAlongTheLine, double aLengthPerpendicularToTheLine, SteppedListener... listeners)
创建带状分幅页面是指沿着所给的线状要素,生成特定长宽的一系列连续的外接矩形面。这些矩形面可根据线状要素定义为带状地图的分幅页面,在线性工程(道路网、电力网、石油管网、河流线)中应用较多。
需要注意:生成的结果分幅页面走向与源矢量线数据的节点走向一致。
sourceDataset
- 待计算的源矢量数据集,必须为线数据集barriersDataset
- 障碍数据集,即图幅中的设计分段点(例如行政边界),生成的矩形面遇到障碍时会被截断,再重新开始计算。支持类型为点、线、面,坐标应与源数据集保持一致。targetDatasource
- 结果数据源outputDatasetName
- 结果面数据集的名称aLengthAlongTheLine
- 矩形页面的长度,即生成矩形页面的沿线长度,必须大于0,单位与源数据集单位一致,当源数据集为平面(投影)坐标系时数值单位默认为米,为地理(经纬度)坐标系时数值单位默认为度。aLengthPerpendicularToTheLine
- 矩形页面的宽度,即生成矩形页面垂直于线的长度,必须大于0,单位与源数据集单位一致,当源数据集为平面(投影)坐标系时数值单位默认为米,为地理(经纬度)坐标系时数值单位默认为度。listeners
- 用于接收进度条事件的监听器public static DatasetVector createVectorPyramid(DatasetVector targetDataset, int nMinLevel, int nMaxLevel, int nStep, double weight, VectorPyramidMethod method, boolean separateStorage, SteppedListener... listeners)
targetDataset
- 创建矢量金字塔的数据集nMinLevel
- 金字塔的最小层级nMaxLevel
- 金字塔的最大层级nStep
- 相邻两层级之间的差值weight
- 权重值,取值范围[0.5,+∞),值越小每层金字塔结果越接近源数据,显示速度越慢;值越大每层金字塔结果越模糊,显示速度越快。method
- 创建矢量金字塔的方式separateStorage
- 分离存储,创建金字塔可选择分离存储金字塔表,选择分离存储后可以将金字塔表存储到sdx schema下。listeners
- 用于接收进度条事件的监听器public static DatasetVector createVectorPyramid(DatasetVector targetDataset, int nMinLevel, int nMaxLevel, int nStep, double weight, VectorPyramidMethod method, SteppedListener... listeners)
targetDataset
- 创建矢量金字塔的数据集。nMinLevel
- 金字塔的最小层级。nMaxLevel
- 金字塔的最大层级。nStep
- 相邻两层级之间的差值。weight
- 权重值,取值范围[0.5,+∞),值越小每层金字塔结果越接近源数据,显示速度越慢;值越大每层金字塔结果越模糊,显示速度越快。method
- 创建矢量金字塔的方式。listeners
- 用于接收进度条事件的监听器。Copyright © 2021–2024 SuperMap. All rights reserved.