Daha çox

Arcobjects VBA-da bir həndəsə ilə bir təbəqə arasındakı kəsişmə


bir çoxbucaqlı və bir bağlama təbəqəsi arasında bir kəsişmə etməliyəm, klipdə istifadə olunan çoxbucaq heç bir təbəqəyə aid deyildir və bu kəsişmənin nəticəsi içindəki bütün bağlamalar olmalıdır və çoxbucaqlı (klip) tərəfindən kəsilmiş olmalıdır. ITopologicalOperator-dan istifadə etmək, lakin bu alətlə necə işləməyimi başa düşmədim, nəticədə bir xüsusiyyət vermiş kimi görünür, amma mənim vəziyyətimdə bir sıra xüsusiyyətlərə ehtiyacım var.

işim üçün Arcobject-də istifadə etmək üçün doğru vasitə verə bilərsinizmi?

hər hansı bir tövsiyə xoşdur :)

əvvəlcədən təşəkkür edirəm


Həndəsə ilə bir məkan süzgəci (ISpatialFilter) yaradın və təbəqə üçün bir xüsusiyyət göstəricisi əldə edin (IFeatureclass.Search istifadə edərək). Axtarış həndəsəsini ITopologicalOperator-a göndərin və hər IFeature.Shape-də IFeatureCursor.Next () tərəfindən qaytarılmış formada kəsişmə çağırın.


köməyiniz üçün təşəkkür edirəm, çox faydalı oldu :), amma yenə də kəsişmənin nəticəsini qoya biləcəyim yeni bir təbəqə yaratmağı düşünürəm, bu kodu sınamışam, amma işləmirəm ilə bir xəttim var #

kod

"Set pSpatialFilter = Yeni SpatialFilter Set pSpatialFilter.Geometry = pPoly 'çoxbucaqlı klip pSpatialFilter.SpatialRel = esriSpatialRelContains Set pUpdateCursor = fcpu.Update (pSpatialFilter, FalseFTFTFTFTFFFT = SetupPoFature

Dim geom IGeometry Dim fe As IFeature kimi

'iş yerini al və düzəlişə başla

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

Set pNewWSName = Yeni WorkspaceName pNewWSName.WorkspaceFactoryProgID = _ "esriCore.ShapeFileWorkspaceFactory" pNewWSName.PathName = "c: " Set pDatasetName.WorkspaceName = pNewWSName pDatasetName.

Dim pFName IName olaraq ayarlayın pFName = pFeatClassName

Set fcout = pFName.Open # 'burada dayanır Dim pDataset kimi IDataset Set pDataset = fcout

IWorkspace olaraq Dim pWorkspace Set pWorkspace = pDataset.Workspace

IWorkspaceEdit Olaraq Dim pWorkspaceEdit Set pWorkspaceEdit = pWorkspace

pWorkspaceEdit.StartEditing True pWorkspaceEdit.StartEditOperation

"

Dim pFeat kimi IFeature Dim pRow As IRow Dim pFlds kimi IFields Dim lSFld as long Dim i As long

PFeature heç bir şey olmayana qədər edin

'Fe seçin = Yeni Xüsusiyyət

'Geom = pTopOp.Intersect təyin edin (pFeature.Shape, esriGeometry1Dimension)

PFeat = fcout.CreateFeature 'fcout.Fields = pFeat.Fields seçin

'PFlds = pFeat.Fields'ı seçin i = 0 üçün pFlds.FieldCount - 1

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

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

'Sonrakı i

PFeat.Shape = pTopOp.Intersect (pFeature.Shape, esriGeometry1Dimension) pFeat.Store Set pFeature = pUpdateCursor.NextFeature Loop pWorkspaceEdit.StopEditOperation pWorkspaceEdit.Stopiting


Videoya baxın: Test toplusu Həndəsənin ilk anlayışları 1-ci hissə online dərslər Nicat Bağışzadə (Oktyabr 2021).