Daha çox

ArcObjects istifadə edərək bir sahə ilə əlaqəli domen dəyərlərini necə əldə edə bilərəm?

ArcObjects istifadə edərək bir sahə ilə əlaqəli domen dəyərlərini necə əldə edə bilərəm?


Seçilmiş bir xüsusiyyətin sahəsinə daxil olmağa çalışıram. VB.NET və C#.NET üçün nümunələr gördüm, ancaq müəyyən bir sahənin domeninə daxil ola bilmirəm.

Dim findName As String = Heç bir şey Dim findValue As Integer = 21 'AGRICULTURE Dim fieldIndex As Integer = m_Feature.Fields.Field ("my_field")' üçün domen dəyəri 'kodlu bir domenə malikdir'-my_field-i yoxlayın fieldIndex <>- 1 Sonra Dim domainini IDomain = m_Feature.Field (fieldIndex) .Domain If domain.Type = esriDomainType.esriDTCodedValue Sonra Dim cvDomain As ICodedValueDomain2 = TryCast (domain, ICodedValueDomain2) For i = 0 CVDomain. i) .Ekvallar (findValue) Sonra findName = cvDomain.Name (i) Sona Üçün Çıxarıqsa Sonrakı i Sonlandıraram

Hata ayıklayarkən, domain.Type ilə birlikdə xətdə dayanır və bu, Domain dəyərinin heç bir şey olmadığını göstərir. Sənədlər göstərir ki, IField.Domain standart domeni IDomain obyekti kimi qaytarmalıdır. Sahənin bir domeninin olduğunu bilirəm, amma bunun standart olduğunu və onu dəyişə bilməyəcəyimi bilmirəm. Bir sahənin (mənim vəziyyətimdə seçilmiş bir xüsusiyyətin) domeninə necə daxil olacağımla bağlı hər hansı bir məsləhət varmı?


Petrin şərhləri sayəsində həllini tapdım. Aşağıda mənim işləyən kodum var.

Dim findName As String = Heç bir şey Dim findValue As Integer = 21 'AGRICULTURE Dim fieldIndex üçün Integer = m_Feature.Fields.Field ("my_field")' üçün domen dəyəri, bu, Dim subfieldIndex kimi Integer = m_Feature.Fields.FindField ( "alt sahə") 'alt tip sahəsinin indeksi İntiqam olaraq m alt hissəsinin alt ölçüsü = m_Feature.Value (subfieldIndex)' alt tip sahəsinin dəyəri '-my_field If yoxlayın fieldIndex <> -1 Sonra alt alt tipləri ISubtypes = TryCast (m_Feature.Class, ISubtypes kimi) ) Dim domain IDomain = Subtypes.Domain (subfield, "my_field") If domain.Type = esriDomainType.esriDTCodedValue If Dim cvDomain as ICodedValueDomain2 = TryCast (domain, ICodedValueDomain2) for i = 0 To cvDomain.CodeComDomain. (i) .Ekvallar (findValue) Sonra findName = cvDomain.Name (i) Sona Üçün Çıxaram Sonrakı i Bitərsə

Videoya baxın: Digitization by using Geodatabase GDB Method in ESRIs ArcGIS Desktop Software on SOI Toposheet