首页 / 浏览问题 / 组件GIS / 问题详情
如何在三维球面场景中画圆
28EXP 2017年12月19日
想实现的是在三维场景中画圆,但是m_sceneControl.Action = Action3D.CreatePolygon中没有看见画圆的事件,怎么才能画圆呢

1个回答

您好,这个只能在SceneControl.Tracked 事件或SceneControl.Trackeing事件去捕捉您绘制的对象,然后再把捕捉到的对象添加到跟踪图层显示。
5,985EXP 2017年12月19日
先这么写:

GeoCircle3D georegion3d = e.Geometry as GeoCircle3D;

然后在在SceneControl.Trackeing事件中这么写:

 GeoCircle3D georegion3d = e.Geometry as GeoCircle3D;

 GeoStyle3D style3d = new GeoStyle3D();
 style3d.FillMode = FillMode3D.LineAndFill;
 style3d.LineWidth = 2;
 style3d.LineColor = Color.White;
 georegion3d.Style3D = style3d;

m_sceneControl.Scene.TrackingLayer.Add(geomodel, "region3d");
 

但是这么写就会出错,我怎么去捕捉我绘制的对象正好是个圆呢
去tracked事件捕获完整对象,另外你选择的绘制模式是绘制面对象的,不是绘制圆的。
但是绘制模式中时没有绘制圆的
那你直接注册鼠标点击事件,点击第一个点作为圆的中心,点击第二个点,计算与第一个点的距离,作为圆的半径,这就就可以构造出来。
我去试了下,计算出来的距离是度的距离,怎么才能算出半径是米的距离呢
刚刚试了一下比较简单的方式,你用Action3D.MeasureDistance去绘制起点好终点,再到scenecontrol.Tracked事件里面去获取绘制的对象的长度,单位是米。
还有没有其他的办法呢,就是获取了这条线几何对象,怎么去得到它的长度,单位为米
方案如下:

1.刚刚上面说过了

2.点击一个点,另外直接指定一个半径来构造三维圆

3.先对获取到的点做投影转换,得到以米为坐标单位的点,再去计算两点之间的距离

另外 GeoCircle3D是模型对象。
那要想添加圆,是添加GeoCircle对象?
建议你在iDesktop里面绘制对象看看哪种对象是你想要构造的,然后看看它们的构造方法。
刚刚想到一个算距离的接口:Geometrist.ComputeGeodesicDistance这个是根据地球曲率来计算出两点之间的测地线(曲线距离),但是点距离比较小的时候,直线距离和测地线的距离几乎是一致的。
这个地球曲率便是相应坐标系下的曲率?
这个方法传参数的时候会让你传参考体的长轴和扁率
那便是目标坐标系下的长轴和扁率?

这种方法能求出线长度吗

Geometrist.ComputeLength
这个返回的是线对象,你自己测试一下获取线长度单位是不是米
...