对于栅格图像的外挂,我们需要先建立专门的外挂数据集CSeDataset * CSeDatsource::CreateDataset(const CString & strDatasetName,CSeDatasetInfo::Type nType,const CSeRect2D & rcBounds,DWORD dwOptions),注意指定第二个参数类型为外挂类型,如果是外挂SIT数据,则按照联机帮助的说明,四个参数直接指定为CSeDataset::SIT。建立好外挂数据集后,就可以调用CSeDatasetLink::LinkImageFile(const CString & strFileName,CSeOFAgent::OuterFileType nFileType)外挂相应的栅格外挂数据了。对于SIT数据的外挂如下:
CSeDataSource *pDatasource = theApp.m_WorkSpace.GetDataSourceAt(0); // 可编辑的数据源;PM2类型
CSeRect2D rcBound = pDatasource->GetDatasetAt(0)->GetBound();
if ( pDatasource )
{
// 创建SIT数据集;
CSeDataset *pDataset = pDatasource->CreateDataset( _T("LinkSet"), CSeDatasetInfo::ImageOuter, rcBound, CSeDataset::SIT);
if ( pDataset )
{
CFileDialog fileDlg( true, NULL, NULL, 4 | 2, _T("SIT File(.sit)|*.sit"), this);
if ( fileDlg.DoModal() == IDOK )
{
CString strFile = fileDlg.GetPathName();
CSeDatasetLink *pDTLink = (CSeDatasetLink*)pDataset;
// 外挂SIT数据,并添加到地图窗口中显示;
pDTLink->LinkImageFile( strFile, CSeOFAgent::SIT );
m_MapWnd.AddLayer( pDataset, true );
m_MapWnd.**();
}
}
}