mz.geologyidea.com
Mais

A autorização do Bing interrompe o script arcpy

A autorização do Bing interrompe o script arcpy


We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.


Eu fiz este pequeno script arcpy feliz para corrigir alguns problemas de fonte de dados:

print "Olá, vou consertar as seções de caminho de arquivo de localização e substituição em seu nome.  nDê-me um momento para contar o número de MXDs que estarei olhando para você hoje ..." import os import arcpy mxdfiles = [os.path .join (d, x) para d, dirs, arquivos em os.walk (r "PATH") para x em arquivos if x.endswith (". mxd")] print " nOk, estarei trabalhando em" + str (len (mxdfiles)) + "MXDs.  n Iniciando este processo agora…" para item em mxdfiles: print " nTrabalhando em:" + item mxd = arcpy.mapping.MapDocument (item) mxd.findAndReplaceWorkspacePaths (r "PATH OLD1 ", r" PATH NEW ") mxd.findAndReplaceWorkspacePaths (r" PATH OLD2 ", r" PATH NEW ") mxd.findAndReplaceWorkspacePaths (r" PATH OLD3 ", r" PATH NEW ") mxd.findAndReplaceWorkspacePaths (r" PATH OLD4 " , r "PATH NEW") mxd.findAndReplaceWorkspacePaths (r "PATH OLD5", r "PATH NEW2") mxd.save () del mxd print "Completed" + str (mxdfiles.index (item) +1) + "maps so distante." imprimir " nProcesso concluído!"

Infelizmente, porém, quando se depara com um MXD com uma camada de imagens do Bing, uma caixa de autorização do Bing é exibida, na qual você deve clicar em 'OK' (pressionar Enter também funciona). Isso ocorre porque minha empresa não tem mais licença para usar o Bing / Microsoft Virtual Earth, então esta pequena caixa aparece toda vez que um MXD é aberto manualmente ou, ao que parece, quando um é invocado pelo meu script. Isso significa que devo:

  1. Encontre uma maneira de clicar programaticamente nesse botão ou ignorá-lo.
  2. Deixe uma caneca de café na minha tecla Enter durante a noite.
  3. Remova as camadas do Bing (ou Microsoft Virtual Earth *) programaticamente.

Pesquisei no Google sem sucesso a respeito da opção 1. Antes de ir para a opção 2, tentei a opção 3. Como um teste, usei o seguinte script (porque este não funcionou) para tentar remover as camadas do Microsoft Virtual Earth * (o grupo é Microsoft Virtual Earth, dentro dele existem três camadas com o mesmo nome mais Híbrido, Aéreo ou Estradas com o sufixo):

import arcpy mxd = arcpy.mapping.MapDocument (r "PATH") para df em arcpy.mapping.ListDataFrames (mxd): para lyr em arcpy.mapping.ListLayers (mxd, "* Microsoft *", df): arcpy.mapping .RemoveLayer (df, lyr) print "Removido de" + df.name + "dataframe:" + lyr.name mxd.save () del mxd, lyr, df

Correu sem erros e removeu as camadas. A caixa de diálogo de autorização do Bing não apareceu durante a execução do script. A única coisa é que o pop-up aparece quando eu abro o mapa que acabei de modificar com aquele script - mesmo que as camadas tenham sumido! Alguém sabe por que remover essas camadas com esse script não impede o pop up? Eu testei remover essas camadas manualmente, salvando, fechando e reabrindo o MXD. O pop-up não aparece então. Portanto, há algo feito no processo manual que não é feito no meu script.

Curiosamente, quando eu abro o MXD ofensivo, execute o script de remoção de camada acima usando a janela do Python e, em seguida, feche e reabra o MXD a janela pop-up de autorização do Bing não aparece. Além disso, se eu excluir todas as outras camadas e tabelas do MXD para que ele tenha apenas camadas do Microsoft Virtual Earth nele, em seguida, remover as camadas restantes com o script e, em seguida, abrir o MXD manualmente, o pop-up de Autorização do Bing ainda aparecerá: -

Antes de tentar incorporar meu script para remover essas camadas em que estou trabalhando para percorrer todos os MXDs e corrigir seus caminhos, preciso saber:

  1. O que está fazendo com que a caixa de diálogo Autorização do Bing apareça com meu script inicial, mas não com a de exclusão de camada?
  2. Por que depois de executar o script de exclusão de camada do Bing / Microsoft Virtual Earth, o pop-up de autorização ainda aparece?

Experimente este código:

import arcpy mxd = arcpy.mapping.MapDocument (r "PATH") para df em arcpy.mapping.ListDataFrames (mxd): para lyr em arcpy.mapping.ListLayers (mxd, "* Microsoft *", df): arcpy.Delete_management (lyr) arcpy.mapping.RemoveLayer (df, lyr) print "Removido de" + df.name + "dataframe:" + lyr.name mxd.save () del mxd, lyr, df

O suporte da Esri entrou em contato comigo e disse para simplesmente salvar uma cópia em vez de salvar o próprio .MXD. Além disso: "... quando as camadas do Bing são adicionadas a um MXD, uma propriedade global é criada e referenciada. Mesmo quando essas camadas são removidas, o MXD mantém a referência. Ao salvar o MXD como uma cópia (quando as camadas do Bing não estão presentes), a referência é não copiado. É por isso que não observamos pop-ups na cópia. " Eles não deram nenhuma explicação sobre como remover a propriedade global.

Essa abordagem obviamente cria muitas cópias MXD. Pode ser que você queira configurar seu script para sobrescrever os originais.


Assista o vídeo: Clip Layers in ArcGIS Pro