ArcObjects C#, как получить тип слоя
-
- Интересующийся
- Сообщения: 33
- Зарегистрирован: 25 ноя 2017, 20:31
- Репутация: 1
- Откуда: Уфа
ArcObjects C#, как получить тип слоя
Делаю проект на ArcObjects, в comboBox'е нужно чтобы выводилось имя стоя и его тип, к примеру у меня на карте есть растровый слой, векторный и таблица, в выпадающем списке comboBox'а должно бить что то типа: raster_layer: type raster; lines: shape polylines; table: type table(тут всё примерно, не знаю в каком виде будет возвращаться тип), пробовал привести слой к типу IFeatureLayer, но, как я понял, он подходит только для векторных слоев, а привести к типу ILayer тип слоя получить нельзя, нагуглить не получилось, так что спрашиваю тут
-
- Интересующийся
- Сообщения: 33
- Зарегистрирован: 25 ноя 2017, 20:31
- Репутация: 1
- Откуда: Уфа
Re: ArcObjects C#, как получить тип слоя
Заметил ещё вот что, у меня в слоях есть таблица, но в выпадающем списке её нет, но есть все остальные, как будто он просто не видит её, потому что она не отображается во фрейме, как с этим быть?
Код: Выделить всё
var pForm = new Form();
pForm.Show();
IMap amap;
IMxDocument pMxDoc = m_application.Document as IMxDocument;
amap = pMxDoc.FocusMap;
int layerscount = amap.LayerCount;
for (int i = 0; i < layerscount; i++)
{
pForm.layers.Items.Add(amap.Layer[i].Name);
}
-
- Участник
- Сообщения: 69
- Зарегистрирован: 04 июл 2016, 16:02
- Репутация: 8
Re: ArcObjects C#, как получить тип слоя
Похожий вопрос: https://gis.stackexchange.com/questions ... ayers-name
Определить таблица или нет можно по ресурсу
Определить таблица или нет можно по ресурсу
-
- Интересующийся
- Сообщения: 33
- Зарегистрирован: 25 ноя 2017, 20:31
- Репутация: 1
- Откуда: Уфа
Re: ArcObjects C#, как получить тип слоя
Не совсем понял о чем вы. Я выше приложил код, там просто выводится имя слоя, но среди них нет таблиц. Я пробовал добавить сначала просто в формате csv, потом попытался эту таблицу экспортировать в другой формат и закинуть в слои, но она так не отображается и так со всеми форматами. Я уже разобрался немного до вашего ответа, пробовал делать проверку:wladfm писал(а): ↑30 апр 2019, 08:37Определить таблица или нет можно по ресурсу
Код: Выделить всё
if (pLayer is IStandaloneTable)
-
- Участник
- Сообщения: 69
- Зарегистрирован: 04 июл 2016, 16:02
- Репутация: 8
Re: ArcObjects C#, как получить тип слоя
За каждым ILayer стоит IFeatureClass. За каждым IFeatureClass стоит IDataset. У IDataset есть esriDatasetType. Пример получения IDataset из ILayer (для c#):
IFeatureClass FClass = FLayer.FeatureClass;
IDataset ids = (IDataset)FClass;
Возможные значения esriDatasetType: http://resources.esri.com/help/9.3/arcg ... etType.htm
IFeatureClass FClass = FLayer.FeatureClass;
IDataset ids = (IDataset)FClass;
Возможные значения esriDatasetType: http://resources.esri.com/help/9.3/arcg ... etType.htm
-
- Интересующийся
- Сообщения: 33
- Зарегистрирован: 25 ноя 2017, 20:31
- Репутация: 1
- Откуда: Уфа
Re: ArcObjects C#, как получить тип слоя
Вот результат работы того кода, который я писал выше, таблицы там нет, то что вы предложили тоже не помогло, может скрины помогут лучше понять проблему.
- Вложения
-
- Безымянный.jpg (44.93 КБ) 9685 просмотров
-
- Безымянный1.jpg (21.71 КБ) 9685 просмотров
-
- Участник
- Сообщения: 69
- Зарегистрирован: 04 июл 2016, 16:02
- Репутация: 8
Re: ArcObjects C#, как получить тип слоя
Это не слой, это источник.
https://desktop.arcgis.com/en/arcobject ... ection.htm
Можно попробовать здесь посмотреть
https://desktop.arcgis.com/en/arcobject ... ection.htm
Можно попробовать здесь посмотреть
-
- Интересующийся
- Сообщения: 33
- Зарегистрирован: 25 ноя 2017, 20:31
- Репутация: 1
- Откуда: Уфа
Re: ArcObjects C#, как получить тип слоя
Спасибо, помогло, привел текущий датафрейм к типу ITableCollection, из него уже можно получить таблицы, вот только из ITable не получается получить имя источника, только имя полей, не знаете, как из этого выкрутиться?wladfm писал(а): ↑04 май 2019, 15:23Можно попробовать здесь посмотреть
-
- Интересующийся
- Сообщения: 33
- Зарегистрирован: 25 ноя 2017, 20:31
- Репутация: 1
- Откуда: Уфа
Re: ArcObjects C#, как получить тип слоя
wladfm, всё, разобрался:
Спасибо за помощь)
Код: Выделить всё
IStandaloneTableCollection standaloneTableCollection = pMxDoc.FocusMap as IStandaloneTableCollection;
int tablecount = standaloneTableCollection.StandaloneTableCount;
for (int i = 0; i < tablecount; i++)
{
pLab3.tableList.Items.Add(standaloneTableCollection.StandaloneTable[i].Name);
}
Кто сейчас на конференции
Сейчас этот форум просматривают: Ahrefs [Bot] и 25 гостей