|
Dim objRegion As soGeoRegion '裁剪区域
Dim objDataSrc As soDataSource '目标数据源
Dim objDataSet As soDataset '源数据集(被裁剪的数据集)
Dim objDataSetRes As soDataset '目标数据集
Dim objOverlayAnalyst As New soOverlayAnalyst '进行叠加分析的对象,一定要有NEW 关键字
Dim bResult As Boolean
Dim strName As String
'取得目标数据源
Set objDataSrc = frmMain.SuperWorkspace.Datasources.Item(cmbDSName.Text)
'取得用户在地图上画的裁剪对象
Set objRegion = frmMain.SuperMap.TrackedGeometry
'取得源数据集(被裁剪图层的数据集):先取得数据集名称,再获得数据集
strName = Left$(lblSourceLayerName.Caption, InStr(lblSourceLayerName.Caption, "@") - 1)
Set objDataSet = frmMain.SuperMap.Layers.Item(lblSourceLayerName.Caption).Dataset
'目标数据集
If chkNewDtName.Value = 1 Then '存入新数据集
'创建新数据集
If objDataSrc.IsAvailableDatasetName(txtNewDtName.Text) Then '合法数据集名
Set objDataSetRes = objDataSrc.CreateDataset(txtNewDtName.Text, objDataSet.Type, 0)
Else '新数据集名非法
MsgBox "新数据集名非法", vbInformation
txtNewDtName.SetFocus
Exit Sub
End If
Else '用户不使用新数据集
Set objDataSetRes = objDataSrc.Datasets.Item(cmbDtName.Text)
End If
If optIn.Value = True Then '裁剪区域内的对象(裁剪方法)
bResult = objOverlayAnalyst.Clip(objDataSet, objRegion, objDataSetRes)
ElseIf optOut.Value = True Then '裁剪区域外的对象(擦除方法)
bResult = objOverlayAnalyst.Erase(objDataSet, objRegion, objDataSetRes)
End If
'成功后把它加入到地图窗口中
frmMain.SuperMap.Layers.AddDataset objDataSetRes, True |