Страница 1 из 1
изменение data source в lyr файле
Добавлено: 09 май 2010, 04:11
mant
Приветствую,
может кто подсказать, как изменить data source в lyr файле средствами питона в скрипте для аркгис?
общая задача: средствами питона создать для растра lyr файл и перенести туда символику из существуюего lyr файла.
Re: изменение data source в lyr файле
Добавлено: 09 май 2010, 20:10
Дмитрий Барышников
Код: Выделить всё
Dim pGxCat As IGxCatalog, pGxLayer As IGxLayer
Dim pGxObj As IGxObject, pEnumGxObj As IEnumGxObject
Dim num As Long Dim pValue As Variant
Set pGxCat = New GxCatalog
Set pValue = pGxCat.GetObjectFromFullName("d:\mydata\states.lyr", num)
If TypeOf pValue Is IEnumGxObject
Then
Set pEnumGxObj = pValue
Set pGxObj = pEnumGxObj.Next
Else
Set pGxObj = pValue
End If
Set pGxLayer = pGxObj
Dim pGFLayer As IGeoFeatureLayer
Set pGFLayer = pGxLayer.Layer
нашел код в документации. Ключевые моменты:
- интерфейс IGxLayer
- открытие lyr - Set pValue = pGxCat.GetObjectFromFullName("d:\mydata\states.lyr", num)
- извлечение слоя - Dim pGFLayer As IGeoFeatureLayer Set pGFLayer = pGxLayer.Layer
Остается переопределить источник для IGeoFeatureLayer через интерфейс IName (метод put_Path)и сохранить через интерфейс IPersistStream (метод Save)
Re: изменение data source в lyr файле
Добавлено: 11 май 2010, 00:16
mant
насколько я понимаю, это VB. Есть ли аналог для Питона?
Или есть ли какой способ использовать VB код в скрипте на Питоне?
Re: изменение data source в lyr файле
Добавлено: 11 май 2010, 07:24
Дмитрий Барышников
mant писал(а):
Или есть ли какой способ использовать VB код в скрипте на Питоне?
Готового решения нет - остается вам основываясь на примере этого кода (с учетом интерфейсов, которые я перечислил) реализовать то что вам нужно на Питоне.
Re: изменение data source в lyr файле
Добавлено: 11 май 2010, 08:11
mant
Благодарю,
посмотрю, что смогу сделать и найти.