Suite

Comment charger un fichier *.qgs dans une application autonome C++ QGIS ?


J'utilise l'API QGIS-2.4.0 pour développer une application autonome en C++.

J'ai enregistré un fichier test.qgs dans le logiciel QGIS Desktop, dans le projet, il y avait une couche et elle était visible.

Ensuite, j'ai chargé le fichier de projet test.qgs dans l'application, mais rien n'est affiché.

Pourquoi donc?

Le code que j'utilise pour ouvrir le projet est :

Application QgsApplication (argc, argv, true); QString myQgisDir = "C:Program Files(x86)qgis2.4.0"; app.setPrefixPath(myQgisDir, true); app.initQgis(); //L'ensemble de mapcavas QgsMapCanvass *myMapCanvas = new QgsMapCanvas(); myMapCanvas->enableAntiAliasing(true); myMapCanvas->setCanvasColor(Qt::white); myMapCanvas->setVisiable(true); //Ouvrez le projet *.qgs et lisez QString myProjectPath = "E:QGISPro	est.qgs"; Qgsproject::instance()->setFileName(myProjectPath); bool isRead = QgsProject::instance()->read(); //En mode Debug, isRead est égal à TRUE.

Quelqu'un peut-il m'aider?


Le problème est résolu par Matthias Kuhn, voir ici.

QgsLayerTreeMapCanvasBridge devrait vous aider dans l'en-tête : QgsLayerTreeMapCanvasBridge* mLayerTreeCanvasBridge; source : mLayerTreeCanvasBridge = new QgsLayerTreeMapCanvasBridge( QgsProject::instance()->layerTreeRoot(), mMapCanvas, this ); QgsProject::instance()->read( path_to_your_project_file );

Tirer la logique du plugin QGIS dans une application autonome

Je suis nouveau sur QT, Python et QGIS. J'ai installé le plugin "Plugin Builder" et généré un Dockwidget. Je suis capable de modifier le widget à l'aide de qtcreator et j'apprends à implémenter les signaux et les slots pour fonctionner avec mon propre plugin.

Maintenant, à ma question. Existe-t-il un moyen simple de supprimer l'iface de QGIS et d'utiliser la logique de mon plugin en dehors de QGIS ? Je n'utilise actuellement aucune des bibliothèques PyQGIS, mais je souhaite conserver mon interface QT et mon code/structure Python générés par le "Plugin Builder". Y-a-t-il un moyen de faire ça?


Comment charger un fichier *.qgs dans une application autonome C++ QGIS ? - Systèmes d'information géographique

Une application d'ingénierie moderne avec des arômes de topographie et de SIG

Surveying Calculator a des outils d'arpentage couramment utilisés. Cela inclut les calculs de géométrie de coordonnées, la collecte de données ponctuelles hors ligne, l'affichage de données CAO, SIG, raster et de cartes en ligne au format de projet QGIS 3. Surveying Calculator prend en charge les projets QGIS 3. (qgs, qgz) Il est disponible sur Play Store : https://play.google.com/store/apps/details?id=org.project.geoclass Caractéristiques :

  • Outils d'arpentage de base : calcul X(N), Y(E), distance, calcul d'azimut, angle intérieur, latitude longitude à partir du point, distance et relèvement
  • Méthodes d'intersection : intersection avant, intersection ligne - ligne, cercle par 3 points
  • Distance entre les coordonnées : distance 2D, 3D de X, Y et distance de Latitude, Longitude
  • Calcul de surface à partir de coordonnées
  • Degré - Conversion décimale
  • Transformation de coordonnées : WGS84 Latitude/Longitude vers UTM XY ou UTM XY vers Latitude/Longitude Conventer, outil de conversion de coordonnées, transformation Helmert 2D
  • Collecteur de données ponctuelles - Levé : → Créez des projets aux formats GeoPackage avec le code du système de coordonnées (code EPSG). → Vous pouvez également préparer un travail dans QGIS sur ordinateur avec des données CAD-GIS. Importez des données CAO, SIG, raster ou ajoutez des services cartographiques en ligne dans QGIS. Et transférez le dossier de données dans le dossier Surveying_Calculator/projects sur votre appareil. Sélectionnez le projet à afficher dans le module Survey. → Collectez des points illimités avec "nom" et "description". Vous pouvez enregistrer votre position ou n'importe quel endroit que vous voulez. → Cette application prend en charge les formats à afficher : → Raster (GeoTIFF, DEM, JPEG, PNG, GRD, XYZ, ..), → CAO (DXF, DGN v7), → SIG (ArcGIS shp, Google Earth (kml, kmz) , GeoJSON, GPX..), → Services cartographiques en ligne. Les cartes en ligne peuvent être préparées à l'aide du plugin QuickMapServices dans QGIS. Vous pouvez ajouter des cartes Open Street Maps, hybrides ou satellites dans le projet QGIS pour Surveying Calculator.
  • Générer des coordonnées : générer des coordonnées en latitude/longitude ou en X, Y.
  • Paramètres : Ordre des coordonnées nord, est ou latitude, longitude. DMS ou options décimales pour les systèmes de coordonnées géographiques. Paramètres d'unité de la barre d'échelle en métrique ou impérial.
  • et plus. La calculatrice d'arpentage prend en charge Android 6.0 et versions ultérieures. Un minimum de 2 Go de RAM avec 300 Mo d'espace libre est recommandé. Si vous avez besoin d'aide ou si vous avez des suggestions à propos de cette application, veuillez envoyer un e-mail à [email protected] ou rejoindre le groupe Facebook Surveying Calculator pour poser des questions. Vous pouvez suivre l'actualité de l'application sur la page Facebook : fb.me/surveyingcalculator Vous pouvez ouvrir des problèmes pour toute suggestion ou rapport de bogue.

Le calculateur d'arpentage utilise des bibliothèques SIG open source (QGIS, GDAL, Proj, SpatialIndex, GEOS). Cette application utilise les codes sources de l'application Input (https://github.com/lutraconsulting/input).

Bibliothèques QGIS de input-sdk/android-13 (armv7 et armv8), ainsi que les bibliothèques et fichiers QgsQuick


En général, il est plus facile d'analyser ces fichiers de configuration typiques en deux étapes : d'abord lire les lignes, puis les analyser une par une.
En C++, les lignes peuvent être lues à partir d'un flux en utilisant std::getline() . Alors que par défaut, il lira jusqu'au ' ' suivant (qu'il consommera, mais ne retournera pas), vous pouvez également lui passer un autre délimiteur, ce qui en fait un bon candidat pour lire jusqu'à certains caractères , comme = dans votre exemple.

Pour simplifier, ce qui suit suppose que les = sont ne pas entouré d'espaces blancs. Si vous souhaitez autoriser les espaces à ces positions, vous devrez placer stratégiquement is >> std::ws avant de lire la valeur et supprimer les espaces de fin des clés. Cependant, IMO, le peu de flexibilité ajoutée dans la syntaxe ne vaut pas la peine d'être compliqué pour un lecteur de fichier de configuration.

(L'ajout de la gestion des erreurs est laissé en exercice au lecteur.)

Comme d'autres l'ont souligné, il sera probablement moins difficile d'utiliser une bibliothèque d'analyseur de fichiers de configuration existante plutôt que de réinventer la roue.

Par exemple, si vous décidez d'utiliser la bibliothèque Config4Cpp (que je maintiens), la syntaxe de votre fichier de configuration sera légèrement différente (mettez des guillemets autour des valeurs et terminez les instructions d'affectation par un point-virgule) comme indiqué dans l'exemple ci-dessous :

Le programme suivant analyse le fichier de configuration ci-dessus, copie les valeurs souhaitées dans des variables et les imprime :

Vous pouvez ensuite le lire dans des variables nommées, ou même tout stocker dans un std::map, etc. Ce dernier moyen vous permet d'ajouter des options sans avoir à modifier et recompiler votre analyseur de configuration.


Mdhntd

Qu'est-ce qui pourrait rendre les grandes expéditions inefficaces pour explorer un territoire plein de dangers et de ressources précieuses ?

Existe-t-il des aliments que les astronautes ne sont explicitement jamais autorisés à manger ?

Question d'entretien délicate pour un développeur C++ de niveau intermédiaire

Analyseur pour fichiers de données de stéréolithographie STL

Pourquoi n'y a-t-il pas de femmes super grands maîtres (GM) ?

Dois-je avoir une main sur l'accélérateur lors de l'allumage du moteur ?

Obtenir le nom de l'accord à partir d'un ensemble de notes donné

Une créature peut-elle se maintenir en mangeant ses propres parties du corps coupées ?

"C'était mon numéro de téléphone"

Lorsque nous parlons d'évaporation des trous noirs, que se passe-t-il exactement ?

Pourquoi fork() aurait-il été conçu pour renvoyer un descripteur de fichier ?

Aligner le contenu d'une matrice numérique lorsque vous avez des signes moins

Quelle est la plus grande planète semblable à la Terre et peut-elle soutenir la biosphère de la Terre ?

Dans quelle mesure la cryptographie asymétrique sécurise-t-elle les transactions bitcoin ?

Existe-t-il une fréquence standard pour les contrôles de monstres errants dans un donjon ?

Créer un ensemble de données qui émule `ls -tlra` ?

Linux ext4 restaurer les droits d'accès au fichier et au répertoire après une mauvaise sauvegarde/restauration

Les Indiens ont-ils besoin d'un visa Hong Kong séparé si nous avons déjà un visa chinois

Le chat de Schrödinger à l'intérieur de la boîte ne provoque-t-il pas l'effondrement de la fonction d'onde de probabilité bien avant qu'un humain n'ouvre la boîte ?

Pourquoi une molécule tétraédrique comme le méthane a-t-elle un moment dipolaire nul ?

Comment dois-je interpréter une prépublication prometteuse qui n'a jamais été publiée dans une revue à comité de lecture ?

Pourquoi le processeur Intel 8086 est-il appelé processeur 16 bits ?

Qu'est-ce qu'une transformée de Kravchuk et comment est-elle liée aux transformées de Fourier ?

OS X PYTHONPATH pour les applications autonomes QGIS ?

Définition de PythonPathOù se trouvent exactement qgis.gui et qgis.core ?Utiliser les modules QGIS dans une application autonome avec PySide ?Importer les modules QGIS Python dans la ligne de commande Python ou le script autonomeImportError : aucun module nommé siteImpossible d'imprimer ou d'écrire quoi que ce soit dans un fichier en python après l'importation traitementInstallation du plug-in Location Lab dans QGIS sur Mac OSX ? QGis Server 3.4 et le module SIPOsgeo manquant dans QGIS 3.4 Madeira (macOS High Sierra)Accéder à l'API QGIS à partir de l'environnement python Anaconda à l'aide de Conda-ForgeImportation des outils de traitement QGIS3 dans un script autonome

Quel est le PYTHONPATH correct pour OS X et QGIS 3.4 ? Je souhaite créer une application autonome QGIS mais j'obtiens l'erreur "ModuleNotFoundError: No module named 'qgis'". Cela se produit après avoir suivi les instructions OS X à la fin de Setting PythonPath.

OS X 10.11.6
QGIS 3.4.4
Python 3.6.8

Quel est le PYTHONPATH correct pour OS X et QGIS 3.4 ? Je souhaite créer une application autonome QGIS mais j'obtiens l'erreur "ModuleNotFoundError: No module named 'qgis'". Cela se produit après avoir suivi les instructions OS X à la fin de Setting PythonPath.

OS X 10.11.6
QGIS 3.4.4
Python 3.6.8

Quel est le PYTHONPATH correct pour OS X et QGIS 3.4 ? Je souhaite créer une application autonome QGIS mais j'obtiens l'erreur "ModuleNotFoundError: No module named 'qgis'". Cela se produit après avoir suivi les instructions OS X à la fin de Setting PythonPath.

OS X 10.11.6
QGIS 3.4.4
Python 3.6.8

Quel est le PYTHONPATH correct pour OS X et QGIS 3.4 ? Je souhaite créer une application autonome QGIS mais j'obtiens l'erreur "ModuleNotFoundError: No module named 'qgis'". Cela se produit après avoir suivi les instructions OS X à la fin de Setting PythonPath.


Étapes à suivre

Pour installer un package avec easy_install, utilisez simplement :

Je voulais faire installer la bouteille et le flacon :

ce qui vous donne quelque chose comme :

Recherche de bouteille
Lecture http://pypi.python.org/simple/bottle/
Lecture http://bottle.paws.de/
Lecture http://github.com/defnull/bottle
Lecture http://bottlepy.org/
Meilleure correspondance : bouteille 0,11.4
Téléchargement http://pypi.python.org/packages/source/b/bottle/bottle-0.11.4.tar.gz#md5=f767c340de0b7c9581917c48e609479b
Bouteille de traitement-0.11.4.tar.gz
Exécution de bottle-0.11.4setup.py -q bdist_egg –dist-dir c:userswooappdatalocal empeasy_install-5b4qq6ottle-0.11.4egg-dist-tmp-q2yd68
indicateur zip_safe non défini analyse du contenu de l'archive…
bouteille : références de module __fichier__
bouteille : références de module __path__
Ajout de la bouteille 0.11.4 au fichier easy-install.pth
Installation du script bottle.py dans C:OSGeo4WappsPython27Scripts
Installé c:osgeo4wappspython27libsite-packagesottle-0.11.4-py2.7.egg
Traitement des dépendances pour la bouteille
Dépendances de traitement finies pour la bouteille


Afin de compiler QGIS, certaines dépendances fournies par l'installateur OSGeo4W sont nécessaires. Double-cliquez sur osgeo4w-setup-x86_64.exe et sélectionnez le Installation avancée mode. Ensuite, sélectionnez les packages suivants :

  • expatrié
  • fcgi
  • gdal
  • gazon
  • gsl-devel
  • iconv
  • libzip-devel
  • libspatialindex-devel
  • pyqt5
  • python3-devel
  • python3-qscintilla
  • python3-nez2
  • python3-futur
  • python3-pyyaml
  • python3-mock
  • python3-six
  • qca-qt5-devel
  • qca-qt5-libs
  • qscintilla-qt5
  • qt5-devel
  • qt5-libs-debug
  • qtwebkit-qt5-devel
  • qtwebkit-qt5-libs-debug
  • qwt-devel-qt5
  • sip-qt5
  • spatialité
  • oci
  • qtporte-clés

Pour commencer cette dernière étape, nous devons créer un fichier C:OSGeo4WOSGeo4W-dev.bat contenant quelque chose comme :

[pastacode lang=”bash” manual=”%40echo%20off%20%0Aset%20OSGEO4W_ROOT%3DC%3A%5COSGeo4W64%0Acall%20%22%25OSGEO4W_ROOT%25%5Cbin%5Co4w_env.bat%22%20 %0Acall%20%22%25OSGEO4W_ROOT%25%5Cbin%5Cqt5_env.bat%22%20%0Acall%20%22%25OSGEO4W_ROOT%25%5Cbin%5Cpy3_env.bat%22%20%0Aset%20VS140COMNTOOLS%3D%25PROG )%25%5CMicrosoft%20Visual%20Studio%2014.0%5CCommon7%5CTools%5C%20%0Acall%20%22%25PROGRAMFILES(x86)%25%5CMicrosoft%20Visual%20Studio%2014.0%5CVC%5Cvcvarsall.bat%22%20amd %20%0Aset%20INCLUDE%3D%25INCLUDE%25%3B%25PROGRAMFILES(x86)%25%5CMicrosoft%20SDK%5CWindows%5Cv7.1A%5Cinclude%20%0Aset%20LIB%3D%25LIB%25%3B%25PROGRAMFILES( x86)%25%5CMicrosoft%20SDK%5CWindows%5Cv7.1A%5Clib%20%0Apath%20%25PATH%25%3B%25PROGRAMFILES%25%5CCMake%5Cbin%3Bc%3A%5Ccygwin%5Cbin%20%0A%40set %20GRASS_PREFIX%3D%22%25OSGEO4W_ROOT%25%5Capps%5Cgrass%5Cgrass-7.2.1%20%0A%40set%20INCLUDE%3D%25INCLUDE%25%3B%25OSGEO4W_ROOT%25%5Cinclude%20%LIB%40set %3D%25LIB%25%3B%25OSGEO4W_ROOT%25%5Clib%3B%25OSGEO4W_ROOT%25% 5Clib%20%0A%0A%40cmd%20″ message=”” Highlight=”” provider=”manual”/]

Selon votre environnement, certaines variables devront probablement être adaptées. Puis dans le terminal Cygwin :

[pastacode lang=”bash” manual=”%24%20cd%20C%3A%5C%0A%24%20git%20clone%20git%3A%2F%2Fgithub.com%2Fqgis%2FQGIS.git%0A %24%20.%2FOSGeo4W-dev.bat%0A%3E%20cd%20QGIS%2Fms-windows%2Fosgeo4w” message=”” Highlight=”” provider=”manual”/]

Dans ce répertoire, vous devez éditer le fichier paquet-nuit.cmd remplacer:

[pastacode lang=”bash” manual=”cmake%20-G%20%22Visual%20Studio%2014%202015%20Win64%22%20%5E” message=”” Highlight=”& #8221 provider=”manuel”/]

De plus, nous avons dû mettre à jour la variable d'environnement SETUAPI_LIBRARY selon la position actuelle du fichier Windows Kits SetupAPI.Lib :

[pastacode lang=”bash” manual=”set%20SETUPAPI_LIBRARY%3DC%3A%5CProgram%20Files%20(x86)%5CWindows%20Kits%5C8.1%5CLib%5Cwinv6.3%5Cum%5Cx64%5CSetupAPI. Lib” message=”” Highlight=”” provider=”manual”/]

Et enfin, il ne nous reste plus qu'à compiler avec la commande suivante :

[pastacode lang=”markup” manual=”%3E%20package-nightly.cmd%202.99.0%201%20qgis-dev%20x86_64″ message=”” Highlight=”” fournisseur=”manuel”/]

Et à bientôt pour la génération des packages OSGEO4W />


Interface QGIS¶

La boîte à outils de traitement¶

Les applications OTB sont disponibles auprès de QGIS. Utilisez-les depuis la boîte à outils de traitement, qui est accessible avec Processing Boîte à outils. Basculez vers « interface avancée » en bas du widget d'application et les applications OTB seront là.

Utiliser un OTB personnalisé¶

Si QGIS ne trouve pas OTB, le "dossier des applications" et le "dossier binaire" peuvent être définis à partir des paramètres dans Traitement />Paramètres />"fournisseur de services".

Sur certaines versions de QGIS, si une installation OTB existante est trouvée, les paramètres du champ de texte ne seront pas affichés. Pour utiliser un OTB personnalisé au lieu de celui existant, vous devrez remplacer directement les fichiers otbcli, otbgui et bibliothèque dans l'installation de QGIS.


Packages binaires de composants -- "M"

Bibliothèque Intel® MPI

Utilisez cette implémentation MPI basée sur des normes pour fournir une messagerie de cluster flexible, efficace et évolutive sur l'architecture Intel®. Ce composant fait partie de la boîte à outils Intel® oneAPI HPC. Inscrivez-vous pour les mises à jour

Nom (Cliquez pour lancer le téléchargement) Version Taille Installateur Date
Bibliothèque Intel ® MPI pour Linux* 2021.2.0 16 Mo En ligne 25 mars 2021
Bibliothèque Intel MPI pour Linux 2021.2.0 156 Mo Local 25 mars 2021
Bibliothèque Intel MPI pour Windows* 2021.2.0 15 Mo En ligne 25 mars 2021
Bibliothèque Intel MPI pour Windows 2021.2.0 74 Mo Local 25 mars 2021


Le problème avec l'écriture de blobs binaires est qu'ils conduisent à un stockage fragile.

Les objets stockés ont tendance à se casser avec le temps car les hypothèses que vous faites sur le matériel ne sont plus vraies (dans ce cas, la taille de (int) est constante et l'endianess de int ne changera pas).

Il est donc devenu plus courant d'utiliser une méthode connue sous le nom de sérialisation. Dans ce cas, vous convertissez l'objet dans un format indépendant du matériel (et généralement lisible par l'homme).

Remarque : les blobs binaires présentent des avantages. Mais vous devez peser ceux-ci contre la fragilité. Par conséquent, votre premier choix devrait être la sérialisation (sauf si vous avez des exigences spécifiques qui l'empêchent). Ensuite, regardez les Blobs binaires seulement après avoir montré que la sérialisation a trop de surcharge (peu probable dans la plupart des situations, mais c'est une possibilité).

En C++, vous le feriez en utilisant l'opérateur<< et l'opérateur>> .


Voir la vidéo: QGIS - Quantum GIS: Software Application Lab (Octobre 2021).