Suite

Plugin QGIS : Problèmes d'importation du fichier de ressources (resources_rc) - le plugin ne se charge pas - Problèmes de PATH ?

Plugin QGIS : Problèmes d'importation du fichier de ressources (resources_rc) - le plugin ne se charge pas - Problèmes de PATH ?


Je construis le plugin qgis et je ne trouve pas de solution à cette erreur.

Fichier "/usr/lib/python2.7/dist-packages/qgis/utils.py", ligne 478, dans _import mod = _builtin_import(name, globals, locaux, fromlist, level) ImportError : aucun module nommé resources_napoved_rc

Pour tous ceux qui me demanderont, j'ai créé un fichier de ressources python :

pyrcc4 -o resources_napoved_rc.py resources_napoved.qrc

Je n'arrive toujours pas à trouver un moyen de le faire fonctionner. J'obtiens toujours la même erreur.

En plus du script j'ai :

importer resources_napoved_rc.py

J'utilise le fichier ui directement depuis qtbuilder. Des idées pour aller de l'avant ? Je suppose que cela doit être une sorte de problème de chemin ou quelque chose de similaire.


Ce problème est causé paruicne travaille pas proprement. Je ne sais pas exactement pourquoi, mais je peux montrer les symptômes et une solution de contournement.

Le plugin initial.uile fichier a un videRessourcesélément:

Lorsque vous modifiez les ressources du plugin dans QtDesigner, cela devient :

 

C'est la source du problème. Si vous modifiez le fichier .qrc dans ce comprendre marquer àressourcesXXX.qrcl'erreur deviendraAucun module nommé resourcesXXX_rc.

Remarque : ce qui suit est basé sur une version de plug-in avec « test » entré dans tous les champs du constructeur de plug-in QGIS.

Dans le test_dialog.py fichier les lignes suivantes compiler le .ui fichier:

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

C'est là que l'erreur se produit.

Modifiez votre.uifichier pour revenir àet le problème est résolu. Jusqu'à vous modifiez à nouveau votre boîte de dialogue dans QtDesigner. Vous devez apporter cette modification au.uifichier après chaque modification de votre boîte de dialogue.

La solution à cela est de changer votre plugin pour qu'il fonctionne comme les versions précédentes du plugin fonctionnaient. Il s'agit de remplacer le uic l'appel et les lignes de classe dans le _dialog.py fichier. Remplacez ces lignes :

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

avec:

de test_dialog_base import Ui_testDialogBase classe testDialog (QDockWidget, Ui_testDialogBase):

Il va maintenant falloir courir

pyuic4 -x test_dialog_base.ui > test_dialog_base.py

lorsque vous créez votre plugin pour la première fois et chaque fois que vous modifiez la boîte de dialogue de votre plugin avec QtDesigner. C'était l'ancienne méthode du plugin.

S'il faut modifier le.uifichier ou la coursepyuic4à chaque fois c'est ton choix.


Vous pouvez éviter d'avoir à modifier le fichier .ui ou à compiler, etc. en procédant comme suit :

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 est par défaut '_rc', c'est pourquoi il recherche toujours 'resources_rc.' (vous pouvez toujours le laisser par défaut si vous voulez vraiment utiliser resources_rc, bien sûr)

Et l'ajout du chemin du fichier .ui à sys.path permet à python de trouver resources.py. Vous pourriez penser qu'il serait capable de le comprendre puisque votre répertoire actuel est censé être dans sys.path (et d'autres importations à partir de votre répertoire actuel fonctionnent), mais ce n'est pas le cas. Je ne l'ai pas assez étudié pour comprendre exactement pourquoi.


Je l'ai finalement réparé après 3 heures d'essai. Comme quelqu'un l'a dit, QT Designer ajoute

dans votre fichier d'interface utilisateur. J'ai simplement supprimé ces lignes et tout fonctionne bien (les ressources sont visibles dans l'interface graphique)


Je pense que la réponse courte à ce problème est que les gens chargent le projet directement dans QGIS au lieu de l'exécuter :

faire déployer

Le fichierressources.pyn'est généré qu'après la première foisfaire déployerest exécuté.


Voici comment j'ai résolu le problème :

  • Exécuter->cmd

  • Accédez à l'emplacement de votre constructeur de plugin (c'est-à-dire : c:/users/rafik_pc/.qgis2/python/plugins/pluginbuilder)

  • tapez la commande suivante :

    pyrcc4 -py2 resources.qrc -o resources.py

(J'ai utilisé -py2 car j'utilise python 2.7)

  • redémarrez votre QGIS.

  • TERMINÉ.


Tu peux donneruic.loadUiTypele package à partir duquel importer les ressources, par exemple :

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

Je ferai une pull request sur QGIS Plugin builder quand j'aurai un peu de temps.


Ce qui a fonctionné pour moi à la fin, c'est d'utiliser les ressources originales fournies lors de la création du package avec le constructeur de plugin et de l'utiliser dans toutes les autres boîtes de dialogue de mon plugin. Je ne sais toujours pas pourquoi l'icône principale de mon plugin change lors du rechargement du plugin, mais j'obtiens toujours des graphiques dans d'autres boîtes de dialogue.

J'aimerais que ce soit différent pour de nombreuses raisons. Pour créer un plugin simple, cette approche fonctionne probablement. C'est un truc d'organisation.

Comme j'ai eu tant de problèmes avec ces ressources, j'ai créé resources.py et resources_rc.py, c'est probablement pourquoi j'ai des problèmes lors du rechargement.

Je n'ai pas le temps de m'occuper de ce problème mais l'équipe de développement de QGIS devrait y prêter attention car cela empêche les gens de créer de beaux plugins :D

Ce que j'ai fini par faire, c'est d'avoir simple:

importer des ressources

avant d'appeler la classe UI.

Merci de m'aider avec ce gâchis.

PS : vous devez "compiler" vos ressources avant de les ajouter à votre fichier *.ui et utiliser les mêmes ressources -> importer des ressources dans toutes les boîtes de dialogue de votre plugin. J'espère que ça aidera quelqu'un.


Lorsque vous créez votre plugin QGIS avec ce processus, vous créez uncompiler.batfichier contenant les éléments suivants :

@echo off appeler "C:OSGeo4W64ino4w_env.bat" appeler "C:OSGeo4W64inqt5_env.bat" appeler "C:OSGeo4W64inpy3_env.bat" @echo on pyrcc5 -o resources. py ressources.qrc

Exécutez la même commande en utilisant

sudo pyrcc4 -o resources_rc.py resources.qrc

Ça va marcher


Plugin QGIS : Problèmes d'importation du fichier de ressources (resources_rc) - le plugin ne se charge pas - Problèmes de PATH ? - Systèmes d'information géographique

J'essaie généralement de ne pas écrire sur la version “pre” (techniquement, c'est le maître) de QGIS. Bien sûr, je suis allé dire “HEY, je veux parler de QGIS lors d'une conférence” et une grande partie de ce dont je voulais parler était la nouvelle version. Ce qui comprenait également les nuages ​​de points & 8230 & 3.18 arrive demain. Ce qui a conduit à une démo frustrante, c'est pourquoi j'écris ceci.

TN a publié tous ses LIDAR en tant que données ouvertes et j'ai joué avec dans GRASS et PDAL et en général, c'est beaucoup. C'est beaucoup de réflexion. C'est juste beaucoup de points et de frustration. Les données sont toutes stockées dans zlas et il est difficile de faire quoi que ce soit car je ne travaille pas dans ESRI Software. En général, je le décompresse et conserve la copie non compressée, donc je stocke maintenant 4 comtés de LIDAR. J'ai tendance à rester excité à ce sujet pendant une journée, puis à revenir à PostGIS et QGIS jusqu'à ce que le besoin de me détester se reproduise.

Depuis plus tard, j'ai eu affaire à un projet parallèle où l'élévation est importante. J'ai eu des questions et je me suis demandé si mon approche était la bonne. J'ai également exécuté QGIS master car je suis curieux de savoir comment je peux tirer parti de certaines des nouvelles fonctionnalités avec les clients et les projets.

Donc, mon premier coup sur des points ressemblant à ceci dans QGIS :

Nuage de points flottants à environ 500 pieds du sol. Au début, je pensais que c'était une fonctionnalité, puis j'avais décidé que c'était un bug et heureusement, je peux envoyer un message rapide aux développeurs et Nyall est apparu et a dit "problème de projection".

Le lidar de Tn’s est donc hébergé ici. J'ai dû revenir en arrière et lire les métadonnées. Ce que j'ai appris, c'est que j'avais un problème de projection horizontale car j'avais supposé que X et j'avais un problème de projection verticale parce que je ne pensais pas que c'était un problème. En extrayant les données LIDAR du format zlas, je suis presque sûr d'avoir détruit la projection. Donc, en y retournant, j'avais besoin de le réparer. Comment je le répare? Pédale. En revenant, j'ai déterminé que mon nouveau fichier LAZ était EPSG : 6576 à l'horizontale et EPSG : 6360 à la verticale. Je l'ai donc corrigé par cette astuce avec PDAL :

Je ne veux pas entrer dans tous les détails techniques sur les raisons pour lesquelles cela a fonctionné et comment je l'ai fait, sauf que PDAL a des capacités de ligne de commande incroyables pour réparer les fichiers LAZ/LAS, en particulier la projection.

Voici la chose cool. Lors de l'ajout des nouvelles données à QGIS, on m'a indiqué qu'il me manquait une transformation nécessaire. QGIS s'exécute sur Proj 7. On m'a demandé de cliquer sur un lien et de le corriger. J'ai cliqué aveuglément. J'ai importé aveuglément.

Ça a marché. Le LIDAR correspond à mon DEM. Proj connaît le problème et QGIS le résout. Clickité Cliquez. Cela ne se produit probablement pas dans 100% des cas, mais cela a fonctionné pour moi.

“JE DOIS FAIRE TOUT CECI EN CLIQUANT OMG J'AI UN LIDAR JE N'EN SAIS PAS BEAUCOUP, direz-vous. Je pense que dans la plupart des cas, si vous avez un fichier LAS/LAZ, tout va bien. Il s'agissait d'un cas particulier où j'avais des données avec une projection/pas de projection foutue en préparation d'une démo. Vous n'avez donc pas besoin de savoir des choses sur PDAL et sur votre LIDAR. Vous l'ajoutez et c'est parti. Ce n'est pas une mauvaise chose à savoir, mais dans l'ensemble ça devrait aller.

Tout cela est assez étonnant en fait. Vous avez ce petit bureau open source qui peut restituer un nuage de points. Je pense que cela ouvre la porte à l'analyse et à d'autres choses qui sont généralement en dehors des opérations normales de QGIS. GRASS peut déjà fonctionner avec LIDAR. Maintenant, vous pouvez le regarder. Oh les choses que vous ferez.


Le début QGIS- InaSÉCURITÉ Boîte à outils est conçu pour préparer les formateurs à dispenser une formation aux nouveaux utilisateurs de QGIS. Le matériel inclus préparera les formateurs à mener des formations avec une variété de publics et à couvrir les problèmes et les pièges courants, et fournira également aux formateurs les meilleures méthodologies.

Lors de l'organisation d'une formation QGIS-InaSAFE, de nombreux facteurs doivent être pris en compte, notamment le temps dont vous disposez pour vous former, les ressources disponibles, le nombre de stagiaires et leurs compétences techniques. Cette boîte à outils aidera les formateurs à préparer des formations pour différents types de participants, mais elle se concentrera principalement sur l'éducation de ceux qui ont peu ou pas d'expérience avec le GPS, la cartographie et les ordinateurs.

Le but de cette boîte à outils est de préparer le formateur à former avec succès les participants de l'atelier à l'utilisation de QGIS et à l'analyse des données sur les risques et l'exposition avec InaSAFE.

But de l'atelier¶

Cet atelier vise à acquérir les compétences standard et de base suivantes :

Compétence standard¶

Gestion des données spatiales à l'aide de QGIS et analyse des scénarios d'impact de catastrophe avec InaSAFE

Compétences de base¶

  1. Utiliser le SIG pour développer des scénarios de planification d'urgence
  2. Comprendre les avantages de QGIS et d'InaSAFE pour développer des scénarios réalistes pour la planification d'urgence
  3. Installer QGIS et comprendre l'interface utilisateur de QGIS
  4. Utiliser les plugins QGIS
  5. Comprendre les systèmes de projection et la transformation dans QGIS
  6. Utiliser et comprendre les données vectorielles
  7. Catégoriser et créer des étiquettes à partir de données vectorielles
  8. Utiliser et comprendre les données raster
  9. Créer et éditer de nouvelles couches vectorielles
  10. Analyser des données vectorielles pour résoudre des problèmes
  11. Créer des cartes avec Map Composer
  12. Utiliser InaSAFE
  13. Comprendre comment obtenir une assistance pour QGIS et InaSAFE en Indonésie

Matériel d'atelier¶

  1. SIG pour l'élaboration d'un plan d'urgence
  2. QGIS et InaSAFE dans la planification d'urgence
  3. Les bases de QGIS
  4. Plugins QGIS
  5. Principes de base de la projection cartographique
  6. Travailler avec des données vectorielles
  7. Étiquettes et classification
  8. Utilisation des données raster
  9. Création de calques vectoriels
  10. Analyse vectorielle pour la résolution de problèmes
  11. Utilisation de Map Composer
  12. Comprendre InaSAFE
  13. Obtenir de l'aide

Stratégies d'atelier¶

  1. Les méthodes soulignées dans cet atelier sont l'enseignement participatif et la participation active à toutes les sections et activités, plutôt que la méthode des cours magistraux.
  2. Orienté participant. Les participants sont encouragés à trouver et à acquérir des connaissances et des compétences par eux-mêmes.
  3. Les formateurs servent de facilitateurs. Les formateurs facilitent pour aider les idées de l'atelier à émerger des participants, pas seulement des formateurs. Cependant, les formateurs doivent être prêts à fournir les informations nécessaires lorsque les participants ont besoin d'aide.
  4. Orienté vers les résultats. L'atelier doit produire les résultats mentionnés précédemment.

Outils¶

  1. Copie de Analyse de données à l'aide de QGIS et InaSAFE niveau débutant pour les participants
  2. Un espace atelier avec tables et sièges
  3. Ordinateurs (un ordinateur peut être utilisé par deux participants, mais il est préférable qu'un ordinateur soit utilisé par un participant)
  4. Un projecteur (pour présenter la diapositive et démontrer les instructions techniques et le logiciel)
  5. Clé(s) USB Flash pour transférer des fichiers et des logiciels
  6. Bonne connexion internet
  7. Snacks et café pour les pauses

4 réponses 4

Lorsque vous créez un fichier .jar, que vous le déployez sur un système et que vous l'exécutez, il n'est en soi ni plus ni moins vulnérable que toute autre application développée avec une autre technologie.

Les attaques décrites dans ces articles sont pertinentes lorsque l'attaquant peut déjà injecter du code Java dans votre application. Par exemple, lorsque votre application charge des classes au moment de l'exécution avec un ClassLoader à partir d'une source qui n'est pas sous votre contrôle (ou celui de votre utilisateur). Les articles ne font que répéter ce que tout développeur d'applications devrait déjà savoir : Ne chargez pas et n'exécutez pas de code non fiable. Lorsque vous ne faites rien de tel, vous n'avez pas à vous inquiéter.

Les articles réfutent principalement l'idée fausse selon laquelle il serait possible de créer un environnement d'exécution de plug-in en bac à sable en s'appuyant sur les fonctionnalités de visibilité JAVA. Supposons que vous souhaitiez créer une application Java dans laquelle les utilisateurs peuvent télécharger des extensions à partir du Web. Cela fonctionne en téléchargeant le fichier .class et en le chargeant au moment de l'exécution avec ClassLoader . Mais vous voulez limiter ce que ces extensions peuvent et ne peuvent pas faire. Pourriez-vous simplement déclarer les données auxquelles vous ne voulez pas que ces extensions accèdent comme privées ? Non, cela ne fonctionne pas, car il existe des astuces pour subvertir ces modificateurs d'accès.

Une fois que quelqu'un a accès à un fichier jar, il est relativement simple de le décompiler. Je suis donc très curieux de connaître les pratiques de sécurité entourant les applications Java d'inviolabilité.

Quant à la question posée. Disons qu'une classe a une méthode equals qui n'est pas déclarée finale. Si la méthode equals renvoie true, elle vous donne accès à une ressource critique. Vous pouvez créer une classe avec la classe d'origine comme classe parent et définir une méthode avec le même nom et les mêmes arguments que les égaux dans la classe Parent. Faites que cette méthode retourne vrai tout le temps.

Vous pouvez maintenant passer votre classe dérivée dans n'importe quelle fonction qui accepte la classe parente d'origine comme argument. Lorsque la méthode equals est appelée, elle renverra true car vous « remplacez » la méthode. Il n'appellera jamais la classe égale des parents parce que vous n'avez pas appelé super.equals dans votre hack.

Plusieurs outils (par exemple Collabnet Subversion) vous permettent de télécharger des fichiers jar implémentant des interfaces pour créer des gestionnaires d'événements et d'autres types de personnalisations de fonctionnalités. Ignorer soigneusement les méthodes critiques pour contourner les contrôles de sécurité est probablement une vulnérabilité plus courante qu'on ne le sait. Je pense que de nombreux fournisseurs d'outils s'appuient sur un accès administratif pour télécharger des personnalisations afin de les protéger.

MÉTHODE DE DÉPASSEMENT PAR HÉRITAGE

Si nous ne parlons strictement que de l'utilisation de l'héritage pour remplacer la méthode sur une application existante à laquelle vous n'avez pas accès au code source, @objlass est un peu hors sujet.

En effet, si vous créez une nouvelle classe qui en étend une nouvelle et remplacez simplement une méthode et la placez dans le dossier classes de l'application en cours d'exécution, rien ne se passera. Cela tient compte du fait que vous ne faites pas des choses complexes comme la décompilation et la modification du code existant.

Cependant, si vous avez un DI Manager comme Spring, vous pouvez changer la classe injectée en éditant le fichier XML, et ainsi vous pouvez remplacer votre propre bean par celui d'origine.

Un autre type d'attaques consiste également à ne pas remplacer les méthodes, en ajoutant des points de coupure à l'aide d'aspect, encore une fois, cela peut être fait en utilisant un framework comme Spring.

Pour la sécurité de l'application, j'ai seulement entendu dire que certains projets interdisaient à toute bibliothèque d'ajouter la possibilité d'ajouter des points coupés à l'aide d'aspects.

Le fait qu'en Java il puisse être plus facile d'injecter du code ne veut pas dire grand chose, vous pouvez simplement considérer que si quelqu'un a pu accéder à votre serveur d'application, le serveur est corrompu.

DOSSIER ENDOERS DE LA CLASSE SUPÉRIEURE UING

Une autre façon de pirater serait d'utiliser le mécanisme approuvé de Java, c'est un endroit spécifique où tous les JAR qui sont mis ici ont préséance sur tous les autres. Cela signifie donc que vous pouvez écraser même un type comme Java.lang.String. Ou au lieu de dériver une classe pour la remplacer ou d'ajouter un point de coupe, vous pouvez simplement obtenir la classe (soit le code source, soit décompiler .class) la modifier, la compiler, la mettre dans un JAR et la placer dans le dossier approuvé.

Notez qu'apache Tomcat par exemple possède déjà un dossier "approuvé" utilisé pour remplacer toute bibliothèque dont il a besoin en interne pour avoir la bonne version des classes. vous pouvez simplement ouvrir l'un de ces JARS et y ajouter votre classe.

PROTÉGER CONTRE CES MÉTHODES

Comment un administrateur système est-il censé détecter cela ? Eh bien, en fait, j'ai vu une solution assez simple: un script qui vérifie périodiquement (cron. :p) si un fichier sur le serveur (attendez les journaux qui sont movd sur /var/log ou autre) a changé et le signale à l'administrateur système si alors.

Car quelle que soit la façon dont vous le faites, si vous ne pouvez pas changer le code source avant qu'il ne soit sur le serveur, vous devrez modifier les fichiers et détecter cela est en fait assez facile.

Pour aller encore plus loin, vous pouvez utiliser le calcul des hachages md5 (et toujours en vérifiant la taille du fichier !) de tous les fichiers de votre serveur et du script en cours d'exécution (au cas où quelqu'un essaierait d'ajouter un dossier externe au chemin de classe).

Enfin, ce que j'ai à dire ici est assez simple à mettre en œuvre, il existe probablement des moyens encore plus intelligents de le faire, mais je n'ai pas les connaissances nécessaires pour cela.

Merci à @ojblass de souligner qu'il existe un package nommé Tripwire qui surveillera les fichiers/répertoires pour vous et exécutera la commande que vous souhaitez lorsque quelque chose se produit.


/r/GIS - Quel ordinateur dois-je avoir ? Février 2021

Ceci est le fil de discussion officiel de r/GIS "quel ordinateur dois-je acheter". Qui est posté tous les mois. Consultez les discussions précédentes. Tous les autres messages de recommandation informatique seront supprimés.

Publiez vos recommandations, questions ou avis sur un achat récent.

Triez par "nouveau" pour les derniers messages, et consultez d'abord le WIKI : Quel ordinateur dois-je acheter pour le SIG ?

Pour un subreddit consacré à ce type de discussion, consultez r/BuildMeAPC ou r/SuggestALaptop/

Bonjour, je cherche à obtenir un ordinateur portable capable de gérer l'analyse spatiale dans ESRI et QGIS, les grands ensembles de données spatiales et l'imagerie satellite, la modélisation 3D avec photogrammétrie (Pix4D et metashape) et en utilisant de grands nuages ​​de points et LiDAR. Je suis à moitié nouveau sur ceux-ci (mais je veux en faire ma carrière), donc j'ai du mal à déterminer de quelle configuration j'ai besoin pour qu'il ne plante pas toutes les 2 secondes comme mon ordinateur portable actuel ! Chaque logiciel ci-dessus recommande quelque chose de différent ! Je veux quelque chose qui va y faire face à l'avenir car je ne veux pas être limité 2 ans plus tard. J'utilise également beaucoup de R pour l'analyse des données, mais je ne pense pas que cela sera limité avec les spécifications que je regarde. avec un peu de chance.

Un GPU de station de travail (par exemple, un modèle Quadro P2200 ou P4000) est-il donc requis, ou un GPU de jeu serait-il adéquat (potentiellement RTX 2080 ou 3080) ? Ou d'autres suggestions, lancez-les moi !

Le reste de la configuration, je pense à Intel i7, 16 à 32 Go de RAM, 512 à 1 To de SSD, pas d'overclocking. Tout autre conseil pour le reste de l'installation serait également apprécié, je ne suis pas un informaticien ! Je ne ferai pas non plus de jeux. Ou envisagez également des modèles de précision Dell ou une construction via pcspecialist si quelqu'un peut recommander le leur pour les utilisations ci-dessus ?

J'espère dépenser jusqu'à 1500 £, ce qui, je le sais, est une marge de prix étroite pour ce que j'ai déclaré (penser à construire ou à rénover pour réduire les coûts), mais je peux augmenter mon budget avec les bons conseils et si c'est absolument nécessaire.

Lorsque vous trouvez un modèle prometteur, vérifiez ses caractéristiques thermiques pour vous assurer qu'il peut résister à une charge prolongée. Un processeur 2 Ghz qui peut continuer indéfiniment est meilleur qu'un processeur 2,6 Ghz qui tombe à 0,8 Ghz après 4 minutes.

Ne faites pas rénover. Ils conviennent aux personnes travaillant avec des ensembles de données plus petits, mais les performances acquises par la nouvelle génération en vaudront la peine. Regardez dans les ordinateurs portables de jeu. Si vous devez absolument le faire, assurez-vous qu'il s'agit d'une série Intel de 8e génération ou d'une série H plus récente (U n'est pas bon pour ce dont vous avez besoin) et n'obtenez pas de reconditionnement d'AMD.

CPU : AMD Ryzen 7 4800H ou HS serait plus performant tout en étant moins cher, mais les options GPU disponibles sont limitées.

GPU : n'obtenez pas de quadro, QGIS s'en fiche, ESRI s'en fiche, Quadros donne de moins bonnes performances dans Pix4D que geforce et ils fonctionnent de la même manière dans métashape. Incertain sur le GPU et c'est difficile avec les ordinateurs portables car vous ne pouvez pas mettre à niveau. Un 2060 devrait faire l'affaire, mais la VRAM de 6 Go pourrait devenir une limitation, donc un 2070, 3070, 2080 ou 3080 peut être un meilleur achat. Regardez les critiques de modèles spécifiques, car ils varient tous énormément en termes de performances.

RAM - obtenez un ordinateur portable avec une RAM évolutive. Si vous pouvez inclure 32 Go dans votre budget, faites-le, sinon, obtenez-en 16 et trouvez une vidéo sur la mise à niveau de ce modèle spécifique pour vous guider.

SSD - identique à la RAM. Si vous pouvez inclure 1 To dans votre budget, obtenez-le, sinon mettez à niveau plus tard, c'est beaucoup moins cher.

Les ordinateurs portables dans votre gamme de prix n'overclockent pas, alors ne vous inquiétez pas pour celui-ci. Vous voudrez peut-être sous-tension si vous rencontrez des problèmes thermiques/d'autonomie de la batterie.

Avez-vous un écran et un clavier que vous utiliserez là-dessus, ou prévoyez-vous simplement d'utiliser le intégré? Si tel est le cas, vous voudrez peut-être consulter les avis sur la qualité de la construction. La durée de vie de la batterie aussi si vous en avez besoin, car la plupart des fournisseurs sont sournois avec ce nombre.

Je n'ai pas de modèles spécifiques à suggérer pour le moment car il y a un changement à venir, mais dans le passé, lenovo legion 5 (et 5i), hp omen et asus zephyrus g14 étaient des achats solides.

Besoin d'un ordinateur portable assez rapidement pour le travail. Je travaille dans l'industrie minière et j'exécute QGIS avec des ensembles de données gouvernementaux plus volumineux (beaucoup de données ponctuelles, ASTER/Landsat) en utilisant principalement ces ensembles de données plus volumineux pour créer des cartes et intégrer des données spatiales (par ex. . Voici le récapitulatif :

déplacements : beaucoup, beaucoup sur le terrain/hors d'un camion

exécuter plusieurs projets QGIS à la fois

travailler à l'extérieur un peu - donc un écran décent (bien que je cherche à acheter un hardpad de 3 000 $ pour le travail réel sur le terrain)

n'exécute pas beaucoup de 3D/graphiques pour le moment, mais peut fonctionner dans ce domaine (faible priorité)

Ce que j'ai compris dont j'ai besoin/préférerais :

I7 ou Rayzen 7 3e génération 4 cœurs

500 Go PCIe gen 4 NVMe SSD (pas SADA)

Écran 15-17" (la portabilité est un peu importante, mais ce sera un poste de travail).

plate-forme productive qui ne me gèlera pas à gauche et à droite

quelqu'un sait quelque chose que je peux cliquer et avoir en peu de temps ?

C'est un peu délicat. Si vous avez besoin de quelque chose très rapidement pour le travail, le mieux est d'aller dans votre magasin informatique local et d'avoir quelque chose en stock. En termes de performances, cela dépend vraiment du modèle, mais généralement du meilleur au pire serait :

Processeur AMD Zen 2 série H (en particulier Ryzen 5 4600H et 7 4800H) avec toute sorte de graphiques discrets (un super 1650 ou 1650 ferait l'affaire). Les processeurs de la série H peuvent conserver des performances soutenues plus élevées que les processeurs se terminant par U. Cela devrait également être l'une des options les moins chères.

Processeur Intel série H de 8e, 9e ou 10e génération et un GPU discret (le même que ci-dessus). Comme AMD, la série H a des performances soutenues plus rapides que celles se terminant par U.

Processeur Intel 11e génération avec carte graphique iris plus (ou Xe) intégrée. Plus précisément, vous voulez regarder le i7-1165G7, le 1180G7 ou le 1185 G7. Ceux-ci devraient fonctionner assez bien, mais restent un peu en retard sur un processeur de station de travail portable complet et un GPU discret.

Maintenant, place aux modèles. La légion 5 (AMD) devrait répondre à vos besoins, mais vous devez la personnaliser pour plus de RAM, de ssd et un écran plus lumineux (bien que la RAM et le ssd vous puissiez probablement le faire vous-même pour moins cher). Le zephyrus est hors de votre gamme de prix. Il pourrait y avoir un pavillon HP qui correspond à votre gamme de prix et qui est décent. Il y a probablement des systèmes Dell, mais ils n'ont pas fait aussi bien sur les critiques. J'évite les autres modèles asus et d'autres marques comme MSI et gigabyte simplement parce que je ne connais pas la qualité. Je suggère également d'aller l'essayer, de voir la luminosité de l'écran, de voir comment est le clavier, etc.

Hé les gens. Je dois régulièrement exporter une série de 300 cartes PDF de QGIS à 6-10 Mo chacune, donc 2-3 Go de cartes. Ces cartes ont généralement un fond de carte raster, souvent des images aériennes, puis un tas de couches vectorielles au-dessus. Cela prend beaucoup de temps à exporter, donc je me demande quels composants du PC sont les plus importants pour accélérer un processus comme celui-ci. Je suppose que le GPU n'a pas grand-chose à faire, donc est-ce de la mémoire (vitesse, capacité, timings, une combinaison ?), CPU (performances monocœur, performances multicœurs, nombre de threads ?), ou disque vitesses d'écriture. Est-ce un cas où il serait avantageux d'avoir un PCIe gen 4 NVMe (s'il est associé au bon processeur et mobo pour permettre d'utiliser réellement les vitesses gen 4) ? Merci.

Avez-vous essayé d'exécuter les exportations en parallèle (par exemple, 5 PDF à la fois) ? Vous pourrez peut-être obtenir des avantages significatifs si vous êtes lié à un processeur monocœur.

Je viens donc de tester sur ma propre installation QGIS en exportant une carte sur laquelle je travaillais. Quelques informations de configuration :

Les cartes utilisent un arrière-plan d'imagerie d'un service Web

certaines images détaillées proviennent de lecteurs réseau

la plupart des données vectorielles se trouvent sur un postgresql distant externe à mon propre réseau

le reste est sur les lecteurs réseau avec l'imagerie

J'ai une connexion fibre optique montante et descendante de 750 Mbps à mon emplacement

le bureau dispose d'une connexion fibre optique montante et descendante de 250 à 300 mbps. Le ping vers les serveurs postgresql ou de fichiers est compris entre 1 et 2 ms.

J'ai exporté localement vers mon lecteur pcie3 nvme sur mon ordinateur portable, qui arbore également un i7-8565U, un quadro P520 et 16 Go de RAM à 2400 MHz.

Le réseau était à peine utilisé, mais je n'ai pas le temps de mesurer la latence qui, selon moi, serait un point sensible pour la lecture de toutes les données.

Le processeur était utilisé à 25% maximum (2 cœurs, mais ne semblait pas en favoriser deux).

L'utilisation du SSD était assez minime.

L'utilisation du GPU n'était pas détectable (ni utilisation de la scie intégrée ou dédiée, ni montée en puissance à partir de l'inactivité).

Certaines choses que je n'ai pas le temps ou que je ne peux pas tester :

Comme il s'agit d'un ordinateur portable, je ne peux pas facilement OC mon processeur, la vitesse de la RAM ou les timings de la RAM. Je peux les abaisser, mais cela peut invalider le test en raison de différences de profil de refroidissement difficiles à expliquer dans un ordinateur portable.

Je n'ai pas le temps de mesurer la latence lors de la lecture des données, mais j'ai l'impression que même si je suis sur fibre, ces 1-2 ms tuent les performances par rapport au fait d'avoir toutes les données localement.

Je ne peux pas voir combien de cache est utilisé et combien d'échecs de cache se produisent.

D'après mon expérience, je suppose que les priorités à améliorer seraient les suivantes :

Réduisez la latence pour les lectures de données. L'option la plus rapide possible serait de mettre toutes les données et d'affecter à QGIS d'utiliser un répertoire temporaire sur le disque RAM comme emplacement temporaire. Le deuxième meilleur serait intel optane, le troisième meilleur un nvme avec un cache slc décent, et le quatrième pourrait être postgres ou quelque chose localement ou connecté via une connexion à très faible latence. Étant donné que la bande passante ne semble pas avoir beaucoup d'importance, la latence l'est probablement.

Performances monocœur du processeur. Étant donné que le processeur n'est pas à 100 % sur tous les cœurs, les performances à un seul cœur seraient probablement plus utiles que les performances multi-cœurs, car chaque thread devrait se terminer plus rapidement. Si vous utilisez un processeur AMD avec plusieurs CCX', il peut y avoir une pénalité de performances si QGIS n'utilise pas tous les cœurs sur le même CCX. Intel est une conception monolithique et ne souffre donc pas des mêmes problèmes. Si vous avez un seul processeur CCX AMD, tout va probablement bien. Je ne sais pas non plus si AVX/AVX2/AVX512 joue un rôle dans cela, je ne pense pas que je puisse changer le support AVX sur mon ordinateur portable et même si je le peux, je n'ai pas le temps de le faire, et je suis à peu près sûr 512 n'est pas pris en charge de toute façon.

Pour la mémoire, je ne sais pas si la latence ou la bande passante importe plus, je supposerais potentiellement les deux.

Pour l'écriture, cela ne devrait pas avoir autant d'importance car cela n'écrit pas beaucoup, les écritures séquentielles sont probablement le facteur le plus important ici.

TLDR : J'ai fait des tests, pas assez pour comprendre quoi que ce soit de très concluant, mais je suppose que la latence de lecture serait plus faible (augmenter les IOPS), puis améliorer les performances du processeur monocœur et ne pas obtenir un processeur multi-ccx, puis la bande passante et la latence de la mémoire (timings) , puis lecture séquentielle.

EDIT - La capacité de la RAM n'a pas d'importance, j'ai 16 Go et QGIS n'en a même pas utilisé 2.


Comment le résoudre alors ?

Tout ce que vous pouvez et devez importer/exporter sont des coordonnées UV avec votre maillage afin que vous puissiez appliquer correctement vos textures à la "application cible", moteur de jeu ou environnement de rendu de réception, où vous importerez et afficherez votre modèle, que ce soit Unreal, Unity, Gamekit, un logiciel de rendu externe ou autre ou même Blender lui-même lors de l'importation de modèles d'ailleurs. Les cartes UV sont généralement correctement conservées par la plupart des formats de fichiers d'échange par défaut.

Là, vous devriez passer du temps à recréer vos matériaux à partir de zéro avec les textures fournies et les cartes disponibles. Oui, cela nécessite un certain retour en arrière et prendra un certain temps, mais avec de la pratique, cela ira plus vite. Enregistrez les préréglages dans des bibliothèques réutilisables lorsqu'elles sont disponibles, afin de réduire le nombre de répétitions.

Ce que vous pouvez faire dans certaines situations, c'est utiliser Blender pour créer des textures que vous pourrez utiliser plus tard dans la destination finale ou recevoir une demande pour y créer des matériaux, pas dans Blender.

La cuisson est le processus de pré-calcul de l'ombrage et de son stockage dans une texture d'image statique qui peut incorporer plusieurs canaux facultatifs comme un éclairage diffus, brillant, indirect, des bump maps, des normal maps, des light-maps, entre autres. Cela peut améliorer la qualité graphique ou le "réalisme" perçu au détriment du dynamisme, car certaines propriétés des matériaux et des textures peuvent devenir statiques, comme si "peintes sur la surface", comme les ombres ou les reflets. C'est souvent une exigence pour les supports hautes performances ou les plates-formes à faible consommation d'énergie, comme le Web ou les jeux mobiles, où les ressources disponibles sont limitées ou inconnues, et où la vitesse prime sur la fidélité graphique.


11 réponses 11

Les tables InnoDB ne peuvent pas être copiées de la même manière que les tables MyISAM.

La simple copie des fichiers .frm et .ibd d'un emplacement à un autre pose problème. Copier les fichiers .frm et .ibd d'une table InnoDB n'est que bon si et seulement si vous pouvez garantir que l'identifiant de l'espace de table du fichier .ibd correspond exactement à l'entrée de l'identifiant de l'espace de table dans les métadonnées du fichier ibdata1.

J'ai écrit deux articles dans DBA StackExchange sur ce concept d'identifiant de tablespace

Voici un excellent lien sur la façon de rattacher n'importe quel fichier .ibd à ibdata1 en cas d'ID d'espace de table incompatibles : http://www.chriscalender.com/?tag=innodb-error-tablespace-id-in-file. Après avoir lu ceci, vous devriez vous rendre compte immédiatement que la copie de fichiers .ibd est tout simplement folle.

Vous pouvez appliquer les suggestions du lien Chris Calendar, ou vous pouvez revenir à l'ancienne installation de mysql, démarrer mysql, puis mysqldump la base de données ddms. Ensuite, importez ce mysqldump dans votre nouvelle instance mysql. Croyez-moi, ce serait beaucoup plus facile.

J'ai récemment rencontré ce même problème. 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 .

ATTENTION: 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:

MAIS if you purge all of those packages you will purge some other important 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. Terminé.

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


Voir la vidéo: 006 - Méthode de création dune nouvelle couche point ; ligne ; polygone: