Mais

Plug-in QGIS: Problemas ao importar arquivos de recursos (resources_rc) - o plug-in não carrega - Problemas de PATH?

Plug-in QGIS: Problemas ao importar arquivos de recursos (resources_rc) - o plug-in não carrega - Problemas de PATH?


Estou construindo o plugin qgis e não consigo encontrar solução para este erro.

Arquivo "/usr/lib/python2.7/dist-packages/qgis/utils.py", linha 478, em _import mod = _builtin_import (nome, globais, locais, fromlist, nível) ImportError: Nenhum módulo denominado resources_napoved_rc

Para todos que estarão perguntando: Eu criei um arquivo de recursos Python:

pyrcc4 -o resources_napoved_rc.py resources_napoved.qrc

Ainda não consigo encontrar uma maneira de fazer funcionar. Sempre recebo o mesmo erro.

Além do script, tenho:

import resources_napoved_rc.py

Estou usando o arquivo ui diretamente do qtbuilder. Alguma ideia de como seguir em frente? Estou assumindo que deve ser algum tipo de problema de caminho ou algo semelhante.


Este problema é causado poruicnão está funcionando adequadamente. Não sei exatamente por que, mas posso mostrar os sintomas e uma solução alternativa.

O plugin inicial.uiarquivo tem um vazioRecursoselemento:

Quando você edita os recursos do plugin no QtDesigner, isso muda para:

 

Esta é a origem do problema. Se você alterar o arquivo .qrc nesse incluir marcar pararesourcesXXX.qrco erro mudará paraNenhum módulo denominado resourcesXXX_rc.

Nota: o seguinte é baseado em uma construção de plugin com 'teste' inserido em todos os campos do construtor de plugin QGIS.

No test_dialog.py arquivo as seguintes linhas compilar o .ui Arquivo:

FORM_CLASS, _ = uic.loadUiType (os.path.join (os.path.dirname (__ file__), 'test_dialog_base.ui'))

É aqui que o erro está ocorrendo.

Edite o seu.uiarquivo para voltar ae o problema está resolvido. Até você edita sua caixa de diálogo no QtDesigner novamente. Você deve fazer esta edição no.uiarquivo após cada vez que você edita sua caixa de diálogo.

A solução para isso é alterar seu plug-in para funcionar como as versões anteriores do plug-in funcionavam. Isso envolve a substituição do uic chamada e as linhas de classe no _dialog.py Arquivo. Substitua essas linhas:

FORM_CLASS, _ = uic.loadUiType (os.path.join (os.path.dirname (__ file__), 'test_dialog_base.ui')) class testDialog (QtGui.QDialog, FORM_CLASS):

com:

from test_dialog_base import Ui_testDialogBase class testDialog (QDockWidget, Ui_testDialogBase):

Agora você terá que correr

pyuic4 -x test_dialog_base.ui> test_dialog_base.py

quando você cria seu plug-in pela primeira vez e cada vez que edita sua caixa de diálogo de plug-in com o QtDesigner. Este era o antigo método de plug-in.

Se deve editar o.uiarquivo ou a corridapyuic4cada vez é sua escolha.


Você pode evitar a necessidade de editar o arquivo .ui ou compilar, etc., fazendo o seguinte:

import sys sys.path.append (os.path.dirname (__ file__)) FORM_CLASS, _ = uic.loadUiType (os.path.join (os.path.dirname (__ file__), 'test_dialog_base.ui'), resource_suffix = " )

resource_suffix é padronizado como '_rc' e é por isso que ele está sempre procurando por 'resources_rc.' (você sempre pode deixar como padrão se realmente quiser usar resources_rc, é claro)

E anexar o caminho do arquivo .ui a sys.path permite que o python encontre resources.py. Você pensaria que ele seria capaz de descobrir, já que seu diretório atual deve estar em sys.path (e outras importações de seu diretório atual funcionam), mas não funciona. Eu não olhei para isso o suficiente para descobrir exatamente o porquê.


Eu finalmente consertei após 3 horas de tentativas. Como alguém disse, o QT Designer adiciona

ao seu arquivo de IU. Eu simplesmente excluí essas linhas e tudo funciona bem (os recursos são visíveis na GUI)


Acho que a resposta curta para este problema é que as pessoas estão carregando o projeto diretamente no QGIS em vez de executar:

fazer implantar

O arquivoresources.pysó é gerado depois da primeira vezfazer implantaré executado.


Foi assim que resolvi o problema:

  • Executar-> cmd

  • Vá para o local do seu construtor de plug-in (por exemplo: c: /users/rafik_pc/.qgis2/python/plugins/pluginbuilder)

  • digite o seguinte comando:

    pyrcc4 -py2 resources.qrc -o resources.py

(Usei -py2 porque estou usando o python 2.7)

  • reinicie o seu QGIS.

  • FEITO.


Você pode daruic.loadUiTypeo pacote de onde importar recursos, por exemplo:

from pkg_resources import resource_filename from qgis.PyQt import uic FORM, BASE = uic.loadUiType (resource_filename ('test', 'ui / ui_about.ui'), from_imports = True, import_from = "test.ui",)

Farei uma solicitação de pull no construtor de plug-ins QGIS quando tiver algum tempo.


O que funcionou para mim no final foi usar os recursos originais que vieram quando criei o pacote com o construtor de plug-in e usá-lo em todas as outras caixas de diálogo do meu plug-in. Eu ainda não sei por que o ícone principal do meu plugin muda ao recarregar o plugin, mas ainda recebo gráficos em outras caixas de diálogo.

Eu gostaria que fosse diferente por muitos motivos. Para construir um plugin simples, essa abordagem provavelmente funciona. É uma coisa de organização.

Como tive tantos problemas com esses recursos, criei resources.py e resources_rc.py, é provavelmente por isso que tenho problemas ao recarregar.

Não tenho tempo para lidar com esse problema, mas a equipe de desenvolvimento do QGIS deve dar atenção a ele, pois bloqueia as pessoas para fazer plug-ins bonitos: D

O que acabei fazendo é ter simples:

importar recursos

antes de chamar a classe UI.

Obrigado por me ajudar com essa bagunça.

PS: você tem que "compilar" seus recursos antes de adicioná-los ao seu arquivo * .ui e usar os mesmos recursos -> importar recursos em todas as caixas de diálogo do plugin. Espero que isso ajude alguém.


Quando você cria seu plugin QGIS com este processo, você está criando umcompile.batarquivo contendo o seguinte:

@echo off call "C:  OSGeo4W64  bin  o4w_env.bat" call "C:  OSGeo4W64  bin  qt5_env.bat" call "C:  OSGeo4W64  bin  py3_env.bat" @echo nos recursos pyrcc5 -o. py resources.qrc

Execute o mesmo comando usando

sudo pyrcc4 -o resources_rc.py resources.qrc

Vai funcionar


Plug-in QGIS: Problemas ao importar arquivos de recursos (resources_rc) - o plug-in não carrega - Problemas de PATH? - Sistemas de Informação Geográfica

Eu geralmente tento não escrever sobre a versão & # 8220pre & # 8221 (tecnicamente, é & # 8217s mestre) do QGIS. Claro que fui e disse & # 8220HEY, quero falar sobre o QGIS em uma conferência & # 8221 e uma grande parte do que eu queria falar era sobre o novo lançamento. Que também incluiu Point Clouds & # 8230 & # 8230and 3.18 chegará amanhã. O que levou a uma demonstração frustrante, e é por isso que estou escrevendo isso.

TN tem todos os seus LIDAR liberados como dados abertos e eu toquei muito com eles no GRASS e PDAL e em geral. É preciso pensar muito. É apenas um monte de pontos e frustrações. Os dados são todos armazenados em zlas e é difícil fazer qualquer coisa, já que não estou trabalhando no software ESRI. Geralmente eu descompacta-lo e mantenho a cópia não compactada, então eu & # 8217m agora possuo 4 condados do LIDAR. Eu tendo a ficar animado com isso por um dia e então volto para PostGIS e QGIS até que a necessidade de me odiar aconteça novamente.

Mais tarde, estive lidando com um projeto paralelo em que a elevação é importante. Eu & # 8217tive dúvidas e me perguntei se minha abordagem sobre isso foi correta. Eu também tenho executado o mestre QGIS porque estou curioso para saber como posso aproveitar algumas das novas funcionalidades com clientes e projetos.

Então, minha primeira pancada em pontos parecidos com este no QGIS:

Nuvem de ponto flutuante que está a cerca de 150 metros do solo. A princípio pensei que era um recurso e depois decidi que era um bug e, felizmente, posso enviar aos desenvolvedores uma mensagem rápida e Nyall apareceu e disse & # 8220problema de projeção & # 8221.

Portanto, Tn & # 8217s lidar está todo hospedado aqui. Tive que voltar e ler os metadados. O que descobri é que eu tinha um problema de projeção horizontal, pois havia assumido X e tive um problema de projeção vertical porque não achei que fosse um problema. Ao extrair os dados LIDAR do formato zlas, tenho certeza de que estraguei a projeção. Então, ao voltar, eu precisava consertar. Como faço para corrigir isso? PDAL. Voltando atrás, determinei que meu novo arquivo LAZ era EPSG: 6576 na horizontal e EPSG: 6360 na vertical. Então, resolvi com um truque com o PDAL:

Não quero entrar em detalhes técnicos sobre por que isso funcionou e como o fiz & # 8211, exceto que o PDAL tem algumas habilidades de linha de comando incríveis para corrigir arquivos LAZ / LAS & # 8230.especialmente a projeção.

Aqui está o legal. Ao adicionar os novos dados ao QGIS, fui avisado de que estava faltando uma transformação necessária. O QGIS está sendo executado a partir do Proj 7. Recebi uma solicitação para clicar em um link e corrigi-lo. Eu cliquei cegamente. Eu importei cegamente.

Funcionou. LIDAR corresponde ao meu DEM. Proj conhece o problema e o QGIS o corrige. Clickity Click. Provavelmente não acontece em 100% dos casos, mas funcionou para mim.

& # 8220 TENHO QUE FAZER TUDO ESSE CLICAR OMG TENHO O LIDAR QUE NÃO & # 8217T SEI MUITO SOBRE ISSO & # 8221, você dirá. Acho que na maioria dos casos, se você tiver um arquivo LAS / LAZ, tudo bem. Este foi um caso especial em que eu tinha dados com um Projection / No Projection bagunçado em preparação para uma demonstração. Portanto, você não precisa saber coisas sobre PDAL e coisas sobre seu LIDAR. Você adiciona e pronto. Não é uma coisa ruim saber & # 8211, mas no geral você deve estar bem.

Isso tudo é realmente incrível. Você tem este pequeno desktop de código aberto que pode renderizar uma nuvem de pontos. Acho que isso abre a porta para a análise e outras coisas que normalmente estavam fora das operações normais do QGIS. GRASS já pode funcionar com LIDAR. Agora você pode olhar para ele. Ah, as coisas que você vai fazer.


O início do QGIS- InaSAFE Conjunto de ferramentas é projetado para preparar instrutores para fornecer treinamento para novos usuários QGIS. Os materiais incluídos irão preparar os treinadores para conduzir treinamentos com uma variedade de públicos e para cobrir problemas e armadilhas comuns, e também fornecer aos treinadores as melhores metodologias.

Ao organizar um treinamento QGIS-InaSAFE, vários fatores devem ser considerados, incluindo o tempo que você tem para treinar, recursos disponíveis, número de formandos e suas habilidades técnicas. Este kit de ferramentas ajudará os treinadores a preparar treinamentos para diferentes tipos de participantes, mas se concentrará principalmente em educar aqueles com pouca ou nenhuma experiência com GPS, criação de mapas e computadores.

O objetivo deste kit de ferramentas é preparar o treinador para treinar com sucesso os participantes do workshop no uso do QGIS e na análise de dados de risco e exposição com o InaSAFE.

Objetivo do Workshop¶

Este workshop tem como objetivo atingir os seguintes padrões e competências básicas:

Competência padrão¶

Gerenciando dados espaciais usando QGIS e analisando cenários de impacto de desastres com InaSAFE

Competências básicas¶

  1. Use GIS para desenvolver cenários para planejamento de contingência
  2. Compreender os benefícios do QGIS e do InaSAFE para o desenvolvimento de cenários realistas para o planejamento de contingência
  3. Instale o QGIS e compreenda a interface do usuário do QGIS
  4. Use plugins QGIS
  5. Compreender os sistemas de projeção e transformação em QGIS
  6. Use e compreenda dados vetoriais
  7. Categorizar e criar rótulos a partir de dados vetoriais
  8. Use e compreenda dados raster
  9. Crie e edite novas camadas vetoriais
  10. Analise dados vetoriais para resolver problemas
  11. Crie mapas com o Map Composer
  12. Use InaSAFE
  13. Entenda como obter suporte para QGIS e InaSAFE na Indonésia

Materiais de oficina¶

  1. GIS para desenvolver plano de contingência
  2. QGIS e InaSAFE em Planejamento de Contingência
  3. Os fundamentos do QGIS
  4. Plugins QGIS
  5. Noções básicas de projeção de mapa
  6. Trabalho com dados vetoriais
  7. Rótulos e classificação
  8. Trabalhando com Dados Raster
  9. Criação de camadas vetoriais
  10. Análise vetorial para solução de problemas
  11. Usando o Map Composer
  12. Compreendendo o InaSAFE
  13. Obtendo Suporte

Estratégias de Oficina¶

  1. Os métodos enfatizados neste workshop são o ensino participativo e a participação ativa em todas as seções e atividades, ao invés do método expositivo.
  2. Orientado para o participante. Os participantes são incentivados a encontrar e adquirir conhecimentos e habilidades por conta própria.
  3. Os treinadores atuam como facilitadores. Os treinadores facilitam para ajudar as ideias no workshop a emergirem dos participantes, não apenas dos treinadores. No entanto, os treinadores devem estar prontos para fornecer as informações necessárias quando os participantes precisarem de ajuda.
  4. Orientado para resultados. O workshop deve produzir os resultados mencionados anteriormente.

Ferramentas¶

  1. Cópia de Análise de dados usando QGIS e nível iniciante InaSAFE para participantes
  2. Um espaço de oficina com mesas e assentos
  3. Computadores (um computador pode ser usado por dois participantes, mas é melhor se um computador for usado por um participante)
  4. Um projetor (para apresentar slides e demonstrar instruções técnicas e software)
  5. Unidade (s) Flash USB para transferir arquivos e software
  6. Boa conexão de internet
  7. Lanches e café para os intervalos

4 respostas 4

Ao criar um arquivo .jar, implantá-lo em um sistema e executá-lo, ele per se não é mais ou menos vulnerável do que qualquer outro aplicativo desenvolvido com qualquer outra tecnologia.

Os ataques descritos nestes artigos são relevantes quando o invasor já pode injetar código Java em seu aplicativo. Por exemplo, quando seu aplicativo carrega classes em tempo de execução com um ClassLoader de uma fonte que não está sob seu controle (ou de seu usuário). Os artigos apenas reiteram o que todo desenvolvedor de aplicativos já deve saber: Não carregue e execute código não confiável. Quando você não faz nada assim, não há nada com que se preocupar.

Os artigos principalmente desmascaram o equívoco de que poderia ser possível construir um ambiente de execução de plug-in em área restrita, contando com recursos de visibilidade JAVA. Digamos que você queira construir um aplicativo Java onde os usuários possam baixar extensões da web. Isso funciona baixando o arquivo .class e carregá-lo em tempo de execução com ClassLoader. Mas você deseja limitar o que essas extensões podem e não podem fazer. Você poderia simplesmente declarar os dados que não deseja que essas extensões acessem como privados? Não, isso não funciona, porque existem truques para subverter esses modificadores de acesso.

Depois que alguém tem acesso a um arquivo jar, é uma operação relativamente simples descompilá-lo, então estou muito curioso para saber quais práticas de segurança existem em torno de aplicativos Java à prova de adulteração.

Quanto à questão em questão. Digamos que uma classe tenha um método igual que não seja declarado final. Se o método equals retornar true, ele fornece acesso a um recurso crítico. Você pode criar uma classe com a classe original como a classe pai e definir um método com o mesmo nome e argumentos iguais na classe pai. Faça com que esse método retorne verdadeiro o tempo todo.

Agora você pode passar sua classe derivada para qualquer função que aceite a classe pai original como um argumento. Quando o método equals é chamado, ele retornará true porque você 'substituiu' o método. Ele nunca chamará os pais de classe igual porque você não chamou super.equals em seu hack.

Várias ferramentas (por exemplo Collabnet Subversion) permitem que você carregue arquivos jar implementando interfaces para criar manipuladores de eventos e outros tipos de personalizações de funcionalidade. Substituir cuidadosamente os métodos críticos para contornar as verificações de segurança é provavelmente uma vulnerabilidade mais comum do que se conhece. Acho que muitos fornecedores de ferramentas dependem de acesso administrativo para fazer upload de personalizações para protegê-los.

MÉTODO DE SUBSTITUIÇÃO USANDO HERANÇA

Se estamos falando estritamente apenas sobre o uso de herança para substituir o método em um aplicativo existente ao qual você não tem acesso ao código-fonte, @objlass está um pouco fora do assunto.

Isso porque se você criar uma nova classe que estenda uma nova e apenas substituir um método e colocá-lo na pasta de classes do aplicativo em execução, nada acontecerá. Isso é porque você não está fazendo coisas complexas, como descompilar e modificar o código existente.

No entanto, se você tiver um DI Manager como o Spring, poderá alterar a classe injetada editando o arquivo XML e, portanto, poderá substituir seu próprio bean pelo original.

Outro tipo de ataque também não é substituir métodos, adicionando pontos de corte usando o aspecto, novamente, isso pode ser feito com o uso de um framework como o Spring.

Para a segurança da aplicação, ouvi apenas que alguns projetos proíbem qualquer biblioteca adicionar a capacidade de adicionar pontos de corte usando aspectos.

O fato de que em Java poderia ser mais fácil injetar código não significa muito, você pode apenas considerar que se alguém conseguiu acessar seu servidor de aplicativos, o servidor está corrompido.

IGNORANDO A CLASSE UING PASTA FINALIZADA

Outra forma de hackear seria usar o mecanismo endossado do Java, é um lugar específico onde todos os JAR colocados aqui têm precedência sobre todos os outros. Portanto, isso significa que você pode sobrescrever até mesmo um tipo como Java.lang.String. Ou em vez de derivar uma classe para substituí-la ou adicionar pointcut, você pode apenas fazer com que a classe (código-fonte ou descompilar .class) modifique-a, compilando-a, coloque-a em um JAR e coloque-a na pasta endossada.

Observe que o apache Tomcat, por exemplo, já possui uma pasta "endossada" usada para substituir qualquer biblioteca que ele precisa internamente para ter a versão correta das classes. você pode simplesmente abrir um desses JARS e adicionar sua classe dentro dele.

PROTEGER CONTRA ESSES MÉTODOS

Como um administrador de sistema deve detectar isso? Bem, na verdade eu vi uma solução bem simples: um script que periodicamente (cron.: P) verifica se algum arquivo no servidor (esperar logs que são movd em / var / log ou qualquer outro) mudou e relata ao administrador do sistema se assim.

Porque seja qual for a maneira como você está fazendo isso, se você não pode alterar o código-fonte antes de ir para o servidor, você terá que modificar os arquivos e detectar isso é de fato muito fácil.

Para ir ainda mais longe, você pode usar hashes compute md5 (e ainda verificar o tamanho do arquivo!) De todos os arquivos do seu servidor e do script em execução (no caso de alguém tentar adicionar uma pasta externa ao classpath).

Finalmente, o que eu disse aqui é muito simples de implementar, provavelmente existem maneiras ainda mais inteligentes de fazer isso, no entanto, não tenho o conhecimento necessário para isso.

Obrigado a @ojblass por apontar que existe um pacote chamado Tripwire que observará os arquivos / diretórios para você e executará o comando que você quiser quando algo ocorrer.


/ r / GIS - Qual computador devo comprar? Fevereiro de 2021

Este é o tópico oficial de r / GIS & quotqual computador devo comprar & quot. Que é postado todo mês. Confira os tópicos anteriores. Todas as outras postagens de recomendação do computador serão removidas.

Publique suas recomendações, perguntas ou comentários sobre compras recentes.

Classifique por & quotnovo & quot para as últimas postagens e verifique o WIKI primeiro: Que computador devo comprar para GIS?

Para um subreddit dedicado a este tipo de discussão, verifique r / BuildMeAPC ou r / SuggestALaptop /

Olá, estou procurando um laptop que possa lidar com análises espaciais em ESRI e QGIS, grandes conjuntos de dados espaciais e imagens de satélite, modelagem 3D com fotogrametria (Pix4D e metassforma) e usando grandes nuvens de pontos e LiDAR. Eu sou semi-novo nisso (mas quero fazer disso minha carreira), então estou me esforçando para determinar qual configuração eu preciso para que ele não trave a cada 2 segundos, como meu laptop atual! Cada software acima recomenda algo diferente! Eu quero algo que irá lidar com isso no futuro, já que não quero ser limitado por 2 anos no futuro. Eu também uso muito R para análise de dados, mas não acho que isso será limitado pelas especificações que estou examinando. esperançosamente.

Portanto, é necessária uma GPU de estação de trabalho (por exemplo, um Quadro modelo P2200 ou P4000) ou uma GPU de jogos seria adequada (potencialmente RTX 2080 ou 3080)? Ou outras sugestões, jogue-as em mim!

O resto da configuração I & # x27m pensando em Intel i7, 16-32GB de RAM, 512-1TB SSD, sem overclock. Quaisquer outras dicas para o resto da configuração também serão apreciadas, eu não sou um especialista em informática! Eu também não estarei fazendo nenhum jogo. Ou também considerando os modelos de precisão da Dell ou uma construção através de um especialista em PC, se alguém puder recomendar os deles para os usos acima?

Espero gastar até £ 1500, que sei ser uma margem de preço estreita para o que declarei (pensando em construir ou renovar para manter os custos baixos), mas posso expandir meu orçamento com o conselho certo e se for absolutamente necessário.

Quando você encontrar um modelo promissor, verifique suas características térmicas para ter certeza de que ele pode suportar cargas prolongadas. Uma CPU de 2 Ghz que pode continuar e continuar é melhor do que uma CPU de 2,6 Ghz que cai para 0,8 Ghz após 4 minutos.

Não compre uma reforma. Eles são bons para pessoas que trabalham com conjuntos de dados menores, mas o desempenho obtido pela nova geração valerá a pena. Procure em laptops para jogos. Se for absolutamente necessário, certifique-se de que é & # x27s 8th gen intel ou série H mais recente (não é bom para o que você precisa) e não compre um AMD recondicionado.

CPU: AMD Ryzen 7 4800H ou HS teria mais desempenho ao mesmo tempo que era mais barato, mas há opções de GPU limitadas disponíveis.

GPU: não obtenha um quadro, QGIS não se preocupa, ESRI não se importa, Quadros têm um desempenho pior no Pix4D do que o geforce e têm um desempenho semelhante na meta-forma. Não tenho certeza sobre a GPU e é difícil com laptops, pois você não pode atualizar. Um 2060 deve funcionar bem, mas a VRAM de 6 GB pode se tornar uma limitação, portanto, 2070, 3070, 2080 ou 3080 podem ser melhores opções. Observe as análises de modelos específicos, pois todos variam muito em desempenho.

RAM - obtenha um laptop com RAM atualizável. Se você pode caber 32 GB em seu orçamento, faça isso, caso contrário, obtenha 16 e encontre um vídeo sobre como atualizar esse modelo específico para guiá-lo.

SSD - o mesmo que RAM. Se você pode caber 1 TB em seu orçamento, compre; caso contrário, atualize mais tarde, é muito mais barato.

Laptops em sua faixa de preço não fazem overclock, então não se preocupe com isso. Você pode querer diminuir a tensão se tiver problemas térmicos / vida útil da bateria.

Você tem uma tela e um teclado que usará nisto, ou planeja apenas usar o integrado? Em caso afirmativo, você pode querer verificar as avaliações sobre como é a qualidade da construção. A vida da bateria também se você precisar, pois a maioria dos fornecedores é furtiva com esse número.

Não tenho nenhum modelo específico para sugerir agora, pois há uma mudança chegando, mas no passado o lenovo legion 5 (e 5i), o hp omen e o asus zephyrus g14 eram aquisições sólidas.

Precisa de um laptop com certa rapidez para trabalhar. Eu trabalho na indústria de mineração e executo o QGIS com conjuntos de dados governamentais maiores (muitos dados de pontos, ASTER / Landsat) principalmente usando esses conjuntos de dados maiores para construir mapas e integrar dados espaciais (por exemplo, material geofísico, geoquímico para fazer mapas e geralmente usa estações de trabalho) . Aqui está o resumo:

viagens: muito, muito no campo / muito fora de um caminhão

executando mais de um projeto QGIS por vez

trabalhe fora de um pouco - então uma tela decente (embora eu & # x27m olhando para comprar um hardpad de $ 3.000 para o trabalho de campo real)

não executando muitos 3D / gráficos no momento, mas pode funcionar neste domínio (baixa prioridade)

O que eu & # x27 descobri que preciso / prefiro:

I7 ou Rayzen 7 3ª geração 4 núcleos

500 GB PCIe gen 4 NVMe SSD (não SADA)

Tela 15-17 & quot (portabilidade é algo importante, mas será uma estação de trabalho).

plataforma produtiva que não ficará congelada à minha direita e à esquerda

Alguém sabe de algo que posso clicar e ter em pouco tempo?

Isso é um pouco complicado. Se você precisa de algo realmente rápido para trabalhar, a melhor aposta é ir à sua loja de informática local e comprar algo em estoque. Em termos de desempenho, realmente depende do modelo, mas normalmente do melhor ao pior seria:

CPU AMD Zen 2 H series (especificamente Ryzen 5 4600H e 7 4800H) com qualquer tipo de gráficos discretos (um 1650 ou 1650 super bastaria). As CPUs da série H podem manter um desempenho sustentado mais alto do que as CPUs terminadas em U. Esta também deve ser uma das opções mais baratas.

CPU Intel série 8, 9 ou 10 geração H e uma GPU discreta (igual ao anterior). Como a AMD, a série H tem um desempenho sustentado mais rápido do que as que terminam em U.

CPU Intel de 11ª geração com gráficos iris plus (ou Xe) integrados. Especificamente, você & # x27d deseja examinar o i7-1165G7, o 1180G7 ou o 1185 G7. Eles devem ter um desempenho razoavelmente bom, mas ainda estão um pouco atrás de uma CPU de estação de trabalho totalmente portátil e GPU discreta.

Agora, para os modelos. O legion 5 (AMD) deve atender aos seus requisitos, mas você & # x27d precisa personalizá-lo para mais memória RAM, ssd e tela mais brilhante (embora a RAM e o ssd você provavelmente possa fazer por mais barato). O zéfiro está fora de sua faixa de preço. Pode haver um pavilhão HP que se encaixa na sua faixa de preço e é decente. Provavelmente há alguns sistemas Dell, mas eles não se saíram tão bem nas análises. Evito outros modelos asus e outras marcas como MSI e gigabyte só porque não estou familiarizado com qualidade. I & # x27d também sugiro que você experimente, veja o brilho da tela, veja como o teclado está, etc.

Ei pessoal. Normalmente tenho que exportar uma série de, digamos, 300 mapas PDF do QGIS a 6-10Mb cada, ou seja, 2-3Gb de mapas. Esses mapas geralmente têm algum mapa base raster, geralmente imagens aéreas e, em seguida, um monte de camadas vetoriais no topo. A exportação leva muito tempo, então estou me perguntando quais componentes do PC são mais importantes para acelerar um processo como este. Presumo que a GPU não tem muito a fazer, então é a memória (velocidade, capacidade, tempos, uma combinação?), CPU (desempenho de núcleo único, desempenho de vários núcleos, número de threads?) Ou disco velocidades de gravação. É este um caso em que ter um NVMe PCIe gen 4 seria benéfico (se emparelhado com a CPU e mobo corretas para permitir a utilização de velocidades de gen 4)? Obrigado.

Você tentou executar as exportações em paralelo (por exemplo, 5 PDFs por vez)? Você pode obter benefícios significativos se estiver vinculado à CPU de um único núcleo.

Então, acabei de testar em minha própria instalação do QGIS exportando um mapa no qual estava trabalhando. Algumas informações de configuração:

Os mapas usam imagens de fundo de um serviço da web

algumas imagens detalhadas são de unidades de rede

a maioria dos dados vetoriais está em um postgresql remoto externo à minha própria rede

o resto está nas unidades de rede com as imagens

Tenho uma conexão de fibra ascendente e descendente de 750 Mbps na minha localização

o escritório tem conexão de fibra de 250-300 mbps para cima e para baixo. O ping no postgresql ou nos servidores de arquivos está entre 1-2ms.

Eu exportei localmente para meu drive pcie3 nvme em meu laptop, que também tem um i7-8565U, um quadro P520 e 16 GB de 2.400 MHz de RAM.

A rede quase não foi usada, mas não tenho tempo para medir a latência, o que acho que seria um problema para ler todos os dados.

A CPU teve uso máximo de 25% (2 núcleos, mas não pareceu favorecer nenhum dos dois).

O uso de SSD era mínimo.

O uso da GPU não foi detectável (nem o uso integrado ou dedicado da serra ou acelerado a partir do modo inativo).

Algumas coisas que não tenho tempo ou não posso testar:

Como ele é um laptop, não consigo OC facilmente minha CPU, velocidade de RAM ou temporizações de RAM. Eu posso abaixá-los, mas isso pode invalidar o teste devido às diferenças do perfil de resfriamento que não são facilmente explicadas em um laptop.

Não tenho tempo para medir a latência ao ler os dados, mas sinto que mesmo que eu & # x27m em fibra, 1-2 ms está prejudicando o desempenho em comparação com ter todos os dados localmente.

Não consigo ver quanto cache está sendo usado e quantas perdas de cache estão acontecendo.

Pela minha experiência, meu palpite seria que as prioridades a serem melhoradas seriam as seguintes:

Reduza a latência para leituras de dados. A opção mais rápida possível seria colocar todos os dados e atribuir o QGIS para usar um diretório temporário no RAMdisk em sua localização temporária. O segundo melhor seria intel optane, o terceiro melhor um nvme com cache slc decente e o quarto poderia ser postgres ou algo localmente ou conectado em uma conexão de latência muito baixa. Como a largura de banda não parece importar muito, a latência provavelmente importa.

Desempenho de núcleo único da CPU. Como a CPU não está em 100% em todos os núcleos, o desempenho de um único núcleo provavelmente ajudaria mais do que o desempenho de vários núcleos, pois cada thread deve terminar mais rápido. Se você estiver usando uma CPU AMD com vários CCX & # x27s, pode haver uma penalidade de desempenho se QGIS não estiver & # x27t usando todos os núcleos no mesmo CCX. Intel é um projeto monolítico, portanto, não sofre os mesmos problemas. Se você tiver uma única CPU CCX AMD, provavelmente está tudo bem. Eu também não tenho certeza se AVX / AVX2 / AVX512 desempenha um papel nisso, eu não acho que posso mudar o suporte AVX no meu laptop e mesmo se eu puder, não tenho tempo para, e tenho certeza 512 isn & # x27t suportado de qualquer maneira.

Para a memória, não tenho certeza se a latência ou a largura de banda são mais importantes, eu presumiria ambas as coisas.

Para escrever, não deve importar tanto porque não é tanto escrever, as gravações sequenciais são provavelmente o fator mais importante aqui.

TLDR: Testei, não o suficiente para descobrir algo muito conclusivo, mas meu palpite seria diminuir a latência de leitura (aumentar IOPS), melhorar o desempenho de núcleo único da CPU e não obter uma CPU multi-ccx e, em seguida, largura de banda de memória e latência (temporizações) , em seguida, leitura sequencial.

EDITAR - a capacidade de RAM não importava, eu tenho 16 GBs e o QGIS nem usava 2.


Como resolver então?

Tudo o que você pode e deve importar / exportar são coordenadas UV com sua malha para que você possa aplicar corretamente suas texturas no aplicativo & quottarget & quot, motor de jogo ou ambiente de renderização receptora, onde você estará importando e exibindo seu modelo, seja ele Unreal, Unity, Gamekit, software de renderização externo ou outros enfeites ou mesmo o próprio Blender ao importar modelos de outro lugar. Os mapas UV são geralmente preservados corretamente pela maioria dos formatos de arquivo de troca por padrão.

Lá você deve passar algum tempo recriando seus materiais do zero novamente com as texturas fornecidas e os mapas disponíveis. Sim, requer alguns retrocessos e demorará um pouco, mas com a prática ficará mais rápido. Salve predefinições em bibliotecas reutilizáveis ​​quando disponíveis, para reduzir a quantidade de repetição.

O que você pode fazer em algumas situações é usar o Blender para assar texturas que você pode usar mais tarde no destino final ou receber aplicação para criar materiais lá, não está dentro do Blender.

O cozimento é o processo de pré-calcular o sombreamento e armazená-lo em uma textura de imagem estática que pode incorporar vários canais opcionais como difusa, brilhante, iluminação indireta, mapas de relevo, mapas normais, mapas de luz, entre outros. Isso pode melhorar a qualidade gráfica ou o "realismo" percebido às custas do dinamismo, pois certas propriedades de materiais e texturas podem se tornar estáticas, como se "pintadas na superfície", como sombras ou reflexos. Isso geralmente é um requisito para mídias de alto desempenho ou plataformas de baixo consumo de energia, como jogos na web ou em dispositivos móveis, onde os recursos disponíveis são limitados ou desconhecidos e a velocidade tem precedência sobre a fidelidade gráfica.


11 Respostas 11

As tabelas InnoDB não podem ser copiadas da mesma forma que as tabelas MyISAM.

Copiar os arquivos .frm e .ibd de um local para outro já está causando problemas. Copiar o arquivo .frm e .ibd de uma tabela InnoDB é apenas bom se e somente se você pode garantir que o id do espaço de tabela do arquivo .ibd corresponde exatamente com a entrada de id do espaço de tabela nos metadados do arquivo ibdata1.

Eu escrevi dois posts no DBA StackExchange sobre este conceito de ID de espaço de tabela

Aqui está um excelente link sobre como reanexar qualquer arquivo .ibd ao ibdata1 no caso de ids de espaço de tabela incompatíveis: http://www.chriscalender.com/?tag=innodb-error-tablespace-id-in-file. Depois de ler isso, você deve perceber imediatamente que copiar arquivos .ibd é simplesmente uma loucura.

Você pode aplicar as sugestões do link Chris Calendar ou voltar para a instalação antiga do mysql, inicializar o mysql e então mysqldump no banco de dados ddms. Em seguida, importe esse mysqldump para sua nova instância do mysql. Acredite em mim, isso seria muito mais fácil.

Recentemente, tive esse mesmo problema. Here are the steps I used to solve it without having to mess around with the tablespace id as RolandoMySQLDBA mentions above. I'm on a Mac and so I used MAMP in order to restore the Database to a point where I could export it in a MySQL dump.

-.FRM files from your mysql_database folder

-Fresh installation of MAMP / MAMP Pro that you are willing to destroy (if need be)

  1. SSH into your web server (dev, production, no difference) and browse to your mysql folder (mine was at /var/lib/mysql for a Plesk installation on Linux)
  2. Compress the mysql folder
  3. Download an archive of mysql folder which should contain all mySQL databases, whether MyISAM or innoDB (you can scp this file, or move this to a downloadable directory, if need be)
  4. Install MAMP (Mac, Apache, MySQL, PHP)
  5. Browse to /Applications/MAMP/db/mysql/
  6. Backup /Applications/MAMP/db/mysql to a zip archive (just in case)

Copy in all folders and files included in the archive of the mysql folder from the production server (mt Plesk environment in my case) EXCEPT DO NOT OVERWRITE:

And voila, you now should be able to access the databases from phpMyAdmin, what a relief!

But we're not done, you now need to perform a mysqldump in order to restore these files to your production environment, and the phpmyadmin interface times out for large databases. Follow the steps here:

Copied below for reference. Note that on a default MAMP installation, the password is "root".


Proposed Solution

Datum transforms will be set uniquely for each pair of source -> destination CRS within each project. This is a change from 2.x, where datum transforms can be set on a "per-layer" level (e.g. within a single project a unique combination of source->dest CRS can have different datum transforms per layer in the project). Handling this case requires a much more complicated API, and no strong use case could be determined which requires maintaining this facility. Datum transform setup must be done within projects to allow projects to be seamlessly shared between QGIS instances (and between client/server) without loss of datum transform settings.

Users can pre-define a set of "default transforms" via the global QGIS options. These transforms would be automatically inherited on creation of a new project within QGIS. This allows users to setup once in advance a number of common source->dest CRS pairs and the transform which should be used for that conversion, and have confidence that future projects will correctly handle these transforms. Additionally, use of the new user profiles/shared settings support in 3.0 will allow organisations to predefine these common transforms for their users.

A new QgsCoordinateTransformContext class will be created. Initially this class will only contain a map for source/destination CRS pairs to the corresponding datum transforms to be utilised for this combination. In future (when more details about the proposed architecture is available) support for dynamic temporal based transforms can be added to QgsCoordinateTransformContext - e.g. a "transform datetime" member for specifying the desired datetime which the transform should target.

QgsProject will gain a QgsCoordinateTransformContext member, with public const/non-const reference getters.

QgsCoordinateTransform constructor will be modified from the current

QgsCoordinateTransform( const QgsCoordinateReferenceSystem &source, const QgsCoordinateReferenceSystem &destination )

signature to instead include a compulsory QgsCoordinateTransformContext argument:

QgsCoordinateTransform( const QgsCoordinateReferenceSystem &source, const QgsCoordinateReferenceSystem &destination, const QgsCoordinateTransformContext& context )

This forces users of the QgsCoordinateTransform class to handle correct datum transform by requiring them to specify this QgsCoordinateTransformContext argument before performing and coordinate conversion. The QgsCoordinateTransformContext argument will be used to preset the source and dest datum transforms for the coordinate transform automatically (these will still be overwritable using setSourceDatumTransform and setDestDatumTransform if explicitly required).

  1. To simplify construction of QgsCoordinateTransform, an overload which accepts a QgsProject argument instead of the QgsCoordinateTransformContext argument will also be added:

QgsCoordinateTransform( const QgsCoordinateReferenceSystem &source, const QgsCoordinateReferenceSystem &destination, const QgsProject* project )

This constructor will automatically retrieve the transform context from the project before using the same code paths as the QgsCoordinateTransformContext argument constructor - no permanent reference to the project will be stored.

This addition is designed to allow easier use of QgsCoordinateTransform API for PyQGIS users - plugins can resort to the 2.x style 'hack' of relying on the project instance ct = QgsCoordinateTransform(source_crs, dest_crs, QgsProject.instance() ) . While use of the project instance is discouraged from master code (and blocked from new inclusions in the core library), it will not be removed from the 3.0 api. This means plugins and scripts converting from 2.x api will only need to add the additional QgsProject.instance() argument to QgsCoordinateTransform constructors to be sure of correct handling of datum transforms in their code.

All QgsCoordinateTransform constructors throughout the master code will be upgraded to the new API, using the correct project reference wherever possible in core (and falling back to QgsProject::instance() for gui/app)

No compatibility will be given to upgrading 2.x project datum transform settings. Instead users are required to setup datum transforms in their existing projects using the new "single transform for each src/dest crs" approach. We will make mention in the release notes of this requirement.

Appropriate unit tests will be added covering all core changes.

Affected Files


I tried from a backup snapshot of my system, enabling Pre-released updates (trusty-proposed) in Software & Updates > Updates . After the system updated.

Rebooted and unity desktop came back 100%

I hope that this works for all of you.

P.S During my week of frustration I discovered Timeshift which creates a backup of your system, no personal files so you can revert to a previous state prior to any updates etc..

Ill never do a system update again without a backup to be able to revert to.

After an upgrade yesterday my system (DELL XPS with Intel graphics) got the same problem after a restart this morning.

First I checked the packages which were updated yesterday:

The update yesterday contained different libgl1* packages. So I started to check their content and the libgl1-mesa-dri:amd64 package was the one I searched for:

The broken shared object i965_dri.so is part of this package. I checked for an older version of that package with:

and decided to use the version 10.1.0-4ubuntu5 .

AVISO: Do not start with my commands till you read to the end.

This leads to a long list of packages which I need to purge:

MAS if you purge all of those packages you will purge some other importante packages, for me at the least unity, libunity-core-6.0-9, ubuntu-session, cairo-dock and most important xserver-xorg.

First I installed then libgl1-mesa-dri in the older version:

Then I reinstalled the other purged libs, without the libqt5gui5, in the older version:

Afterwards I installed the missing packages which I need:

Also I decided to use an older version of unity, just to be sure. If you want to use an older version set A=7.2.0+14.04.20140423-0ubuntu1.2 if not just remove the =$A behind the packages.

My system is running fine again after these steps. Just the background image was not there and I need to reinstall the cairo-dock, but the config of my old dock was still there.

I can't guarantee that this is a complete rollback description for everyones system. There could be more missing packages which need to be reinstalled after the purging. This may some experience to find, what is missing. For me especially the missing ubuntu-session was a problem to find.

Also the missing Xserver was a little bit annoying after a restart because I didn't know whether the wlan is working at the recovery mode or not, but it is working fine and the the xserver-xorg installation was not a problem.


Getting Inkscape into the search path

On Linux (and MacOS, I think), Inkscape is automatically added to the system's search path during installation. On Windows, you have to actively choose this during installation.

You can check if Inkscape is in the path by opening a command line (e.g. by right-clicking on the Windows button and selecting Windows PowerShell ) and executing inkscape (type it and press enter). If Inkscape is in the path, it will open, otherwise you will get an error.

If you did not add Inkscape to the search path and want to do so retroactively, you can follow these steps (or just uninstall and reinstall Inkscape): First, you have to finde the directory where the Inkscape executable is located. By default, this is C:Program FilesInkscape . Then you have to add this directory to the path variable. Open the Windows Settings and navigate to System → About → System info → Advanced system settings → Environment Variables . Now double click on Path in the list of System variables (for all users) or User variables (just for you). Click New , paste the directory of the Inkscape executable and press enter. Then press OK on the three open dialogues. Feito.

You may have to restart your LaTeX editor or command line for the change to take effect.


Assista o vídeo: Solve all Plugins Install Problems on QGIS. Openlayers plugin qgis