缓冲区相关问题

0 投票

iobjectscpp 9D   win10 64位

在对面数据集生成缓冲区的过程中出现以下结果

是因为我的参数设置不对吗?我只设置了半径和是否保存字段信息。

生成缓冲区可以不是圆角矩形,而是直角矩形??

ps:顺便问一下,选择集怎样获取,需要对选择对象进行缓冲分析的情况下

10月 23, 2019 分类:  128次浏览 | 用户: 爱太空 初出茅庐 (34 分)

1个回答

0 投票
 
已采纳
您好,缓存区是以缓冲半径绘制的圆,不是矩形。

选择集可以通过被选择的图层获取,如果是点击地图时选中的对象,可通过UGMapEditWnd的对象选中回调中获取。
10月 24, 2019 用户: 幸俊 学富五车 (694 分)
采纳于 10月 29, 2019 用户:爱太空

可是我用桌面版生成的是平的啊,就是圆角矩形,中间没有弧度,cpp生成的能这样吗?顺便问一下,cpp的鹰眼功能主要调用那个接口才能加入

您好,你说的这个是圆弧的光滑度,这受半圆弧弧段数(UGBufferParam::m_nSemicircleSegments)影响,可调整缓存区参数。

cpp中没有提供鹰眼功能,其他组件是组件层封装的小的地图窗口。
好的,谢谢您

还是不行啊,我用的和桌面版一样的弧段数,生成的缓冲区还是有凹陷,还有其他的办法吗???

您好,没能重现这个,能否将您的参数和数据发一下?提供一下下载链接

Tower_P数据集是多个矩形,无重叠

	UGDatasetVector * dataset = (UGDatasetVector *) workspace ->GetDataSource(0)->GetDataset (_U("Tower_P"));
	UGDatasetVector * datasetempty = new UGDatasetVector();
	UGBufferParam* param = new UGBufferParam();
	param->m_nSemicircleSegments = 200;
	param ->m_bSaveFieldInfo = true;
	param ->m_dBufferRadius = 20;
	UGDatasetVectorInfo* info = new UGDatasetVectorInfo ();
	info ->m_nType = UGC ::UGDataset ::DatasetType ::Region;
	UGString name = UGString();	
	name = workspace ->GetDataSource(0)->GetUnoccupiedDatasetName(name.FromStd ("result_Tower"));
	info ->m_strName = name ;
	info ->m_strTableName =name ;
    UGDatasetVector * datasetresult = workspace ->GetDataSource (0)->CreateDatasetVector(*info);	
	UGC::UGBuffer::CreateBuffer(dataset ,*param,datasetresult ,datasetempty);

Tower_P数据集是多个矩形,无重叠

    UGDatasetVector * dataset = (UGDatasetVector *) workspace ->GetDataSource(0)->GetDataset (_U("Tower_P"));
	UGDatasetVector * datasetempty = new UGDatasetVector();
	UGBufferParam* param = new UGBufferParam();
	param->m_nSemicircleSegments = 200;
	param ->m_bSaveFieldInfo = true;
	param ->m_dBufferRadius = 20;
	UGDatasetVectorInfo* info = new UGDatasetVectorInfo ();
	info ->m_nType = UGC ::UGDataset ::DatasetType ::Region;
	UGString name = UGString();	
	name = workspace ->GetDataSource(0)->GetUnoccupiedDatasetName(name.FromStd ("result_Tower"));
	info ->m_strName = name ;
	info ->m_strTableName =name ;
    UGDatasetVector * datasetresult = workspace ->GetDataSource (0)->CreateDatasetVector(*info);	
	UGC::UGBuffer::CreateBuffer(dataset ,*param,datasetresult ,datasetempty);

您好,请使用UGBufferAnalyst::CreateBuffer(),UGBuffer已经遗弃,在头尾见开始有说明。其他组件也是调用的UGBufferAnalyst::CreateBuffer()
可以了,谢谢您
...