Mais

Atributos de junção do QGIS por local não funcionam a partir do script Python

Atributos de junção do QGIS por local não funcionam a partir do script Python


Eu tenho um shapefile com pontos e um shapefile com polígonos. Quero somar o valor do atributo de todos os pontos que estão dentro de um determinado polígono e gostaria de fazer isso para cada polígono em meu conjunto de dados. A ferramenta Unir Atributos por Localização do QGIS está me ajudando a conseguir isso e está funcionando perfeitamente ao usar a ferramenta através da Caixa de Ferramentas de Processamento. No entanto, gostaria de incluir a ferramenta em um script automatizado. Tentei muitos argumentos diferentes, mas meu código (ainda) não está funcionando e resulta em um conjunto de dados em que o novo atributo de polígono tem valores NULL.

Estou usando o seguinte código, que deve ser exatamente o mesmo que a ferramenta está sendo executada quando estou acessando-a da Caixa de Ferramentas de Processamento (até tentei copiar e executar exatamente o mesmo código da janela Histórico e Log):

sum = processing.runalg ("qgis: joinattributesbylocation", "polygonlayer.shp", "pointlayer.shp", "['contém']", 1, "soma", 1, Nenhum)

Estou usando o QGIS 2.8.2 Wien.


  • Para QGIS 2.8.2 com Em processamento plugin 2.9.0:

    processing.runalg ("qgis: joinattributesbylocation", layer1, layer2, u'contains ', 1,' sum ', 1, None)
  • Para QGIS 2.12.2 com Em processamento plugin 2.12.2:

    processing.runalg ("qgis: joinattributesbylocation", layer1, layer2, u'contains ', 0, 1,' sum ', 1, None)

    (observe o parâmetro extra para "precisão")


Como posso encontrar o diretório do script & # 39s? [duplicado]

Eu uso os.getcwd () para obter a localização do diretório do arquivo de script. Quando eu executo o script na linha de comando, ele me fornece o caminho correto, enquanto quando eu o executo a partir de um script executado por código em um view Django ele imprime /.

Como posso obter o caminho para o script de dentro de um script executado por uma visualização Django?

ATUALIZAR:
Resumindo as respostas até agora - os.getcwd () e os.path.abspath () fornecem o diretório de trabalho atual que pode ou não ser o diretório onde o script reside. Na configuração do meu host da web, __file__ fornece apenas o nome do arquivo sem o caminho.

Não existe nenhuma maneira em Python (sempre) de receber o caminho no qual o script reside?


Obter quadro para quadro de localização do objeto Blender 2.81 +

Eu tenho um script que gera um caminho de curva e define um objeto para seguir o caminho, posso ver o objeto se movendo corretamente no movimento da animação, e também se move para o local correto (pelo menos visualmente na janela de visualização, as coordenadas quando você pressiona n não muda) quando eu uso bpy.context.scene.frame_set (desirved_frame). No entanto, quando tento obter a localização e rotação desse objeto no quadro que defini, ele apenas retorna a localização original do objeto no quadro 0. Abaixo está o código que usei para gerar os dados de animação e o que eu ' estou usando para tentar obter a localização.

Também tentei substituir o loop final por:

Ambos os métodos apenas imprimem a localização original do objeto.

Ao ler esta documentação, não tenho certeza de como usaria os exemplos que eles mostram para extrair a localização avaliada e a rotação da classe que eles registram, ou mesmo como chamar o método execute.

Abaixo estão algumas soluções e respostas que li e tentei, sem sucesso:

Eu realmente não tenho certeza do que estou fazendo de errado, pois algumas das perguntas que eu olhei são muito semelhantes ao meu problema.


Tentando recuperar o número do quadro atual para uso em material de idade de partículas Cycles

Estou tentando criar um material de ciclos para fazer uma partícula queimar quando ela morre em uma colisão com outra partícula usando o Blender 2.72a.

Consegui fazer com que as partículas atacassem e matassem outras partículas usando a física de Boid, mas fazer com que as partículas mortas fizessem qualquer coisa além de desaparecer ou ficar ali está provando ser um problema espinhoso.

Estou cuspindo várias abordagens. Minha tentativa atual é impulsionar a força de emissão e transparência com base em quão prematura é a morte de partículas. Uma partícula que morre em uma colisão terá uma velocidade zero e uma idade inferior ao seu tempo de vida. No entanto, como as partículas mortas relatam 0 para sua idade, você não pode usar isso para determinar se uma partícula morreu de forma não natural ou se expirou há cem quadros atrás. Posso contornar isso se puder recuperar o número do quadro atual para a cena e ainda tenho o trecho de código: bpy.data.scenes ['CYCLES']. Frame_current Salvei como um script e referenciei em um Script Nó que consegui adicionar à minha semente de partícula, mas não consigo acessar o valor recuperado.

Eu estava pensando em modificar o scriptlet para preencher uma variável ou atributo global com o número do quadro e, em seguida, acessá-lo com o nó Atributo.

Então, como posso armazenar o número do quadro atual de uma forma acessível ao editor de material? Incluí um link para o meu arquivo blend. A resposta correta não precisa implementar meu código. Se você tem uma ideia que não tem nada a ver com python, ainda quero ouvi-la.


Ola Hallengren & # 39s SQL Backup para local de rede não está funcionando

Eu configurei a solução de manutenção do SQL Server de Ola Hallengren em vários servidores SQL Express (2008 a 2012 R2) nos últimos anos. Recentemente, comecei a ter problemas com o componente de backup de rede em todos eles, um novo. Já trabalhei em vários servidores no passado, então sei que pode funcionar, mas não consigo descobrir o que está impedindo que funcione agora. Como ponto de interesse, não sou DBA e não sei quase nada sobre SQL, por isso estou aqui.

O problema

Em um servidor em particular, configurei um cronograma de manutenção há cerca de um ano e meio. Ele estava fazendo backups todas as noites em outro servidor local usando um caminho UNC (e vários outros comandos). O código do script é o seguinte:

Isso funcionou bem por um bom tempo, mas parou de funcionar há cerca de um mês. Eu o defini para fazer backup localmente, em seguida, adicionei uma string para xcopy para o local remoto e um script no servidor remoto para limpar backups antigos. Não ideal.

Eu tentei executá-lo na linha de comando como eu mesmo e uma conta de super permissões. Este é o erro que recebo em todos os casos:

O que eu fiz

Obviamente, o SQL acha que o local da rede não existe, então tentei o que pude para verificar se todas as coisas do lado da rede estão em ordem. Puxei uma nova cópia do script e recriei todos os objetos e trabalhos. Verifiquei se os outros scripts (verificações de integridade, atualizações de estatísticas, etc.) funcionam. Eu criei um script que usa as mesmas credenciais do script de backup para executar o xcopy dos backups locais no servidor de destino, portanto, tenho as credenciais de compartilhamento / NTFS adequadas. Essa conta é uma conta de domínio (AD) criada especificamente para backups SQL. Posso fazer backup localmente (com essa conta), então tenho permissões de banco de dados. Posso navegar até o compartilhamento como conta de backup usando o Windows Explorer. Posso copiar manualmente os arquivos para o local remoto usando o Windows Explorer usando a conta de backup.

Eu tenho esse mesmo problema em várias outras redes também, o que me levou ao SF. Estou nos domínios de 2008 R2 e 2012, todos os servidores são membros do domínio sem erros relevantes. Os servidores são máquinas 2008 R2 e 2012 R2 Standard. Sinto que algo deve ter mudado no lado do SQL que não consigo solucionar para que isso aconteça em 3 redes diferentes e vários servidores. Eu usei comandos super básicos - deixando a verificação e a limpeza fora do trabalho - e obtive o mesmo erro. Aproveitei os comandos de exemplo no site de Ola como um teste também, com os mesmos resultados. Eu tentei em um novo SQL Server com um banco de dados de teste básico, sem amor. Usei minha faixa preta no Google por vários dias com resultados muito decepcionantes (talvez eu não saiba o que procurar?).

O que eu espero conseguir

Eu realmente apreciaria uma maneira de testar conexões com compartilhamentos de rede dentro da linha de comando SQL, ou algum material para ler que me levaria até lá. Não me importo de ler que sou um administrador de sistemas competente que está simplesmente fora de seu alcance neste assunto. Eu li tudo no site do Ola, e estou praticamente usando os comandos de exemplo literalmente de qualquer maneira (e eles funcionaram por vários meses !?). Eu estarei trabalhando nisso neste fim de semana, e qualquer ajuda ou orientação que alguém possa fornecer seria muito apreciada.


Qual é o código Python correto para pressionar & ldquoI & rdquo e selecionar LocRotScale?

Já fiz um teste fictício e todo o resto do meu código funciona. A única coisa que falha é chamar bpy.ops.anim.keyframe_insert_menu (type = 'LocRotScale'), que é o que aparece se você pressionar I e fazê-lo manualmente. O erro que estou recebendo é:

Arquivo "D: Blender 2.79 scripts modules bpy ops.py", linha 189, em ligar ret = op_call (self.idname_py (), None, kw) TypeError: Convertendo args py em propriedades do operador: enum "local" não encontrado em ('Localização', 'Rotação', 'Escalonamento', 'BUILTIN_KSI_LocRot', 'LocRotScale' , 'BUILTIN_KSI_LocScale', 'BUILTIN_KSI_RotScale', 'BUILTIN_KSI_DeltaLocation', 'BUILTIN_KSI_DeltaRotation', 'BUILTIN_KSI_DeltaScal)

A ideia do meu script é simples, há 8 coordenadas em uma lista que desejo percorrer e aplicar cada coordenada a um cubo.

  1. Frame_set o quadro atual na linha do tempo, então o quadro inicial seria em 0
  2. Eu pegaria a coordenada [i] na lista e aplicaria ao cubo
  3. Eu então digitaria a localização do cubo para animação
  4. atualize o current_frame em = + 4 de cada vez. Os quadros S0 0, 4, 8. seriam os quadros-chave.

Todas as outras etapas funcionam, se eu comentar a etapa número 3, veria meu cubo se movendo de um local para o outro, só preciso saber como digitar cada local para a animação!


1 resposta 1

Algumas mudanças de API são mais recentes do que outras

O método bmesh from object requer que o argumento 2 seja um depsgraph, não uma cena, como o IIRC era antes, por volta de quando a resposta foi escrita.

Consulte os documentos mais recentes, no entanto, para essas coisas, é altamente recomendável usar o recurso de preenchimento automático do console

notará que depsgraph não faz a string doc, claramente é um argumento.

Teste de limpeza. Fiz alterações mínimas para que ele seja executado como um manipulador de postagem de alteração de quadro. Usei um 256 vert & quotCircle & quot como um objeto de teste, (dando-lhe o requisito de ter pelo menos tantos verts quanto o número de ângulos.)

O script lança um erro de índice para malha com poucos verts.

O método é conectado a um manipulador de mudança de quadro, então ele fará uma & quot; coisa & quot; quando o quadro estiver mudando.

_Um exemplo movendo alguns cubos com a reprodução da animação, para chamar (manipular) em um evento de mudança de quadro, a atualização da malha com o código do manipulador.


Primeiro jogo de memória com PyQt e OOP

Portanto, esta é a minha primeira vez neste site. Escrevi este código Python muito básico com PyQt5 para criar um jogo de memória. Como não estou muito familiarizado com OOP (mas estou tentando!), Espero que alguém possa me indicar onde eu poderia melhorar meu jogo.

Do jeito que está, tudo está funcionando, mas falta um modelo bonito (isso é algo que vou melhorar em uma segunda fase). O que estou mais interessado agora é em entender se meu código poderia ser melhor organizado de alguma forma (por exemplo, dividindo-o em diferentes classes / subclasses, em vez dos muitos métodos presentes).

  1. o usuário escolhe uma pasta de imagens (JPG)
  2. uma grade com todas as imagens é formada, mas cada imagem é coberta pela imagem "back.jpg" (ela deve ficar na mesma pasta que o código)
  3. o jogo começa

Basicamente, estou fazendo tudo usando imagens em um Qgridlayout, que são colocadas em botões com ouvintes de eventos. Quando um sinal "onclick" é emitido, o atributo self.status é analisado e o jogo é reiniciado ou continua de acordo com isso.

Uma última coisa: as cartas (imagens) não estão embaralhadas agora, ainda preciso implementar esse recurso (caso contrário, o jogo seria completamente enfadonho.).


Exatamente isso - a localização física do objeto. Mudá-lo não afetará mais nada, a menos que um sistema externo o use ou atualize. Por exemplo, em grandes empresas, atributos como este podem ser preenchidos e sincronizados com um banco de dados de rastreamento de ativos usando um sistema IdM como o MS ILM / FIM.

A localização de impressoras é excelente para todos, se for feita da maneira certa. No Windows 7, a visualização "localizar impressora" é filtrada automaticamente para sua localização física. Isso é parte da configuração manual, parte da sub-rede IP.

Como a maioria dos atributos do AD preenchidos por usuário / administrador, ele é usado para qualquer coisa que você quiser. Geralmente, isso seria para a localização física do objeto, como Chris McKeown aponta, mas você pode usá-lo para qualquer coisa que quiser, e pode haver algum valor em fazer isso se você for uma pequena empresa com tudo na mesma localização física, visto que, por padrão, Location é exibida com mais destaque do que CustomAttribute8 e semelhantes.

Eu vi um ambiente AD um pouco atrás, onde o administrador do sistema o usou para insultar sutilmente os usuários com locais como nas nuvens, perdidos no transporte, alojados em Colônia, e assim por diante (acho que a cabeça do usuário está.), Então os possíveis usos realmente são limitados apenas por sua criatividade (e talvez, nível de malícia).


Por que o local do acidente não foi localizado via ELT?

Em 14 de janeiro de 2019, às 9h10, horário da Indonésia, foi encontrado o CVR do Lion Air JT-610 acidentado. Outro dispositivo vital foi encontrado anteriormente.

Três aviões modernos caíram na água na Indonésia:

Adam Air, registro PK-KKW, Boeing 737-400, voo KI514, em 1 de janeiro de 2007, caiu no Mar de Majene devido à falha com o Sistema de referência interno (IRS), descansou em 2.000m abaixo da superfície do mar.

Air Asia, registro PK-AXC, Airbus A320-216, voo QZ8501, caiu em 28 de dezembro de 2015, no mar de Karimunjawa, devido à falha com o limitador de curso do leme.

Lion Air, registro PK-LQP, Boeing 737 Max-8, voo JT-610, caiu em 28 de novembro de 2018, no mar de Java. A causa da falha ainda está sob investigação.

Esses três locais de acidentes foram encontrados não pelo sistema de instrumentos eletrônicos, mas por pescadores.

Então, minha pergunta é: por que o avião moderno não foi localizado por meio de seu ELT?