Страница 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
Благодарю,
посмотрю, что смогу сделать и найти.