Бештар

Arcmap муҳаррири равзанаи аттрибутӣ ба таври барномавӣ


Дар харитаи ман як қабат бо номи PARCEL ҳаст, вақте ки дар ин қабат хусусияти нав эҷод кунед, равзанаи атрибут ба таври худкор кушода мешавад. Дар ин қабат 2 атрибут мавҷуд аст: PARCEL_ID ва SUB_ID.

Азбаски PARCEL_ID қисми чапи SUB_ID аст, ман мехоҳам арзиши PARCEL_ID -ро дар майдони SUB_ID пас аз ворид кардани арзиши PARCEL_ID, ин кам кардани калиди корбар дар маълумоти хато мебошад.

Оё ин роҳи бе асбоби муҳаррири фармоишӣ вуҷуд дорад?

Ман аркобектҳои vb.net 10.2.2 -ро истифода мебарам.

EDIT1

Сабаби истифодаи равзанаи атрибутҳо дар муҳаррир дар он аст, ки ман кӯшиш кардам, ки хусусияти навсозиро истифода барам, он кор накард.

Дар асл, идеяи асосии ман пас аз эҷоди хусусияти нав аз ҷониби корбар иборат аст:

(1) истифодаи max OBJECTID барои муайян кардани хусусияти нави эҷодшуда

(2) равзанаеро фароҳам овард, то аз корбар ворид кардани PARCEL_ID ва SUB_ID-и хусусияти навтаъсисро талаб кунад

(3) function.store -ро барои навсозии арзишҳои PARCEL_ID ва SUB_ID истифода баред

Аммо ман натавонистам онро кор кунам. Рамзи ман ба зайл монанд аст:

Private Sub GetMaxFID () Dim pMxDoc As IMxDocument, pFLayer As IFeatureLayer Dim pCursor As ICursor pMxDoc = My.ArcMap.Application.Document Dim pMap As IMap Dim pActiveView As IActiveView pMap = pMxDoc.DocumDocumentDifument. pActiveView, My.Settings.ParcelLayer) pFLayer = pMxDoc.FocusMap.Layer (layerNum) pCursor = pFLayer.Search (Nothing, False) If TypeOf pCursor Is IFeatureCursor then Dim pData As IDataStatistics = New DataBatieldData " Cursor = pCursor Dim pStatResults As IStatisticsResults = pData.Statistics newOBJECTID = pStatResults.Maximum End if Catch ex As Excger logger.Error (ex.ToString) End Try End Sub Protected Overrides Sub OnClick () Кӯшиш кунед Dim pMxDoc Dim IMMDap pActiveView As IActiveView pMxDoc = My.ArcMap.Application.Document pMap = pMxDoc.FocusMap pActiveView = pMxDoc.FocusMap Dim DimNum = GetIndexNumberFromLayerName (pActiveView, My.Settings.Par ) Dim pFLayer As IFeatureLayer pFLayer = pMap.Layer (layerNum) GetMaxFID () Dim featureClass As ESRI.ArcGIS.Geodatabase.IFeatureClass = pFLayer.FeatureClass If featureClass Is nothing Return End If Dim feature As IFeature.Fature ) 'ин сатр дуруст аст? Агар хусусият чизе набошад, пас хотимаро бармегардонад Агар Dim objectIDFieldIndex As Integer = pFLayer.FeatureClass.FindField (newOBJECTID) feature.Value (1) = "test123" 'Ин сатр ман мехоҳам PARCEL_ID-и хусусияти нав эҷодшударо таъин кунам. 'оё истифодаи .value (1) дар ин ҷо дуруст аст? арзиши (1) дар ин сатр бояд чӣ гуна бошад? feature.Value (2) = "test123-12" 'Ин сатр ман мехоҳам SUB_ID-и хусусияти нав эҷодшударо таъин кунам. 'оё истифодаи .value (2) дар ин ҷо дуруст аст? арзиши (1) дар ин сатр бояд чӣ гуна бошад? feature.Store () 'MsgBox ("навсозӣ ба итмом расид") Собиқ ex-ро ҳамчун истиснои сабти ном дошта гиред. Хато (ex.ToString) Охир Кӯшиш кунед End Sub

Ман боварӣ дорам, ки дар кодекси ман хатое ҳаст, чӣ гуна ман онро кор карда метавонам?


Ман ҳайрон мешудам, ки агар шумо интерфейси ин тирезаро тағир диҳед, зеро ин як қисми асосии муҳити таҳрири мизи корӣ мебошад. Ман инро кӯшиш накардаам, аммо шумо метавонед рӯйдоди "дар бораи тағир додани хусусият" -ро сабт кунед, арзиши ID-ро ба майдони зербини ID гузоред, аммо агар он навсозӣ шавад, ман тирезаҳоро намедонам?

Таҳрир:

Ман дар гузашта як чизи ба ин монанде анҷом додам, Синфи Функсия синфи хусусиятҳои гео-базаи файл буд ва ман арзиши пешфарзро барои соҳаи ID бо номи HERID -1 таъин карда будам. Пас, вақте ки хусусияти нав сохта мешавад, ба таври худкор арзиши -1 дода мешавад.

Дар зер ман дар хусусият эҷод кунед тартиб. Ман аксари рамзҳоро барои возеҳӣ тоза кардам, аммо бубинед, ки чӣ гуна хусусиятро дар куҷо HERID = -1 ҷустуҷӯ мекунам. Пас аз он ман дар бораи функсияи нав эҷодшуда даст дорам ва ман низ мағозаро барои тағирот дар майдонҳо истифода мекунам.

Private Sub m_EditEvents_OnCreateFeature (obj As ESRI.ArcGIS.Geodatabase.IObject) m_EditEvents.OnCreateFeature 'объектҳоро эълом кунед Dim d As Date pEeitLayer As IFature = Date.Today pEditLayers = m_Editor pFeatureLayer = pEditLayers.CurrentLayer pQueryFilter = New QueryFilterClass pQueryFilter.WhereClause = "HERID = -1" pFeatureCursor = pFeatureLayFFatureFeFatureFeatureFeatureFe як хусусияти нав бо pFeature .Value (.Fields.FindField ("HERID")) = = HERID .Value (.Fields.FindField ("IsPrimary")) = = 1 .Value (.Fields.FindField ("FCD")) = = сохта шудааст d.ToShortDateString .Value (.Fields.FindField ( «FLMD")) = d.ToShortDateString .Store () End Бо End Агар сайд собиқ Тавре ба истиснои MsgBox (ex.Message, MsgBoxStyle.Critical + MsgBoxStyle.OkOnly: «Хато дар m_EditEvents_OnCreateFeat ure ") Ниҳоят 'тоза кардани pEditLayers = Ҳеҷ чиз pFeatureLayer = Ҳеҷ чиз pFeatureCursor = Ҳеҷ чиз pFeature = Ҳеҷ чиз pQueryFilter = Ҳеҷ чиз хотима надиҳед Sub


Видеоро тамошо кунед: ArcGIS Desktop And Web Services Part I (Октябр 2021).