Daha çox

Dairələrdə dəyirmi mərhələ ... Buffering / ArcObjects / VBA


VBA və ArcObjects-i yeni öyrənməyə başladım və bu anda yalnız müxtəlif şeylər etməyə çalışaraq oynamağa başladım. Etməyə çalışdığım bir aləti vurun və istifadəçinin xəritəyə bir nöqtə qrafiki qoymasına icazə verin, eyni zamanda əlavə edilmiş nöqtəni (işarəni) bufer edin. Xəritədə nöqtəni tapa bilərəm, amma buferi işə salmaq üçün dairələrdə gəzirəm. Kimsə mənə bəzi göstərişlər verə bilərmi (dəqiq cavabını səhv etdiyim yerə dair bir rəhbərlik istəmirəm).

Kod burada.

Şəxsi Sub Buffer_MouseDown (ByVal düyməsinə qədər, ByVal kimi uzun dəyişmə, ByVal x kimi uzun, ByVal y Uzun müddətə qədər) Dim pMxDoc As IMxDocument 'Cari sənəd üçün obyekt yaradın Set pMxDoc = ThisDocument' Cari sənəd üçün obyekt seçin Dim pMap IMap olaraq 'Yaradın cari xəritə üçün obyekt seçin pMap = pMxDoc.FocusMap 'Cari aktiv xəritəyə obyekt qoyun Dim pPoint As IPoint' Xəritədə nöqtə üçün obyekt yaradın pPoint = pMxDoc.CurrentLocation 'Cari yerə təyin edin Dim pElement IElement kimi' Qrafik üçün obyekt yaradın XƏRİTƏYƏ ƏLAVƏ OLUNUB !!!! PElement = New MarkerElement 'Yeni bir marker elementinə obyekt təyin edin (nöqtə qrafiki) pElement.Geometry = pPoint' Elementin həndəsəsini Nöqtəyə təyin edin. Dim pGraphics IGraphicsContainer olaraq 'Qrafiki tutmaq üçün obyekt yaradın Set pGraphics = pMap' Cari aktiv xəritəyə pGraphics.AddElement pElement təyin edin, 0 'Əlavə ediləcək qrafiki təyin edin Dim pActiveView IActiveView olaraq' Aktiv xəritə ekranı üçün obyekt yaradın Set pActiveView = pMxDoc.ActiveView 'Nöqtəni Aktiv görünüşə qur' -------------- BUFFER YARAT ----------------------- - 'Dim pSpaRef As ISpatialReference3 Set pSpaRef = pMap.SpatialReference Dim pFCBuffer As IFeatureCursorBuffer2' Bufer dəsti üçün obyekt yaradın pFCBuffer = New FeatureCursorBuffer 'Yeni tampon üçün obyekt təyin edin pFCBuffer.Dissolve = True pFCBuffer.BFerFuffBuffer.Vue.FC. .DataFrameSpatialReference = pSpaRef Set pFCBuffer.SourceSpatialReference = pSpaRef Set pFCBuffer.TargetSpatialReference = pSpaRef Dim pCGLayer As ICompositeGraphicsLayer2 Set pCGLayer = Yeni CompositeGraphicsLayerLayerLayerLayerLayerLayerLayerLayerLayerLayerLayer Dimy er.BufferToGraphics pGLayer pActiveView.PartialRefresh esriViewGraphics, pElement, Nothing '[qrafik elementinin qismən yenilənməsi. Son Sub

Xəlil,

Tamponlar yaratmaq üçün istifadə etdiyiniz interfeys IFeatureCursorBuffer2 üçün tamponlar yaradır seçilmiş xüsusiyyətlər. İstifadəçilər düyməsini basmaqla yaratdığınız nöqtə bir xüsusiyyət deyil, a qrafik xəritənin qrafik qabına əlavə etdiyiniz. A Xüsusiyyət mahiyyətcə cədvəldəki bir sıra və ya featureclass.

Nöqtənizi qrafik olaraq əlavə etdiyiniz zaman, yaratmaq istədiyiniz buferin qrafik olaraq da bitəcəyini düşünürəm. İnterfeysdən istifadə edin ITopologicalOperator və bu metoddur Bufer bir çoxbucaqlı yaratmaq üçün nöqtənizlə etdiyiniz kimi edin, qrafik element yaradın.


Videoya baxın: ArcGIS - Buffer and Multiple Ring Buffer (Oktyabr 2021).