3

I'm trying to retrieve all subtypes for a given feature class. ISubtypes.Subtypes give you an enumeration of all subtypes in the class. However the IEnumSubtype.Next method requires the subtype code to retrieve the associated subtype. But this obviously requires prior knowledge of all subtype codes. There are no methods on ISubtypes that retrieve all subtype codes. So, how do I obtain a list of both the subtype codes and subtype names associated with a feature class? I must be missing something obvious here.

2
  • 3
    Notice that while the Next method requires the subtype code, it is prefaced byref, which means that you would provide a variable that gets set by the method. I think it would have made it clearer if Esri made it out instead of byref. May 3, 2012 at 19:54
  • Thank you, Kirk. That was it. I knew there was something I wasn't seeing. Much better than my workaround below.
    – Jeff Berry
    May 3, 2012 at 20:26

2 Answers 2

2

I found a way to retrieve both the subtype codes and subtype names for a feature class using the Geoprocessor. I did not find a way to get the codes directly from ISubtypes, which I find unusual. In any case, the following code will create a Dictionary(Of Integer, String) containing the subtype code as the key and the subtype name as the value:

Dim gp as New Geoprocessor
Dim dtype As Object = ""
Dim dataElem As IDataElement = gp.GetDataElement("C:\Test.gdb\TestFC", dtype)
Dim deTbl As IDEGdbTable = TryCast(dataElem, IDEGdbTable)
Dim dictSubtypes as New Dictionary(Of Integer, String)
Dim arr as IArray = deTbl.Subtypes

For i As Integer = 0 To arr.Count - 1
    Dim gpSt as IGPSubtype = CType(arr.Element(i), IGPSubtype)
    dictSubtypes.Add(gpSt.SubtypeCode, gpSt.SubtypeName)
Next
2

The C++ syntax for IEnumSubtype.Next shows that SubtypeCode is an out parameter. You can loop through IEnumSubtype getting both the subtype codes and descriptions for your featureclass. Loop while the returned string is not null.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.