浏览问题
等待回复
精选文章
申请试用
资源中心
漏洞修复
注册
|
登录
SuperMap技术问答社区
我要
提问
智能客服
首页
/
浏览问题
/
组件GIS
/
问题详情
三维场景自定义添加图片标签
cherish
31EXP
2017年04月21日
怎么实现在三维场景中选择图片后添加到场景中并显示?
三维
2 个回答
您好,一般是添加点,然后设置点图层的风格GeoStyle3D.MarkerFile。
邹涛
3,389EXP
2017年04月21日
显示前 36 条评论
如果您的recordset是CAD模型数据集的recordset的话,您应该添加geomodel而不是直接添加geocircle
比如您可以GeoModel geoModel = geoCircle.GetGeoModel(100,100);
recordset.AddNew(geoModel);
额不好意思哈,我又试了下,geoModel是可以添加,不过geoCircle也可以成功添加的(返回true)。要不您把您相关的代码发一下?
我这边添加geoModel的代码:
GeoCircle3D geocircle = new GeoCircle3D(new Point3D(0, 0, 0), 10000);
GeoModel geoModel = geocircle.GetGeoModel(100,100);
if (recordset.AddNew(geoModel))
{
MessageBox.Show("helloworld");
}
添加geoCircle的代码(直接添加的话不用写getGeoModel()):
if(recordset.AddNew(new GeoCircle3D(new Point3D(0, 0, 0), 10000)))
{
MessageBox.Show("helloworld");
}
我用的是Region3D 数据集,添加geoModel还是返回false.
m_sceneControl.TrackMode = SuperMap.UI.TrackMode3D.Edit;
Datasource datasource = m_workspace.Datasources[0];
String bufferName = "缓冲分析";
//if (m_workspace.Datasources[0].Datasets.Contains(bufferName))
//{
// m_workspace.Datasources[0].Datasets.Delete(bufferName);
//}
// 缓冲区结果数据集和对应的场景图层
DatasetVectorInfo layerInfo = new DatasetVectorInfo(bufferName, DatasetType.Region3D);
DatasetVector m_bufferDataset = datasource.Datasets.Create(layerInfo);
#region 创建缓冲数据集
Layer3DSettingVector layer3DSetting = new Layer3DSettingVector();
GeoStyle3D style = new GeoStyle3D();
style.FillForeColor = Color.FromArgb(100, 255, 128, 64);
style.AltitudeMode = AltitudeMode.RelativeToGround;
style.FillMode = FillMode3D.Fill;
layer3DSetting.Style = style;
Layer3D m_layerBuffer = m_sceneControl.Scene.Layers.Add(m_bufferDataset, layer3DSetting, true);
m_layerBuffer.Caption = bufferName;
m_layerBuffer.IsEditable = true;
Recordset recordset = m_bufferDataset.GetRecordset(false, CursorType.Dynamic);
recordset.MoveLast();
GeoCircle3D geoCircle = new GeoCircle3D(new Point3D(x, y, 0), Radius);
GeoModel geoModel = geoCircle.GetGeoModel(100,100);
recordset.AddNew(geoModel);
recordset.Update();
recordset.Dispose();
m_layerBuffer.UpdateData();
m_sceneControl.Scene.Refresh();
recordset.Dispose();
我刚试过了,换为CAD数据集是可以的,但Region3D 数据集,添加geoModel还是返回false
Region3D的话,Region3D是三维面数据集,但是GeoCircle3D并不属于三维面数据,而是属于CAD数据,所以并不能直接添加至Region3D中(同理,GeoModel也不能添加至三维面数据集)。
您要是想将GeoCircle3D添加至三维面数据集中的话,
首先建议您使用GeoCircle而不是GeoCircle3D(其实后者就是前者加了高程)。
然后,您需要先将GeoCircle转换为GeoRegion。
再提取GeoRegion中所有结点的子对象(Point2Ds)。
然后根据这个Point2Ds(二维点对象集合)创建Point3Ds(三维点数据集合)。
接着根据Point3Ds构造GeoRegion3D。
最后即可这个GeoRegion3D添加至Region3D中。
请
登录
或者
注册
后再添加评论。
选择图片后,使用构建GeoPicture3D对象,添加到您所需要添加的地方,屏幕图层,跟踪层,以及KML都可以添加
周仕斌
1,752EXP
2017年04月21日
请
登录
或者
注册
后再添加评论。
智能推荐
相关问题
相关文章
推荐教程
三维场景中加图片标签(定位标签)
imobile三维场景中点标注怎么添加自定义图标
webgl如何为三维场景的对象添加标签?
iClient 3D三维场景添加文本标签
三维模型 生成场景缓存时,对象ID字段只给了SMID等4个选项,能换自定义字段么
用自定义三维线型生成的管线场景缓存可以在webgl使用自发光纹理吗?
.net三维场景中如何实现自定义坐标系
标签专题图能否自定义标签背景底图
热门文章
查看更多>
关注我们
超图软件官网
SuperMap Online
地图慧
帮助中心
备案信息
技术资源中心
...