public class OverlayAnalyst
extends java.lang.Object
该类用于对输入的两个数据集或记录集之间进行各种叠加分析运算,如裁剪(clip)、擦除(erase)、合并(union)、同一(identity)、对称差(xOR)和更新(update)。
叠加分析是 GIS 中的一项非常重要的空间分析功能。是指在统一空间参考系统下,通过对两个数据集进行的一系列集合运算,产生新数据集的过程。叠加分析广泛应用于资源管理、城市建设评估、国土管理、农林牧业、统计等领域。因此,通过此叠加分析类可实现对空间数据的加工和分析,提取用户需要的新的空间几何信息,并且对数据的属性信息进行处理。
* 注意
| 限定符和类型 | 方法和说明 |
|---|---|
static boolean |
clip(DatasetVector dataset,
DatasetVector clipDataset,
DatasetVector resultDataset,
OverlayAnalystParameter parameter)
对矢量数据集进行裁剪,将被裁减数据集(第一个数据集)中不在裁剪数据集(第二个数据集)内的对象裁剪并删除。
|
static boolean |
clip(DatasetVector dataset,
Geometry[] clipGeometries,
DatasetVector resultDataset,
OverlayAnalystParameter parameter)
对矢量数据集进行裁剪,将被裁减数据集中不在几何对象数组范围内的对象裁剪并删除。
|
static boolean |
clip(Recordset recordset,
Recordset clipRecordset,
DatasetVector resultDataset,
OverlayAnalystParameter parameter)
对记录集进行裁剪,将第一个记录集中不在第二个记录集内的对象裁剪并删除。
|
static boolean |
clipCAD(DatasetVector dataset,
Geometry clipRegion,
DatasetVector resultDataset,
boolean bClipInRegion,
boolean bErase,
double dTolerace)
裁剪CAD
|
static boolean |
clipText(DatasetVector dataset,
Geometry clipRegion,
DatasetVector resultDataset,
boolean bClipInRegion,
boolean bErase,
double dTolerace)
裁剪文本数据集
|
static boolean |
erase(DatasetVector dataset,
DatasetVector eraseDataset,
DatasetVector resultDataset,
OverlayAnalystParameter parameter)
用于对数据集进行擦除方式的叠加分析,将第一个数据集中包含在第二个数据集内的对象裁剪并删除。
|
static boolean |
erase(DatasetVector dataset,
Geometry[] eraseGeometries,
DatasetVector resultDataset,
OverlayAnalystParameter parameter)
用于对数据集进行擦除方式的叠加分析,将被擦除的数据集中包含在几何对象数组内的对象裁剪并删除。
|
static boolean |
erase(Recordset recordset,
Recordset eraseRecordset,
DatasetVector resultDataset,
OverlayAnalystParameter parameter)
用于对记录集进行擦除方式的叠加分析,将第一个记录集中包含在第二个记录集内的对象裁剪并删除。
|
static boolean |
identity(DatasetVector dataset,
DatasetVector identityDataset,
DatasetVector resultDataset,
OverlayAnalystParameter parameter)
用于对数据集进行同一方式的叠加分析,结果数据集中保留被同一运算的数据集的全部对象和被同一运算的数据集与用来进行同一运算的数据集相交的对象。
|
static boolean |
identity(DatasetVector dataset,
Geometry[] identityGeometries,
DatasetVector resultDataset,
OverlayAnalystParameter parameter)
用于对数据集进行同一方式的叠加分析,结果数据集中保留被同一运算的数据集的全部对象和被同一运算的数据集与用来进行同一运算的几何对象数组相交的对象。
|
static boolean |
identity(Recordset recordset,
Recordset identityRecordset,
DatasetVector resultDataset,
OverlayAnalystParameter parameter)
用于对记录集进行同一方式的叠加分析,结果数据集中保留被统一运算的记录集的全部对象和被同一运算的记录集与用来进行同一运算的记录集相交的对象。
|
static boolean |
intersect(DatasetVector dataset,
DatasetVector intersectDataset,
DatasetVector resultDataset,
OverlayAnalystParameter parameter)
进行相交方式的叠加分析,将被相交叠加分析的数据集不包含在用来相交叠加分析的数据集中的对象切割并删除。
|
static boolean |
intersect(DatasetVector dataset,
Geometry[] intersectGeometries,
DatasetVector resultDataset,
OverlayAnalystParameter parameter)
进行相交方式的叠加分析,将被相交叠加分析的数据集中不包含在用来相交叠加分析的面对象数组的对象切割并删除。
|
static boolean |
intersect(Recordset recordset,
Recordset intersectRecordset,
DatasetVector resultDataset,
OverlayAnalystParameter parameter)
进行相交方式的叠加分析,将被相交叠加分析的记录集中不包含在用来相交叠加分析的记录集中的对象切割并删除。
|
static boolean |
union(DatasetVector dataset,
DatasetVector unionDataset,
DatasetVector resultDataset,
OverlayAnalystParameter parameter)
用于对两个面数据集进行合并方式的叠加分析,结果数据集中保存被合并叠加分析的数据集和用于合并叠加分析的数据集中的全部对象,并且对相交部分进行求交和分割运算。
|
static boolean |
union(DatasetVector dataset,
Geometry[] unionGeometries,
DatasetVector resultDataset,
OverlayAnalystParameter parameter)
对面数据集用面对象数组进行合并方式的叠加分析,结果数据集中保存被合并叠加分析的数据集和用于合并叠加分析的面对象数组中的全部对象,并且对相交部分进行求交和分割运算。
|
static boolean |
union(Recordset recordset,
Recordset unionRecordset,
DatasetVector resultDataset,
OverlayAnalystParameter parameter)
用于对两个面记录集进行合并方式的叠加分析,结果数据集中保存被合并叠加分析的记录集和用于合并叠加分析的记录集中的全部对象,并且对相交部分进行求交和分割运算。
|
static boolean |
update(DatasetVector dataset,
DatasetVector updateDataset,
DatasetVector resultDataset,
OverlayAnalystParameter parameter)
用于对两个面数据集进行更新方式的叠加分析,更新运算时用用于更新的数据集替换与被更新数据集重合的部分,是一个先擦除后粘贴的过程。
|
static boolean |
update(DatasetVector dataset,
Geometry[] updateGeometries,
DatasetVector resultDataset,
OverlayAnalystParameter parameter)
对面数据集用面对象数组进行更新方式的叠加分析,更新运算时用用于更新的面对象数组替换与被更新数据集的重合部分,是一个先擦除后粘贴的过程。
|
static boolean |
update(Recordset recordset,
Recordset updateRecordset,
DatasetVector resultDataset,
OverlayAnalystParameter parameter)
用于对两个面记录集进行更新方式的叠加分析,更新运算是用用于更新的记录集替换它与被更新记录集的重合部分,是一个先擦除后粘贴的过程。
|
static boolean |
xOR(DatasetVector dataset,
DatasetVector xORDataset,
DatasetVector resultDataset,
OverlayAnalystParameter parameter)
对两个面数据集进行对称差运算。
|
static boolean |
xOR(DatasetVector dataset,
Geometry[] xorGeometries,
DatasetVector resultDataset,
OverlayAnalystParameter parameter)
对面数据集用面对象数组进行对称差分析运算,即交集取反运算。
|
static boolean |
xOR(Recordset recordset,
Recordset xORRecordset,
DatasetVector resultDataset,
OverlayAnalystParameter parameter)
对两个面记录集进行对称差分析运算。
|
public static boolean clip(DatasetVector dataset, DatasetVector clipDataset, DatasetVector resultDataset, OverlayAnalystParameter parameter)

dataset - 被裁减的数据集,也称第一数据集。该数据集的类型可以是点、线和面。clipDataset - 用于裁剪的数据集,也称第二数据集。该数据集类型必须是面。resultDataset - 存放裁剪结果的数据集。parameter - 叠加分析的参数对象,该对象用于设置分析时的保留字段等分析参数。此处该对象设置无效。
public void overlayAnalystClip1() {
// 返回被裁剪的矢量数据集和用于裁剪的矢量数据集
Workspace workspace = new Workspace();
String rootPath = android.os.Environment.getExternalStorageDirectory().getAbsolutePath();
DatasourceConnectionInfo datasourceConnectionInfo = new
DatasourceConnectionInfo(rootPath + "/SampleData/shanghai/shanghai.udb",
"shanghai", "");
Datasource targetDatasource = workspace.getDatasources().open(
datasourceConnectionInfo);
DatasetVector datasetCliped = (DatasetVector) targetDatasource.
getDatasets().get("Road_L");
DatasetVector datasetClip = (DatasetVector) targetDatasource.
getDatasets().get("Park_R");
// 创建一个线矢量数据集,用于存储裁剪分析返回的结果
String resultDatasetClipName = targetDatasource.getDatasets().
getAvailableDatasetName(
"resultDatasetClip");
DatasetVectorInfo datasetvectorInfoClip = new DatasetVectorInfo();
datasetvectorInfoClip.setType(DatasetType.LINE);
datasetvectorInfoClip.setName(resultDatasetClipName);
datasetvectorInfoClip.setEncodeType(EncodeType.NONE);
DatasetVector resultDatasetClip = targetDatasource.getDatasets().create(
datasetvectorInfoClip);
// 设置叠加分析参数
OverlayAnalystParameter overlayAnalystParamClip = new
OverlayAnalystParameter();
overlayAnalystParamClip.setTolerance(0.0122055608);
// 调用裁剪叠加分析方法实现裁剪分析
OverlayAnalyst.clip(datasetCliped, datasetClip, resultDatasetClip,
overlayAnalystParamClip);
// 释放工作空间占有的资源
workspace.dispose();
}public static boolean clip(Recordset recordset, Recordset clipRecordset, DatasetVector resultDataset, OverlayAnalystParameter parameter)
注意:
对于裁剪的示意图,可参考另一重载方法 clip 的介绍。
recordset - 被裁减的记录集,也称为第一记录集。该记录集类型可以是点、线和面。clipRecordset - 用于裁剪的记录集,也称为第二记录集。该记录集类型必须是面类型。resultDataset - 存放裁剪结果的数据集。parameter - 叠加分析的参数对象,该对象用于设置分析时的保留字段等分析参数。此处该对象设置无效。
public void overlayAnalystClip2() {
// 返回被裁剪的记录集和用于裁剪的记录集
Workspace workspace = new Workspace();
String rootPath = android.os.Environment.getExternalStorageDirectory().getAbsolutePath();
DatasourceConnectionInfo datasourceConnectionInfo = new
DatasourceConnectionInfo(rootPath + "/SampleData/shanghai/shanghai.udb",
"shanghai", "");
Datasource targetDatasource = workspace.getDatasources().open(
datasourceConnectionInfo);
DatasetVector datasetRoad = (DatasetVector) targetDatasource.
getDatasets().get("Road_L");
QueryParameter queryParamCliped = new QueryParameter();
queryParamCliped.setAttributeFilter("ClassID=430110");
queryParamCliped.setHasGeometry(true);
Recordset queryResultCliped = datasetRoad.query(queryParamCliped);
DatasetVector datasetPark = (DatasetVector) targetDatasource.
getDatasets().get("Park_R");
QueryParameter queryParamClip = new QueryParameter();
queryParamClip.setAttributeFilter("ClassID=370100");
queryParamClip.setHasGeometry(true);
Recordset queryResultClip = datasetPark.query(queryParamClip);
// 创建一个线矢量数据集,用于存储裁剪分析返回的结果
String resultDatasetClipName = targetDatasource.getDatasets().
getAvailableDatasetName(
"resultDatasetClip");
DatasetVectorInfo datasetvectorInfoClip = new DatasetVectorInfo();
datasetvectorInfoClip.setType(DatasetType.LINE);
datasetvectorInfoClip.setName(resultDatasetClipName);
datasetvectorInfoClip.setEncodeType(EncodeType.NONE);
DatasetVector resultDatasetClip = targetDatasource.getDatasets().create(
datasetvectorInfoClip);
// 设置叠加分析参数
OverlayAnalystParameter overlayAnalystParamClip = new
OverlayAnalystParameter();
overlayAnalystParamClip.setTolerance(0.0000015);
// 调用裁剪叠加分析方法实现裁剪分析
OverlayAnalyst.clip(queryResultCliped, queryResultClip,
resultDatasetClip, overlayAnalystParamClip);
// 释放工作空间占有的资源
workspace.dispose();
}public static boolean clip(DatasetVector dataset, Geometry[] clipGeometries, DatasetVector resultDataset, OverlayAnalystParameter parameter)
对于裁剪的示意图,可参考另一重载方法 clip 的介绍。
dataset - 被裁减的数据集。该数据集类型可以是点、线和面。clipGeometries - 用于裁剪的几何对象数组,并且该数组中的几何对象必须是面几何对象。resultDataset - 存放裁剪结果的数据集。parameter - 叠加分析的参数对象,该对象用于设置分析时的保留字段等分析参数。此处该对象设置无效。public static boolean erase(DatasetVector dataset, DatasetVector eraseDataset, DatasetVector resultDataset, OverlayAnalystParameter parameter)
注意:

dataset - 被擦除的数据集,也称第一数据集。该数据集类型为点、线和面类型。eraseDataset - 用于擦除的数据集,也称第二数据集。该数据集类型必须是面数据集类型。resultDataset - 存放分析结果的数据集。parameter - 叠加分析的参数对象,该对象用于设置分析时的保留字段等分析参数。public static boolean erase(Recordset recordset, Recordset eraseRecordset, DatasetVector resultDataset, OverlayAnalystParameter parameter)
有关擦除的详细说明,请参见另一重载方法 erase 的介绍。
注意:用于擦除的记录集、被擦除的记录集以及结果数据集的地理坐标系必须一致。
recordset - 被擦除的记录集 ,也称第一记录集。该记录集为点、线和面类型。eraseRecordset - 用于擦除的记录集,也称第二记录集。该记录集类型必须是面类型。resultDataset - 存放分析结果的数据集。parameter - 叠加分析的参数对象,该对象用于设置分析时的保留字段等分析参数。public static boolean erase(DatasetVector dataset, Geometry[] eraseGeometries, DatasetVector resultDataset, OverlayAnalystParameter parameter)
有关擦除的详细信息,请参见另一重载方法 erase 的介绍。
注意:用于擦除的几何对象数组、被擦除的数据集以及结果数据集的地理坐标系必须一致。
dataset - 被擦除的数据集,该数据集类型为点、线和面类型。eraseGeometries - 用于擦除的几何对象数组,并且该数组中的几何对象必须是面几何对象。resultDataset - 存放分析结果的数据集。parameter - 叠加分析的参数对象,该对象用于设置分析时的保留字段等分析参数。public static boolean identity(DatasetVector dataset, DatasetVector identityDataset, DatasetVector resultDataset, OverlayAnalystParameter parameter)
注意:

dataset - 被同一运算的数据集,可以是点、线、面类型。identityDataset - 用来进行同一运算的数据集,必须为面类型。resultDataset - 存放分析结果的数据集。parameter - 叠加分析的参数对象,该对象用于设置分析时的保留字段等分析参数。
public void overlayAnalystIdentity1() {
// 返回被同一运算的矢量数据集与用于同一运算的矢量数据集
Workspace workspace = new Workspace();
String rootPath = android.os.Environment.getExternalStorageDirectory().getAbsolutePath();
DatasourceConnectionInfo datasourceConnectionInfo = new
DatasourceConnectionInfo(
rootPath + "/SampleData/changchun/changchun.udb", "changchun", "");
Datasource targetDatasource = workspace.getDatasources().open(
datasourceConnectionInfo);
DatasetVector datasetIdentitied = (DatasetVector) targetDatasource.
getDatasets().get("Frame_R");
DatasetVector datasetIdentity = (DatasetVector) targetDatasource.
getDatasets().get("ResidentialArea");
// 创建一个面矢量数据集,用于存储同一运算返回的结果
String resultDatasetIdentityName = targetDatasource.getDatasets().
getAvailableDatasetName(
"resultDatasetIdentity");
DatasetVectorInfo datasetvectorInfoIdentity = new DatasetVectorInfo();
datasetvectorInfoIdentity.setType(DatasetType.REGION);
datasetvectorInfoIdentity.setName(resultDatasetIdentityName);
datasetvectorInfoIdentity.setEncodeType(EncodeType.NONE);
DatasetVector resultDatasetIdentity = targetDatasource.getDatasets().
create(datasetvectorInfoIdentity);
// 设置叠加分析参数
OverlayAnalystParameter overlayAnalystParamIdentity = new
OverlayAnalystParameter();
overlayAnalystParamIdentity.setOperationRetainedFields(new String[] {
"ClassID"});
overlayAnalystParamIdentity.setSourceRetainedFields(new String[] {
"Name"});
overlayAnalystParamIdentity.setTolerance(0.0089078724);
// 调用同一运算方法实现同一运算
OverlayAnalyst.identity(datasetIdentitied, datasetIdentity,
resultDatasetIdentity, overlayAnalystParamIdentity);
// 释放工作空间占有的资源
workspace.dispose();
}public static boolean identity(Recordset recordset, Recordset identityRecordset, DatasetVector resultDataset, OverlayAnalystParameter parameter)
有关同一运算的详细介绍,请参见另一重载方法 identity 的介绍。
注意,用于进行同一运算的记录集、被同一运算的记录集以及结果数据集的地理坐标系必须一致。
recordset - 被同一运算的记录集,也成为第一记录集,可以是点、线、面类型。identityRecordset - 用来进行同一运算的记录集,也成为第二记录集,必须为面类型。resultDataset - 存放分析结果的数据集。parameter - 叠加分析的参数对象,该对象用于设置分析时的保留字段等分析参数。
public void overlayAnalystIdentity2() {
// 返回被同一运算的记录集与用于同一运算的记录集
Workspace workspace = new Workspace();
String rootPath = android.os.Environment.getExternalStorageDirectory().getAbsolutePath();
DatasourceConnectionInfo datasourceConnectionInfo = new
DatasourceConnectionInfo(
rootPath + "/SampleData/changchun/changchun.udb", "changchun", "");
Datasource targetDatasource = workspace.getDatasources().open(
datasourceConnectionInfo);
DatasetVector datasetIdentitied = (DatasetVector) targetDatasource.
getDatasets().get("Frame_R");
Recordset queryResultIdentitied = datasetIdentitied.getRecordset(false,
CursorType.DYNAMIC);
DatasetVector datasetIdentity = (DatasetVector) targetDatasource.
getDatasets().get("ResidentialArea");
QueryParameter queryParamIdentity = new QueryParameter();
queryParamIdentity.setAttributeFilter("ClassID = 32023");
queryParamIdentity.setHasGeometry(true);
Recordset queryResultIdentity = datasetIdentity.query(
queryParamIdentity);
// 创建一个面矢量数据集,用于存储同一运算返回的结果
String resultDatasetIdentityName = targetDatasource.getDatasets().
getAvailableDatasetName(
"resultDatasetIdentity");
DatasetVectorInfo datasetvectorInfoIdentity = new DatasetVectorInfo();
datasetvectorInfoIdentity.setType(DatasetType.REGION);
datasetvectorInfoIdentity.setName(resultDatasetIdentityName);
datasetvectorInfoIdentity.setEncodeType(EncodeType.NONE);
DatasetVector resultDatasetIdentity = targetDatasource.getDatasets().
create(datasetvectorInfoIdentity);
// 设置叠加分析参数
OverlayAnalystParameter overlayAnalystParamIdentity = new
OverlayAnalystParameter();
overlayAnalystParamIdentity.setOperationRetainedFields(new String[] {
"ClassID"});
overlayAnalystParamIdentity.setSourceRetainedFields(new String[] {
"Name"});
overlayAnalystParamIdentity.setTolerance(0.0089078724);
// 调用同一运算方法实现同一运算
OverlayAnalyst.identity(queryResultIdentitied, queryResultIdentity,
resultDatasetIdentity, overlayAnalystParamIdentity);
// 释放工作空间占有的资源
workspace.dispose();
}public static boolean identity(DatasetVector dataset, Geometry[] identityGeometries, DatasetVector resultDataset, OverlayAnalystParameter parameter)
有关同一运算的详细介绍,请参见另一重载方法 identity 的介绍。
注意,用于进行同一运算的几何对象数组、被同一运算的数据集以及结果数据集的地理坐标系必须一致。
dataset - 被同一运算的数据集,可以是点、线、面类型。identityGeometries - 用来进行同一运算的几何对象数组,该数组中的几何对象必须是面几何对象。resultDataset - 存放分析结果的数据集。parameter - 叠加分析的参数对象,该对象用于设置分析时的保留字段等分析参数。public static boolean intersect(DatasetVector dataset, DatasetVector intersectDataset, DatasetVector resultDataset, OverlayAnalystParameter parameter)
注意:

dataset - 被相交叠加分析的数据集,该数据集的类型可以是点、线、面数据集。intersectDataset - 用来相交叠加分析的数据集,该数据集必须是面数据集。resultDataset - 存放分析结果的数据集。parameter - 叠加分析的参数对象,该对象用于设置分析时的保留字段等分析参数。
public void overlayAnalystIntersect1() {
// 返回被相交的矢量数据集与用于相交的矢量数据集
Workspace workspace = new Workspace();
String rootPath = android.os.Environment.getExternalStorageDirectory().getAbsolutePath();
DatasourceConnectionInfo datasourceConnectionInfo = new
DatasourceConnectionInfo(
rootPath + "/SampleData/changchun/changchun.udb", "changchun", "");
Datasource targetDatasource = workspace.getDatasources().open(
datasourceConnectionInfo);
DatasetVector datasetIntersected = (DatasetVector) targetDatasource.
getDatasets().get("Frame_R");
DatasetVector datasetIntersect = (DatasetVector) targetDatasource.
getDatasets().get("ResidentialArea");
// 创建一个面矢量数据集,用于存储相交分析返回的结果
String resultDatasetIntersectName = targetDatasource.getDatasets().
getAvailableDatasetName(
"resultDatasetIntersect");
DatasetVectorInfo datasetvectorInfoIntersect = new DatasetVectorInfo();
datasetvectorInfoIntersect.setType(DatasetType.REGION);
datasetvectorInfoIntersect.setName(resultDatasetIntersectName);
datasetvectorInfoIntersect.setEncodeType(EncodeType.NONE);
DatasetVector resultDatasetIntersect = targetDatasource.getDatasets().
create(
datasetvectorInfoIntersect);
// 设置叠加分析参数
OverlayAnalystParameter overlayAnalystParamIntersect = new
OverlayAnalystParameter();
overlayAnalystParamIntersect.setOperationRetainedFields(new String[] {
"ClassID"});
overlayAnalystParamIntersect.setSourceRetainedFields(new String[] {
"Name"});
overlayAnalystParamIntersect.setTolerance(0.0000011074);
// 调用相交叠加分析方法实相交分析
OverlayAnalyst.intersect(datasetIntersected, datasetIntersect,
resultDatasetIntersect,
overlayAnalystParamIntersect);
// 释放工作空间占有的资源
workspace.dispose();
}public static boolean intersect(Recordset recordset, Recordset intersectRecordset, DatasetVector resultDataset, OverlayAnalystParameter parameter)
有关相交运算的详细介绍,请参见另一重载方法intersect 的介绍。
注意,用来相交叠加分析的记录集,被相交分析的记录集以及结果数据集的地理坐标系必须一致。
recordset - 被相交叠加分析的记录集,该类型可以是点、线、面类型。intersectRecordset - 用来相交叠加分析的记录集,必须是面。resultDataset - 存放分析结果的数据集。parameter - 叠加分析的参数对象,该对象用于设置分析时的保留字段等分析参数。
public void overlayAnalystIntersect2() {
// 返回被相交的记录集与用于相交的记录集
Workspace workspace = new Workspace();
String rootPath = android.os.Environment.getExternalStorageDirectory().getAbsolutePath();
DatasourceConnectionInfo datasourceConnectionInfo = new
DatasourceConnectionInfo(
rootPath + "/SampleData/changchun/changchun.udb", "changchun", "");
Datasource targetDatasource = workspace.getDatasources().open(
datasourceConnectionInfo);
DatasetVector datasetIntersected = (DatasetVector) targetDatasource.
getDatasets().get("Frame_R");
Recordset queryResultIntersected = datasetIntersected.getRecordset(false,
CursorType.DYNAMIC);
DatasetVector datasetIntersect = (DatasetVector) targetDatasource.
getDatasets().get("ResidentialArea");
QueryParameter queryParamIntersect = new QueryParameter();
queryParamIntersect.setAttributeFilter("ClassID = 32023");
queryParamIntersect.setHasGeometry(true);
Recordset queryResultIntersect = datasetIntersect.query(
queryParamIntersect);
// 创建一个面矢量数据集,用于存储相交分析返回的结果
String resultDatasetIntersectName = targetDatasource.getDatasets().
getAvailableDatasetName(
"resultDatasetIntersect");
DatasetVectorInfo datasetvectorInfoIntersect = new DatasetVectorInfo();
datasetvectorInfoIntersect.setType(DatasetType.REGION);
datasetvectorInfoIntersect.setName(resultDatasetIntersectName);
datasetvectorInfoIntersect.setEncodeType(EncodeType.NONE);
DatasetVector resultDatasetIntersect = targetDatasource.getDatasets().
create(
datasetvectorInfoIntersect);
// 设置叠加分析参数
OverlayAnalystParameter overlayAnalystParamIntersect = new
OverlayAnalystParameter();
overlayAnalystParamIntersect.setOperationRetainedFields(new String[] {
"ClassID"});
overlayAnalystParamIntersect.setSourceRetainedFields(new String[] {
"Name"});
overlayAnalystParamIntersect.setTolerance(0.0000011074);
// 调用相交叠加分析方法实相交分析
OverlayAnalyst.intersect(queryResultIntersected, queryResultIntersect,
resultDatasetIntersect,
overlayAnalystParamIntersect);
// 释放工作空间占有的资源
workspace.dispose();
}public static boolean intersect(DatasetVector dataset, Geometry[] intersectGeometries, DatasetVector resultDataset, OverlayAnalystParameter parameter)
有关相交运算的详细介绍,请参见另一重载方法intersect 的介绍。
注意,用于相交叠加分析的面对象数组、被相交分析的数据集以及结果数据集的地理坐标系必须一致。
dataset - 被相交叠加分析的数据集,该数据集的类型可以是点、线、面数据集。intersectGeometries - 用来相交叠加分析的面对象数组。resultDataset - 存放分析结果的数据集。parameter - 叠加分析的参数对象,该对象用于设置分析时的保留字段等分析参数。public static boolean xOR(DatasetVector dataset, DatasetVector xORDataset, DatasetVector resultDataset, OverlayAnalystParameter parameter)
对称差运算是两个数据集的异或运算。操作结果是,对于每一个面对象,去掉其与另一个数据集中的几何对象相交的部分,而保留剩下的部分。对称差运算的输出结果的属性表包含两个输入数据集的非系统属性字段。

dataset - 被对称差分析的原数据集,必须是面数据集。xORDataset - 用于对称差分析的数据集,必须是面数据集。resultDataset - 存放分析结果的数据集。parameter - 叠加分析的参数对象,该对象用于设置分析时的保留字段等分析参数。
public void overlayAnalystXOR1() {
// 返回被对称差分析的数据集与用于对称差分析的数据集
Workspace workspace = new Workspace();
String rootPath = android.os.Environment.getExternalStorageDirectory().getAbsolutePath();
DatasourceConnectionInfo datasourceConnectionInfo = new
DatasourceConnectionInfo(
rootPath + "/SampleData/changchun/changchun.udb", "changchun", "");
Datasource targetDatasource = workspace.getDatasources().open(
datasourceConnectionInfo);
DatasetVector datasetXORed = (DatasetVector) targetDatasource.
getDatasets().get("Frame_R");
DatasetVector datasetXOR = (DatasetVector) targetDatasource.getDatasets().
get("ResidentialArea");
// 创建一个面矢量数据集,用于存储对称差分析返回的结果
String resultDatasetXORName = targetDatasource.getDatasets().
getAvailableDatasetName(
"resultDatasetXOR");
DatasetVectorInfo datasetvectorInfoXOR = new DatasetVectorInfo();
datasetvectorInfoXOR.setType(DatasetType.REGION);
datasetvectorInfoXOR.setName(resultDatasetXORName);
datasetvectorInfoXOR.setEncodeType(EncodeType.NONE);
DatasetVector resultDatasetXOR = targetDatasource.getDatasets().create(
datasetvectorInfoXOR);
// 设置叠加分析参数
OverlayAnalystParameter overlayAnalystParamXOR = new
OverlayAnalystParameter();
overlayAnalystParamXOR.setTolerance(0.0089078724);
// 调用对称差分析方法对称差分析
OverlayAnalyst.xOR(datasetXORed, datasetXOR, resultDatasetXOR,
overlayAnalystParamXOR);
//释放工作空间占有的资源
workspace.dispose();
}public static boolean xOR(Recordset recordset, Recordset xORRecordset, DatasetVector resultDataset, OverlayAnalystParameter parameter)
有关对称差运算的详细介绍,请参见另一重载方法 xOR 的介绍。
注意,用于对称差分析的记录集、被对称差分析的记录集以及结果数据集的地理坐标系必须一致。
recordset - 被对称差分析的源记录集,必须是面。xORRecordset - 用于对称差分析的记录集,必须是面。resultDataset - 存放分析结果的数据集。parameter - 叠加分析的参数对象,该对象用于设置分析时的保留字段等分析参数。
public void overlayAnalystXOR2() {
// 返回被对称差分析的记录集与用于对称差分析的记录集
Workspace workspace = new Workspace();
String rootPath = android.os.Environment.getExternalStorageDirectory().getAbsolutePath();
DatasourceConnectionInfo datasourceConnectionInfo = new
DatasourceConnectionInfo(
rootPath + "/SampleData/changchun/changchun.udb", "changchun", "");
Datasource targetDatasource = workspace.getDatasources().open(
datasourceConnectionInfo);
DatasetVector datasetXORed = (DatasetVector) targetDatasource.
getDatasets().get("Frame_R");
Recordset queryResultXORed = datasetXORed.getRecordset(false,
CursorType.DYNAMIC);
DatasetVector datasetXOR = (DatasetVector) targetDatasource.getDatasets().
get("ResidentialArea");
QueryParameter queryParamXOR = new QueryParameter();
queryParamXOR.setAttributeFilter("ClassID = 32023");
queryParamXOR.setHasGeometry(true);
Recordset queryResultXOR = datasetXOR.query(queryParamXOR);
// 创建一个面矢量数据集,用于存储对称差分析的结果
String resultDatasetXORName = targetDatasource.getDatasets().
getAvailableDatasetName(
"resultDatasetXOR");
DatasetVectorInfo datasetvectorInfoXOR = new DatasetVectorInfo();
datasetvectorInfoXOR.setType(DatasetType.REGION);
datasetvectorInfoXOR.setName(resultDatasetXORName);
datasetvectorInfoXOR.setEncodeType(EncodeType.NONE);
DatasetVector resultDatasetXOR = targetDatasource.getDatasets().create(
datasetvectorInfoXOR);
// 设置叠加分析参数
OverlayAnalystParameter overlayAnalystParamXOR = new
OverlayAnalystParameter();
overlayAnalystParamXOR.setTolerance(0.0089078724);
// 调用对称差分析方法实对称差分析
OverlayAnalyst.xOR(queryResultXORed, queryResultXOR, resultDatasetXOR,
overlayAnalystParamXOR);
// 释放工作空间占有的资源
workspace.dispose();
}public static boolean xOR(DatasetVector dataset, Geometry[] xorGeometries, DatasetVector resultDataset, OverlayAnalystParameter parameter)
有关对称差运算的详细介绍,请参见另一重载方法 xOR 的介绍。
注意,用于对称差分析的面对象数组,对称差分析的源数据集以及结果数据集的地理坐标系必须一致。
dataset - 对称差分析的源数据集,必须是面数据集。xorGeometries - 用于对称差分析的面对象数组。resultDataset - 存放分析结果的数据集。parameter - 叠加分析的参数对象,该对象用于设置分析时的保留字段等分析参数。public static boolean union(DatasetVector dataset, DatasetVector unionDataset, DatasetVector resultDataset, OverlayAnalystParameter parameter)
注意:

dataset - 被合并叠加分析的数据集,必须是面数据集类型。unionDataset - 用于合并叠加分析的数据集,必须是面数据集类型。resultDataset - 存放分析结果的数据集。parameter - 叠加分析的参数对象,该对象用于设置分析时的保留字段等分析参数。
public void overlayAnalystUnion1() {
// 返回被合并的矢量数据集与用于合并的矢量数据集
Workspace workspace = new Workspace();
String rootPath = android.os.Environment.getExternalStorageDirectory().getAbsolutePath();
DatasourceConnectionInfo datasourceConnectionInfo = new
DatasourceConnectionInfo(rootPath + "/changchun/changchun.udb",
"changchun", "");
Datasource targetDatasource = workspace.getDatasources().open(
datasourceConnectionInfo);
DatasetVector datasetUnioned = (DatasetVector) targetDatasource.
getDatasets().get("ResidentialArea");
DatasetVector datasetUnion = (DatasetVector) targetDatasource.
getDatasets().get("Frame_R");
// 创建一个面矢量数据集,用于存储合并分析返回的结果
String resultDatasetUnionName = targetDatasource.getDatasets().
getAvailableDatasetName(
"resultDatasetUnion");
DatasetVectorInfo datasetvectorInfoUnion = new DatasetVectorInfo();
datasetvectorInfoUnion.setType(DatasetType.REGION);
datasetvectorInfoUnion.setName(resultDatasetUnionName);
datasetvectorInfoUnion.setEncodeType(EncodeType.NONE);
DatasetVector resultDatasetUnion = targetDatasource.getDatasets().
create(datasetvectorInfoUnion);
// 设置叠加分析参数
OverlayAnalystParameter overlayAnalystParamUnion = new
OverlayAnalystParameter();
overlayAnalystParamUnion.setOperationRetainedFields(new String[] {
"Name"});
overlayAnalystParamUnion.setSourceRetainedFields(new String[] {
"ClassID"});
overlayAnalystParamUnion.setTolerance(0.0000011074);
// 调用合并叠加分析方法实合并分析
OverlayAnalyst.union(datasetUnioned, datasetUnion, resultDatasetUnion,
overlayAnalystParamUnion);
// 释放工作空间占有的资源
workspace.dispose();
}public static boolean union(Recordset recordset, Recordset unionRecordset, DatasetVector resultDataset, OverlayAnalystParameter parameter)
有关合并运算的详细介绍,请参见另一重载方法 union 的介绍。
注意,用于合并叠加分析的记录集、被合并叠加分析的记录集以及结果数据集的地理坐标系必须一致。
recordset - 被合并叠加分析的记录集,必须是面。unionRecordset - 用于合并叠加分析的记录集,必须是面。resultDataset - 存放分析结果的数据集。parameter - 叠加分析的参数对象,该对象用于设置分析时的保留字段等分析参数。
public void overlayAnalystUnion2() {
// 返回被合并的记录集与用于合并的记录集
Workspace workspace = new Workspace();
String rootPath = android.os.Environment.getExternalStorageDirectory().getAbsolutePath();
DatasourceConnectionInfo datasourceConnectionInfo = new
DatasourceConnectionInfo(
rootPath + "/SampleData/changchun/changchun.udb", "changchun", "");
Datasource targetDatasource = workspace.getDatasources().open(
datasourceConnectionInfo);
DatasetVector datasetUnioned = (DatasetVector) targetDatasource.
getDatasets().get("ResidentialArea");
QueryParameter queryParamUnioned = new QueryParameter();
queryParamUnioned.setAttributeFilter("ClassID = 32023");
queryParamUnioned.setHasGeometry(true);
Recordset queryResultUnioned = datasetUnioned.query(queryParamUnioned);
DatasetVector datasetUnion = (DatasetVector) targetDatasource.
getDatasets().get("Frame_R");
Recordset queryResultUnion = datasetUnion.getRecordset(false,
CursorType.DYNAMIC);
// 创建一个面矢量数据集,用于存储合并分析返回的结果
String resultDatasetUnionName = targetDatasource.getDatasets().
getAvailableDatasetName(
"resultDatasetUnion");
DatasetVectorInfo datasetvectorInfoUnion = new DatasetVectorInfo();
datasetvectorInfoUnion.setType(DatasetType.REGION);
datasetvectorInfoUnion.setName(resultDatasetUnionName);
datasetvectorInfoUnion.setEncodeType(EncodeType.NONE);
DatasetVector resultDatasetUnion = targetDatasource.getDatasets().
create(datasetvectorInfoUnion);
// 设置叠加分析参数
OverlayAnalystParameter overlayAnalystParamUnion = new
OverlayAnalystParameter();
overlayAnalystParamUnion.setOperationRetainedFields(new String[] {
"Name"});
overlayAnalystParamUnion.setSourceRetainedFields(new String[] {
"ClassID"});
overlayAnalystParamUnion.setTolerance(0.0000011074);
// 调用合并叠加分析方法实合并分析
OverlayAnalyst.union(queryResultUnioned, queryResultUnion,
resultDatasetUnion, overlayAnalystParamUnion);
// 释放工作空间占有的资源
workspace.dispose();
}public static boolean union(DatasetVector dataset, Geometry[] unionGeometries, DatasetVector resultDataset, OverlayAnalystParameter parameter)
有关合并运算的详细介绍,请参见另一重载方法 union 的介绍。
注意,用于合并叠加分析的面对象数组、被合并叠加分析的数据集以及结果数据集的地理坐标系必须一致。
dataset - 被合并叠加分析的数据集,必须是面数据集。unionGeometries - 用于合并叠加分析的面对象数组。resultDataset - 存放分析结果的数据集。parameter - 叠加分析的参数对象,该对象用于设置分析时的保留字段等分析参数。public static boolean update(DatasetVector dataset, DatasetVector updateDataset, DatasetVector resultDataset, OverlayAnalystParameter parameter)
用于更新叠加分析的数据集、被更新叠加分析的数据集以及结果数据集的地理坐标系必须一致。
第一数据集与第二数据集的类型都必须是面数据集。结果数据集中保留了更新数据集的几何形状和属性信息。

dataset - 被更新叠加分析的数据集,必须是面类型。updateDataset - 用于更新叠加分析的数据集,必须是面数据集。resultDataset - 存放分析结果的数据集。parameter - 叠加分析的参数对象,该对象用于设置分析时的保留字段等分析参数。
public void overlayAnalystUpdate1() {
// 返回被更新的矢量数据集与用于更新的矢量数据集
Workspace workspace = new Workspace();
String rootPath = android.os.Environment.getExternalStorageDirectory().getAbsolutePath();
DatasourceConnectionInfo datasourceConnectionInfo = new
DatasourceConnectionInfo(
rootPath + "/SampleData/changchun/changchun.udb", "changchun", "");
Datasource targetDatasource = workspace.getDatasources().open(
datasourceConnectionInfo);
DatasetVector datasetUpdated = (DatasetVector) targetDatasource.
getDatasets().get("Frame_R");
DatasetVector datasetUpdate = (DatasetVector) targetDatasource.
getDatasets().get("ResidentialArea");
// 创建一个面矢量数据集,用于存储更新分析返回的结果
String resultDatasetUpdateName = targetDatasource.getDatasets().
getAvailableDatasetName(
"resultDatasetUpdate");
DatasetVectorInfo datasetvectorInfoUpdate = new DatasetVectorInfo();
datasetvectorInfoUpdate.setType(DatasetType.REGION);
datasetvectorInfoUpdate.setName(resultDatasetUpdateName);
datasetvectorInfoUpdate.setEncodeType(EncodeType.NONE);
DatasetVector resultDatasetUpdate = targetDatasource.getDatasets().
create(datasetvectorInfoUpdate);
// 设置叠加分析参数
OverlayAnalystParameter overlayAnalystParamUpdate = new
OverlayAnalystParameter();
overlayAnalystParamUpdate.setTolerance(0.0089078724);
// 调用更新叠加分析方法实更新分析
OverlayAnalyst.update(datasetUpdated, datasetUpdate,
resultDatasetUpdate, overlayAnalystParamUpdate);
// 释放工作空间占有的资源
workspace.dispose();
}public static boolean update(Recordset recordset, Recordset updateRecordset, DatasetVector resultDataset, OverlayAnalystParameter parameter)
有关更新运算的详细介绍,请参见另一重载方法 update 的介绍。
注意,用于更新叠加分析的记录集,被更新叠加分析的记录集以及结果数据集的地理坐标系必须一致。
recordset - 被更新叠加分析的记录集,必须是面类型。updateRecordset - 用于更新叠加分析的记录集,必须是面类型。resultDataset - 存放分析结果的数据集。parameter - 叠加分析的参数对象,该对象用于设置分析时的保留字段等分析参数。
public void overlayAnalystUpdate2() {
// 返回被更新的记录集与用于更新的记录集
Workspace workspace = new Workspace();
String rootPath = android.os.Environment.getExternalStorageDirectory().getAbsolutePath();
DatasourceConnectionInfo datasourceConnectionInfo = new
DatasourceConnectionInfo(
rootPath + "/SampleData/changchun/changchun.udb", "changchun", "");
Datasource targetDatasource = workspace.getDatasources().open(
datasourceConnectionInfo);
DatasetVector datasetUpdated = (DatasetVector) targetDatasource.
getDatasets().get("Frame_R");
Recordset queryResultUpdated = datasetUpdated.getRecordset(false,
CursorType.DYNAMIC);
DatasetVector datasetUpdate = (DatasetVector) targetDatasource.
getDatasets().get("ResidentialArea");
QueryParameter queryParamUpdate = new QueryParameter();
queryParamUpdate.setAttributeFilter("ClassID = 32023");
queryParamUpdate.setHasGeometry(true);
Recordset queryResultUpdate = datasetUpdate.query(queryParamUpdate);
// 创建一个面矢量数据集,用于存储更新分析返回的结果
String resultDatasetUpdateName = targetDatasource.getDatasets().
getAvailableDatasetName(
"resultDatasetUpdate");
DatasetVectorInfo datasetvectorInfoUpdate = new DatasetVectorInfo();
datasetvectorInfoUpdate.setType(DatasetType.REGION);
datasetvectorInfoUpdate.setName(resultDatasetUpdateName);
datasetvectorInfoUpdate.setEncodeType(EncodeType.NONE);
DatasetVector resultDatasetUpdate = targetDatasource.getDatasets().
create(datasetvectorInfoUpdate);
// 设置叠加分析参数
OverlayAnalystParameter overlayAnalystParamUpdate = new
OverlayAnalystParameter();
overlayAnalystParamUpdate.setTolerance(0.0000013678);
// 调用更新叠加分析方法实更新分析
OverlayAnalyst.update(queryResultUpdated, queryResultUpdate,
resultDatasetUpdate, overlayAnalystParamUpdate);
// 释放工作空间占有的资源
workspace.dispose();
}public static boolean update(DatasetVector dataset, Geometry[] updateGeometries, DatasetVector resultDataset, OverlayAnalystParameter parameter)
有关更新运算的详细介绍,请参见另一重载方法 update 的介绍。
注意,用于更新叠加分析的面对象数组、被更新叠加分析的数据集以及结果数据集的地理坐标系必须一致。
dataset - 被更新叠加分析的数据集,必须是面数据集。updateGeometries - 用于更新叠加分析的面对象数组。resultDataset - 存放分析结果的数据集。parameter - 叠加分析的参数对象,该对象用于设置分析时的保留字段等分析参数。public static boolean clipCAD(DatasetVector dataset, Geometry clipRegion, DatasetVector resultDataset, boolean bClipInRegion, boolean bErase, double dTolerace)
dataset - 被裁数据集clipRegion - 裁剪区域resultDataset - 裁剪结果数据集bClipInRegion - 是否在裁剪区域内,true表示裁剪区域内部bErase - 是否擦除dTolerace - 容限public static boolean clipText(DatasetVector dataset, Geometry clipRegion, DatasetVector resultDataset, boolean bClipInRegion, boolean bErase, double dTolerace)
dataset - 被裁数据集clipRegion - 裁剪区域resultDataset - 裁剪结果数据集bClipInRegion - 是否在裁剪区域内,true表示裁剪区域内部bErase - 是否擦除dTolerace - 容限