Mehr

Schnittpunkt zwischen einer Geometrie und einem Layer in Arcobjects VBA

Schnittpunkt zwischen einer Geometrie und einem Layer in Arcobjects VBA


Ich muss einen Schnittpunkt zwischen einem Polygon und einer Parzellenebene erstellen, das im Clip verwendete Polygon gehört zu keiner Ebene und das Ergebnis dieser Schnittmenge sollte alle Parzellen darin enthalten und vom Polygon (Clip) geschnitten werden, also dachte ich um ITopologicalOperator zu verwenden, aber ich habe nicht verstanden, wie man mit diesem Tool arbeitet, auch scheint es eine Funktion als Ergebnis zu geben, aber in meinem Fall brauche ich eine Reihe von Funktionen.

Können Sie mir das richtige Tool zur Verwendung in Arcobject für meinen Fall geben?

Jeder Rat ist willkommen :)

Vielen Dank im Voraus


Erstellen Sie einen räumlichen Filter (ISpatialFilter) mit der Geometrie und rufen Sie einen Feature-Cursor für den Layer ab (mithilfe von IFeatureclass.Search). Wandeln Sie die Suchgeometrie in ITopologicalOperator um und rufen Sie Intersect für jedes von IFeatureCursor.Next() zurückgegebene IFeature.Shape auf.


Danke für deine Hilfe, es war sehr nützlich :) , aber ich bin immer noch beim Erstellen einer neuen Ebene fest, in die ich das Ergebnis der Schnittmenge einfügen könnte. Ich habe diesen Code ausprobiert, aber er funktioniert nicht. Ich habe einen Fehler in der Zeile mit #

Code

"Set pSpatialFilter = New SpatialFilter Set pSpatialFilter.Geometry = pPoly 'der Polygon-Clip pSpatialFilter.SpatialRel = esriSpatialRelContains Set pUpdateCursor = fcpu.Update(pSpatialFilter, False) Set pTopOp = pPoly Set pFeature = pUpdateCursor.NextFeature

Dim geom als IGeometry Dim fe als IFeature

' den Arbeitsbereich holen und mit der Bearbeitung beginnen

Dim fcout As IFeatureClass Dim pNewWSName As IWorkspaceName Dim pFeatClassName As IFeatureClassName Dim pDatasetName As IDatasetName Set pFeatClassName = New FeatureClassName Set pDatasetName = pFeatClassName

Set pNewWSName = Neuer WorkspaceName pNewWSName.WorkspaceFactoryProgID = _ "esriCore.ShapeFileWorkspaceFactory" pNewWSName.PathName = "c:" Set pDatasetName.WorkspaceName = pNewWSName pDatasetName.Name = "Intersect_result"

Dim pFName As IName Set pFName = pFeatClassName

Set fcout = pFName.Open # ' hier stoppt es Dim pDataset As IDataset Set pDataset = fcout

Dim pWorkspace As IWorkspace Set pWorkspace = pDataset.Workspace

Dim pWorkspaceEdit As IWorkspaceEdit Set pWorkspaceEdit = pWorkspace

pWorkspaceEdit.StartEditing True pWorkspaceEdit.StartEditOperation

"

Dim pFeat As IFeature Dim pRow As IRow Dim pFlds As IFields Dim lSFld As Long Dim i As Long

Tue, bis pFeature nichts ist

'Setze fe = Neues Feature

'Geom setzen = pTopOp.Intersect(pFeature.Shape, esriGeometry1Dimension)

Set pFeat = fcout.CreateFeature 'fcout.Fields = pFeat.Fields

' Setze pFlds = pFeat.Fields ' For i = 0 To pFlds.FieldCount - 1

' lSFld = pFeature.Fields.FindField(pFlds.Field(i).Name)

' pFeat.Value(i) = pFeature.Value(lSFld)

' Als nächstes ist ich

Set pFeat.Shape = pTopOp.Intersect(pFeature.Shape, esriGeometry1Dimension) pFeat.Store Set pFeature = pUpdateCursor.NextFeature Schleife pWorkspaceEdit.StopEditOperation pWorkspaceEdit.StopEditing True


Schau das Video: The Movie Great Pyramid K 2019 - Director Fehmi Krasniqi