阅读:1874回复:5
ArcObjects 中查找临近多边型??
<P>请教在AO中用什么方法可以查找临近的多边形,比如:一个面的共享Edge的多边形 。</P>
<P>IGeometry中都没有相关的方法,那位大虾知道怎么做么。。。。。</P> |
|
1楼#
发布于:2005-08-01 19:11
<P>怎么都没人能帮的上忙吗。。。。小弟夏天穿棉袄倒立求大虾帮忙!!!</P>
|
|
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> |
|
|
3楼#
发布于:2005-08-02 00:09
或者查看下ITopologicalOperator Interface
|
|
|
4楼#
发布于:2005-08-03 23:41
<P>可以了,太感谢了,我还想问请问一下查找相临的多边形,如何计算他们的公共边长度??</P>
|
|
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> |
|