zhangzhenouc
路人甲
路人甲
  • 注册日期2011-10-26
  • 发帖数21
  • QQ
  • 铜币155枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:6156回复:10

跪求二三维联动的代码或思路?

楼主#
更多 发布于:2011-11-12 11:22
我用ArcScence做三维开发,由于本人很菜,二三维联动一直不知道如何实现,希望高手们不吝赐教!
喜欢0 评分0
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15951
  • QQ
  • 铜币25345枚
  • 威望15368点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
1楼#
发布于:2011-11-14 09:39
<p>是定制ArcScence?</p><p>那可以在程序里获取arcsence已经打开的图层,利用二位的map控件打开,进行视图同步了,利用AO的接口,这个并不难做到了。</p>
GIS麦田守望者,期待与您交流。
举报 回复(0) 喜欢(0)     评分
zhangzhenouc
路人甲
路人甲
  • 注册日期2011-10-26
  • 发帖数21
  • QQ
  • 铜币155枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2011-11-14 11:14
<p>是用AE开发 实现MapControl与SceneControl同步</p>
举报 回复(0) 喜欢(0)     评分
zhangzhenouc
路人甲
路人甲
  • 注册日期2011-10-26
  • 发帖数21
  • QQ
  • 铜币155枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2011-11-14 11:14
<div class="quote"><b>以下是引用<i>gis</i>在2011-11-14 9:39:00的发言:</b><br/>
<p>是定制ArcScence?</p>
<p>那可以在程序里获取arcsence已经打开的图层,利用二位的map控件打开,进行视图同步了,利用AO的接口,这个并不难做到了。</p></div>
<p>是用AE开发 实现MapControl与SceneControl同步</p>
举报 回复(0) 喜欢(0)     评分
happyGISer
路人甲
路人甲
  • 注册日期2011-09-02
  • 发帖数59
  • QQ
  • 铜币300枚
  • 威望0点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
4楼#
发布于:2011-11-14 12:50
 其实你的要求就像给三维地图做个鹰眼一样,在ESRI中国社区有一个帖子,你看看.希望对你有帮助.<br/>http://bbs.esrichina-bj.cn/ESRI/thread-91380-1-1.html<br/>
举报 回复(0) 喜欢(0)     评分
zhangzhenouc
路人甲
路人甲
  • 注册日期2011-10-26
  • 发帖数21
  • QQ
  • 铜币155枚
  • 威望0点
  • 贡献值0点
  • 银元0个
5楼#
发布于:2011-11-14 13:29
<div class="quote"><b>以下是引用<i>happyGISer</i>在2011-11-14 12:50:00的发言:</b><br/> 其实你的要求就像给三维地图做个鹰眼一样,在ESRI中国社区有一个帖子,你看看.希望对你有帮助.<br/>http://bbs.esrichina-bj.cn/ESRI/thread-91380-1-1.html<br/></div>
<p>我也看到了这个帖子 只是这个帖子使用VC编的 我看不懂VC 呵呵 能不能帮我转一下 转为VB.net C#也行 谢谢</p>
举报 回复(0) 喜欢(0)     评分
happyGISer
路人甲
路人甲
  • 注册日期2011-09-02
  • 发帖数59
  • QQ
  • 铜币300枚
  • 威望0点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
6楼#
发布于:2011-11-14 15:19
好的
<br/>
举报 回复(0) 喜欢(0)     评分
happyGISer
路人甲
路人甲
  • 注册日期2011-09-02
  • 发帖数59
  • QQ
  • 铜币300枚
  • 威望0点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
7楼#
发布于:2011-11-14 15:37
<br>1 [font=Consolas][font=Consolas]ICamera camera = axSceneControl1.Camera;<br>2 IPoint point = camera.Target;<br>3 Draw_Point(point.X, point.Y);<br>4 <br>5  [color=#0000ff][color=#0000ff]private[/color][/color] [color=#0000ff][color=#0000ff]void[/color][/color] Draw_Point([color=#0000ff][color=#0000ff]double[/color][/color] pointX, [color=#0000ff][color=#0000ff]double[/color][/color] pointY)<br>6         {<br>7             [color=#008000][color=#008000]//获取控件的map对象[/color][/color]<br>8             IMap pMap;<br>9             IActiveView pActive;<br>10             pMap = axMapControl1.Map;<br>11             [color=#008000][color=#008000]//pActive = pMap as IActiveView;[/color][/color]<br>12             pActive = (IActiveView)pMap;<br>13 <br>14             [color=#008000][color=#008000]//新建一个点[/color][/color]<br>15             IPoint p = [color=#0000ff][color=#0000ff]new[/color][/color] PointClass();<br>16             p.PutCoords(pointX, pointY);<br>17 <br>18             IPoint p1 = [color=#0000ff][color=#0000ff]new[/color][/color] PointClass();<br>19             p1.PutCoords(pointX + 50.0, pointY + 50.0);<br>20 <br>21             [color=#008000][color=#008000]//产生一个mark元素[/color][/color]<br>22             IMarkerElement pMarkElement;<br>23             pMarkElement = [color=#0000ff][color=#0000ff]new[/color][/color] MarkerElementClass();<br>24 <br>25             [color=#008000][color=#008000]//产生一个修饰mark元素的symbol对象[/color][/color]<br>26             ISimpleMarkerSymbol pSimpleMarkSymbol;<br>27             pSimpleMarkSymbol = [color=#0000ff][color=#0000ff]new[/color][/color] SimpleMarkerSymbolClass();<br>28 <br>29             [color=#008000][color=#008000]//设置符号颜色;[/color][/color]<br>30             IRgbColor pColor = [color=#0000ff][color=#0000ff]new[/color][/color] RgbColorClass();<br>31             pColor.Red = 255;<br>32             pColor.Green = 0;<br>33             pColor.Blue = 0;<br>34             pSimpleMarkSymbol.Color = pColor [color=#0000ff][color=#0000ff]as[/color][/color] IColor;<br>35 <br>36             [color=#008000][color=#008000]//设置符号大小[/color][/color]<br>37             pSimpleMarkSymbol.Size = 5;<br>38 <br>39             [color=#008000][color=#008000]//设置符号类型[/color][/color]<br>40 <br>41             IRgbColor pColor02 = [color=#0000ff][color=#0000ff]new[/color][/color] RgbColorClass();<br>42             pColor02.Red = 0;<br>43             pColor02.Green = 0;<br>44             pColor02.Blue = 255;<br>45 <br>46             pSimpleMarkSymbol.Style = esriSimpleMarkerStyle.esriSMSDiamond;<br>47             pSimpleMarkSymbol.Outline = [color=#0000ff][color=#0000ff]true[/color][/color];<br>48             pSimpleMarkSymbol.OutlineColor = pColor02 [color=#0000ff][color=#0000ff]as[/color][/color] IColor;<br>49             pSimpleMarkSymbol.OutlineSize = 0.5;<br>50 <br>51             [color=#008000][color=#008000]//QI到IElement为其设置Geometry属性[/color][/color]<br>52             IElement pElement;<br>53             pElement = pMarkElement [color=#0000ff][color=#0000ff]as[/color][/color] IElement;<br>54 <br>55             pElement.Geometry = p;<br>56             pMarkElement.Symbol = pSimpleMarkSymbol;<br>57 <br>58             [color=#008000][color=#008000]//添加元素到map中[/color][/color]<br>59             IGraphicsContainer pGraphicsContainer;<br>60             pGraphicsContainer = pMap [color=#0000ff][color=#0000ff]as[/color][/color] IGraphicsContainer;<br>61             pGraphicsContainer.AddElement(pMarkElement [color=#0000ff][color=#0000ff]as[/color][/color] IElement, 0);<br>62             pActive.PartialRefresh(esriViewDrawPhase.esriViewGraphics, [color=#0000ff][color=#0000ff]null[/color][/color], [color=#0000ff][color=#0000ff]null[/color][/color]);<br>63 <br>64 <br>65             pGraphicsContainer.DeleteElement(pElement);<br>66             pElement.Geometry = p1;<br>67             pGraphicsContainer.AddElement(pMarkElement [color=#0000ff][color=#0000ff]as[/color][/color] IElement, 0);<br>68 <br>69         }<br>70 <br>71 ICamera camera = axSceneControl1.Camera;<br>72             IPoint point = camera.Target;<br>73             point.PutCoords(e.mapX, e.mapY);<br>74             axSceneControl1.Camera.Target = point;<br>75 <br>76             ISceneGraph sceneGraph = [color=#0000ff][color=#0000ff]null[/color][/color];<br>77             sceneGraph = axSceneControl1.SceneGraph;<br>78             sceneGraph.RefreshViewers();<br>79 <br>80
<br/>
[此贴子已经被作者于2011-11-14 15:38:15编辑过]
举报 回复(0) 喜欢(0)     评分
zhangzhenouc
路人甲
路人甲
  • 注册日期2011-10-26
  • 发帖数21
  • QQ
  • 铜币155枚
  • 威望0点
  • 贡献值0点
  • 银元0个
8楼#
发布于:2011-11-14 17:21
<div class="quote"><b>以下是引用<i>happyGISer</i>在2011-11-14 15:37:00的发言:</b><br/></div>
<div class="quote"><pre class="htmlcode"><b>以下内容为程序代码:</b><br/><br/>1 ICamera camera = axSceneControl1.Camera;<br/>2 IPoint point = camera.Target;<br/>3 Draw_Point(point.X, point.Y);<br/>4 <br/>5  <font color="#0000ff"><font color="#0000ff">private</font></font> <font color="#0000ff"><font color="#0000ff">void</font></font> Draw_Point(<font color="#0000ff"><font color="#0000ff">double</font></font> pointX, <font color="#0000ff"><font color="#0000ff">double</font></font> pointY)<br/>6         {<br/>7             <font color="#008000"><font color="#008000">//获取控件的map对象</font></font><br/>8             IMap pMap;<br/>9             IActiveView pActive;<br/>10             pMap = axMapControl1.Map;<br/>11             <font color="#008000"><font color="#008000">//pActive = pMap as IActiveView;</font></font><br/>12             pActive = (IActiveView)pMap;<br/>13 <br/>14             <font color="#008000"><font color="#008000">//新建一个点</font></font><br/>15             IPoint p = <font color="#0000ff"><font color="#0000ff">new</font></font> PointClass();<br/>16             p.PutCoords(pointX, pointY);<br/>17 <br/>18             IPoint p1 = <font color="#0000ff"><font color="#0000ff">new</font></font> PointClass();<br/>19             p1.PutCoords(pointX + 50.0, pointY + 50.0);<br/>20 <br/>21             <font color="#008000"><font color="#008000">//产生一个mark元素</font></font><br/>22             IMarkerElement pMarkElement;<br/>23             pMarkElement = <font color="#0000ff"><font color="#0000ff">new</font></font> MarkerElementClass();<br/>24 <br/>25             <font color="#008000"><font color="#008000">//产生一个修饰mark元素的symbol对象</font></font><br/>26             ISimpleMarkerSymbol pSimpleMarkSymbol;<br/>27             pSimpleMarkSymbol = <font color="#0000ff"><font color="#0000ff">new</font></font> SimpleMarkerSymbolClass();<br/>28 <br/>29             <font color="#008000"><font color="#008000">//设置符号颜色;</font></font><br/>30             IRgbColor pColor = <font color="#0000ff"><font color="#0000ff">new</font></font> RgbColorClass();<br/>31             pColor.Red = 255;<br/>32             pColor.Green = 0;<br/>33             pColor.Blue = 0;<br/>34             pSimpleMarkSymbol.Color = pColor <font color="#0000ff"><font color="#0000ff">as</font></font> IColor;<br/>35 <br/>36             <font color="#008000"><font color="#008000">//设置符号大小</font></font><br/>37             pSimpleMarkSymbol.Size = 5;<br/>38 <br/>39             <font color="#008000"><font color="#008000">//设置符号类型</font></font><br/>40 <br/>41             IRgbColor pColor02 = <font color="#0000ff"><font color="#0000ff">new</font></font> RgbColorClass();<br/>42             pColor02.Red = 0;<br/>43             pColor02.Green = 0;<br/>44             pColor02.Blue = 255;<br/>45 <br/>46             pSimpleMarkSymbol.Style = esriSimpleMarkerStyle.esriSMSDiamond;<br/>47             pSimpleMarkSymbol.Outline = <font color="#0000ff"><font color="#0000ff">true</font></font>;<br/>48             pSimpleMarkSymbol.OutlineColor = pColor02 <font color="#0000ff"><font color="#0000ff">as</font></font> IColor;<br/>49             pSimpleMarkSymbol.OutlineSize = 0.5;<br/>50 <br/>51             <font color="#008000"><font color="#008000">//QI到IElement为其设置Geometry属性</font></font><br/>52             IElement pElement;<br/>53             pElement = pMarkElement <font color="#0000ff"><font color="#0000ff">as</font></font> IElement;<br/>54 <br/>55             pElement.Geometry = p;<br/>56             pMarkElement.Symbol = pSimpleMarkSymbol;<br/>57 <br/>58             <font color="#008000"><font color="#008000">//添加元素到map中</font></font><br/>59             IGraphicsContainer pGraphicsContainer;<br/>60             pGraphicsContainer = pMap <font color="#0000ff"><font color="#0000ff">as</font></font> IGraphicsContainer;<br/>61             pGraphicsContainer.AddElement(pMarkElement <font color="#0000ff"><font color="#0000ff">as</font></font> IElement, 0);<br/>62             pActive.PartialRefresh(esriViewDrawPhase.esriViewGraphics, <font color="#0000ff"><font color="#0000ff">null</font></font>, <font color="#0000ff"><font color="#0000ff">null</font></font>);<br/>63 <br/>64 <br/>65             pGraphicsContainer.DeleteElement(pElement);<br/>66             pElement.Geometry = p1;<br/>67             pGraphicsContainer.AddElement(pMarkElement <font color="#0000ff"><font color="#0000ff">as</font></font> IElement, 0);<br/>68 <br/>69         }<br/>70 <br/>71 ICamera camera = axSceneControl1.Camera;<br/>72             IPoint point = camera.Target;<br/>73             point.PutCoords(e.mapX, e.mapY);<br/>74             axSceneControl1.Camera.Target = point;<br/>75 <br/>76             ISceneGraph sceneGraph = <font color="#0000ff"><font color="#0000ff">null</font></font>;<br/>77             sceneGraph = axSceneControl1.SceneGraph;<br/>78             sceneGraph.RefreshViewers();<br/>79 <br/>80 </pre></div>
<div class="quote"><br/></div>
<div class="quote" align="right"><font color="#000066">[此贴子已经被作者于2011-11-14 15:38:15编辑过]</font></div>
<p>非常感谢 我按着你的代码做了一下 我需要实现的基本上都实现了   最后我有一个很2的问题问一下 第一段代码应该写在哪个事件里 我是写在<font face="Verdana">axSceneControl1的OnMouseMove事件里 感觉不是很妥</font></p>
举报 回复(0) 喜欢(0)     评分
zhangzhenouc
路人甲
路人甲
  • 注册日期2011-10-26
  • 发帖数21
  • QQ
  • 铜币155枚
  • 威望0点
  • 贡献值0点
  • 银元0个
9楼#
发布于:2011-11-14 17:22
<p>非常感谢 我按着你的代码做了一下 我需要实现的基本上都实现了   最后我有一个很2的问题问一下 第一段代码应该写在哪个事件里 我是写在<font face="Verdana">axSceneControl1的OnMouseMove事件里 感觉不是很妥</font></p>
举报 回复(0) 喜欢(0)     评分
上一页
游客

返回顶部