happydust
路人甲
路人甲
  • 注册日期2004-12-31
  • 发帖数25
  • QQ
  • 铜币122枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1874回复:5

ArcObjects 中查找临近多边型??

楼主#
更多 发布于:2005-08-01 08:54
<P>请教在AO中用什么方法可以查找临近的多边形,比如:一个面的共享Edge的多边形 。</P>
<P>IGeometry中都没有相关的方法,那位大虾知道怎么做么。。。。。</P>
喜欢0 评分0
happydust
路人甲
路人甲
  • 注册日期2004-12-31
  • 发帖数25
  • QQ
  • 铜币122枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2005-08-01 19:11
<P>怎么都没人能帮的上忙吗。。。。小弟夏天穿棉袄倒立求大虾帮忙!!!</P>
举报 回复(0) 喜欢(0)     评分
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15951
  • QQ
  • 铜币25345枚
  • 威望15368点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
2楼#
发布于:2005-08-02 00:08
你可以利用空间查询来查找了
<P>空间关系你可以自己设置的</P>
<P>How to use: <BR>VBA </P>
<P>Add this to the Click event of a UIButtonControl in ArcMap: <BR>  Dim pMxDoc As IMxDocument<BR>  Set pMxDoc = ThisDocument<BR>  <BR>  Dim pEnv As IEnvelope<BR>  Dim pRubber As IRubberBand<BR>  Set pRubber = New RubberEnvelope<BR>  <BR>  Dim pActiveView As IActiveView<BR>  Set pActiveView = pMxDoc.FocusMap<BR>  Set pEnv = pRubber.TrackNew(pActiveView.ScreenDisplay, Nothing)<BR>  <BR>  Dim pSpatialFilter As ISpatialFilter<BR>  Set pSpatialFilter = New SpatialFilter<BR>  Set pSpatialFilter.Geometry = pEnv<BR>  pSpatialFilter.SpatialRel = esriSpatialRelIntersects</P>
<P>  Dim lPoints As Long, lPolygons As Long, lPolylines As Long<BR>  Dim pLayer As IFeatureLayer<BR>  Dim pFeatureCursor As IFeatureCursor<BR>  Dim pFeature As IFeature<BR>  Dim i As Long<BR>  For i = 0 To pMxDoc.FocusMap.LayerCount - 1<BR>    If (TypeOf pMxDoc.FocusMap.Layer(i) Is IGeoFeatureLayer) Then<BR>      Set pLayer = pMxDoc.FocusMap.Layer(i)<BR>      pSpatialFilter.GeometryField = pLayer.FeatureClass.ShapeFieldName<BR>      Set pFeatureCursor = pLayer.Search(pSpatialFilter, True)<BR>      Set pFeature = pFeatureCursor.NextFeature<BR>      Do Until (pFeature Is Nothing)<BR>        Select Case pFeature.Shape.GeometryType<BR>          Case esriGeometryPoint<BR>            lPoints = lPoints + 1<BR>          Case esriGeometryPolyline<BR>            lPolylines = lPolylines + 1<BR>          Case esriGeometryPolygon<BR>            lPolygons = lPolygons + 1<BR>        End Select<BR>        Set pFeature = pFeatureCursor.NextFeature<BR>      Loop<BR>    End If<BR>  Next i<BR>  MsgBox "Features Found:" ; vbCrLf ; lPoints ; " Points " ; vbCrLf ; lPolylines ; " Polylines " ; vbCrLf ; lPolygons ; " Polygons "</P>

GIS麦田守望者,期待与您交流。
举报 回复(0) 喜欢(0)     评分
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15951
  • QQ
  • 铜币25345枚
  • 威望15368点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
3楼#
发布于:2005-08-02 00:09
或者查看下ITopologicalOperator Interface
GIS麦田守望者,期待与您交流。
举报 回复(0) 喜欢(0)     评分
happydust
路人甲
路人甲
  • 注册日期2004-12-31
  • 发帖数25
  • QQ
  • 铜币122枚
  • 威望0点
  • 贡献值0点
  • 银元0个
4楼#
发布于:2005-08-03 23:41
<P>可以了,太感谢了,我还想问请问一下查找相临的多边形,如何计算他们的公共边长度??</P>
举报 回复(0) 喜欢(0)     评分
超级大阿呆
路人甲
路人甲
  • 注册日期2004-06-05
  • 发帖数46
  • QQ
  • 铜币147枚
  • 威望0点
  • 贡献值0点
  • 银元0个
5楼#
发布于:2005-08-04 15:58
<P><img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em01.gif" /></P>
<P>谢谢3楼的</P>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部