gzstyxb
路人甲
路人甲
  • 注册日期2004-09-22
  • 发帖数358
  • QQ
  • 铜币1045枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:2393回复:3

ArcEngine裁剪问题

楼主#
更多 发布于:2007-07-12 16:22
<P>我用ArcEngine的一个接口,ITopologicalOperatorPtr来裁剪线图形时候,发现有的裁剪结果与裁剪前的线条方向一致,而有的结果却方向与裁减前恰好颠倒了。</P>
<P>我想的是,所有裁剪结果与裁剪前图形方向应该一致。</P>
<P>请问各位指点指点,需要怎么做才使裁剪结果与裁剪前图形的方向保持一致?</P>
喜欢0 评分0
由爱故生忧, 由爱故生怖. 若离于爱者, 无忧亦无怖.
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15945
  • QQ554730525
  • 铜币25337枚
  • 威望15352点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
1楼#
发布于:2007-07-12 17:35
<P>没注意方向,能把你的结果截图上来看看吗?</P>
<P>下面应该是你用的大概的代码</P>
<P>Dim pClippedPolyline As IPolyline<BR>Dim pTopOp As ITopologicalOperator<BR>Set pTopOp = pPolygon<BR>Set pClippedPolyline = pTopOp.Intersect(pPolyline,esriGeometry1Dimension)</P>
举报 回复(0) 喜欢(0)     评分
gzstyxb
路人甲
路人甲
  • 注册日期2004-09-22
  • 发帖数358
  • QQ
  • 铜币1045枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2007-07-30 11:08
<P>谢谢总统指点。我采用的裁剪代码与你给出的代码一样。代码如下:</P>
<P>    ITopologicalOperatorPtr ipTopolog(CLSID_Line); </P>
<P>long lCount = 0;<br>while (SUCCEEDED(ipSorCursor->NextFeature(;ipFeature))<br>  ;; (NULL != ipFeature)) {<br>  result = ipFeature->get_Shape(;ipGeometry);<br>  if (FAILED(result) || NULL == ipGeometry) {<br>   TRACE("%ld\n", result); <br>   continue;<br>  }</P>
<P>  ((IZAwarePtr)ipGeometry)->put_ZAware(VARIANT_FALSE);<br>  ((IMAwarePtr)ipGeometry)->put_MAware(VARIANT_FALSE);</P>
<P>  // 入库图形都需要裁剪才能入库的。<br>  ipTopolog = ipGeometry;<br>  result = ipTopolog->Intersect((IGeometryPtr)ipGridPolygon, esriGeometry1Dimension, ;ipResult);<br>  if (FAILED(result) || NULL == ipResult) {<br>   TRACE("%ld\n", result); <br>   continue;<br>  }</P>
<P>  result = ipResult->get_IsEmpty(;vb);<br>  if (VARIANT_TRUE == vb) {<br>   TRACE("%ld\n", result); <br>   continue;  <br>  }</P>
<P>  ...<br>}</P>
<P>我不明白的,为什么有的线段被裁剪后方向反向,而有的线段却和裁剪前方向一致?当然,我要求是所有裁剪之后线段方向应该和裁剪前方向一致,因为线段的方向也是有用的。</P>
<P>裁剪反向的图形说明:</P>
<P><br></P>
[此贴子已经被作者于2007-7-30 11:10:18编辑过]
由爱故生忧, 由爱故生怖. 若离于爱者, 无忧亦无怖.
举报 回复(0) 喜欢(0)     评分
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15945
  • QQ554730525
  • 铜币25337枚
  • 威望15352点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
3楼#
发布于:2007-07-30 13:29
<P>你可以利用IBasicGeoprocessor的clip方法来实现,或许可以解决这个问题</P>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部