Unique Value

0 голосов
спросил 29 Март, 06 от Гость (210,080 баллов) в категории Программные продукты Esri
Здравствуйте, не подскажете, существует ли в VBA команда извлечения уникальных значений из поля атрибутивной таблицы слоя? А то пока переберешь всю таблицу - очень много времени пройдет.

Заранее спасибо, Егор

3 Ответы

0 голосов
ответил 30 Март, 06 от filippov70 (5,320 баллов)
  Dim pCur As ICursor

  Dim pQueryFilter As IQueryFilter
  Set pQueryFilter = New QueryFilter

  pQueryFilter.WhereClause = "DB_ID = " & уникальное значение
  Set pCur = pTable.Search(pQueryFilter, False)' получаем курсор с записями

Dim pRow as IRow

set pRow = pCur.NextRow

asd = pRow.Value(номер поля as Long) ' pRow.Value(pRow.Fields.FindField("DB_ID"))
 
0 голосов
ответил 31 Март, 06 от Alexander1 (32,520 баллов)

Для этого лучше всего использовать IDataStatistics Interface:

DataStatistics Example

http://edndoc.esri.com/arcobjects/9.1/default.asp?url=/arcob jects/9.1/ComponentHelp/esriGeoDatabase/IDataStatistics_Uniq ueValueCount.htm

The following code uses a DataStatistics object to create a list of unique values in the "PIP_SIZE" field and also display the mean of these values (notice that the cursor must be reset to obtain the mean value after accessing the unique values): Dim pMxDoc As esriArcMapUI.IMxDocument
Dim pFLayer As esriCarto.IFeatureLayer
Dim pData As sriGeoDatabase.IDataStatistics
Dim pCursor As esriGeoDatabase.ICursor
Dim pStatResults As esriSystem.IStatisticsResults   Set pMxDoc = ThisDocument
  Set pFLayer = pMxDoc.FocusMap.Layer(0)
  Set pCursor = pFLayer.Search(Nothing, False)
 
  Set pData = New esriGeoDatabase.DataStatistics
  pData.Field = "PIP_SIZE"
  Set pData.Cursor = pCursor
 
  Dim pEnumVar As esriSystem.IEnumVariantSimple, value As Variant
  Set pEnumVar = pData.UniqueValues
  value = pEnumVar.Next
  Do Until IsEmpty(value)
    Debug.Print "value - " & value
    value = pEnumVar.Next
  Loop
 
  Set pCursor = pFLayer.Search(Nothing, False)
  Set pData.Cursor = pCursor
  Set pStatResults = pData.Statistics
  Debug.Print "mean - " & pStatResults.Mean
 
0 голосов
ответил 04 Апр, 06 от Гость (210,080 баллов)
Спасибо, DataStatistics - это то, что нужно!
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...