Tutoriel avancé QGIS et Python
- Détails
- 73455
Mots-clefs : interopérabilité Python/QGIS, variable, boucle, fonction, condition, liste, argument, chaîne formatée, fonctions géométriques, création de fichiers, génération de cartes, fonctions cartographiques, fonctions standalone, traitement de données cartographiques, workflow, milieu alpin
Enseignant responsable : Georges Hinot
Pré-requis : une bonne connaissance d'un logiciel SIG supportant Python (QGIS ou ArcGIS par exemple) et des problématiques/besoins/enjeux de la géomatique.
Compétences visées : mettre en place un protocole de développement autour d'une problématique géomatique, de la « re-contextualisation du besoin » jusqu'à l'écriture d'un script Python répondant à ce besoin.
Enjeux du cours : rendre les étudiants autonomes dans la création et l'entretien de scripts « automatisants ». Dans ce type de tâche, l’autonomie consiste à savoir interpréter un besoin humain, ré-interpréter ses propres problématiques de programmation et à écrire/chercher/modifier les blocs de code nécessaires.
Programme pédagogique : initiation aux fondamentaux du langage puis mise en situation (générer des cartes à partir de données géographiques). En plus de la simple automatisation des cartographies, le cours nous donnera l'occasion, toujours en Python, d'utiliser des API, de traiter des données et de mettre en place des modes d'affichages customisés sur QGIS. Selon l'avancée du cours, nous pourrons aussi aborder le mode « standalone » permis par le duo QGIS-Python, la création de plugins QGIS et les possibilités de webmapping/analyse/ingénierie de données permises par Python.
Sources et liens divers :
- Astuces sur PyQGIS, sur ce même site : https://hg-map.fr/pyqgis?showall=1
- Astuces sur PyQGIS en mode standalone, sur ce même site : https://hg-map.fr/standalone-pyqgis?showall=1
- Tutoriel d'initiation à Python dans QGIS3 (débutant) : http://www.qgistutorials.com/fr/docs/3/getting_started_with_pyqgis.html
- Blog spécialisé d'Underdark, aka Anita Graser : https://anitagraser.com/
- Documentation QGIS : https://docs.qgis.org/3.10/en/docs/
- Documentation Python : https://docs.python.org/fr/3/
- Documentation ArcGIS/Python : https://desktop.arcgis.com/search/?q=python&language=fr
- Processing providers and algorithms : https://docs.qgis.org/3.10/en/docs/user_manual/processing_algs/
- OSMDownloader : https://github.com/lcoandrade/OSMDownloader
- QuickOSM : https://github.com/3liz/QuickOSM
- Wikidata : https://www.wikidata.org/
- Landscape Archaeology : https://landscapearchaeology.org/
- AppDividend : https://appdividend.com/
- OpenSourceOptions: https://opensourceoptions.com/
- webgeodatavore : https://webgeodatavore.com/
- QGIS StackExchange : https://gis.stackexchange.com
Tutoriel écrit sur QGIS 3.14 'Py' et Python 3.8, mais j'ai pu constater qu'il fonctionne de façon assez similaire sur des versions précédentes, ainsi que sur QGIS 3.16.
Sur des versions plus récentes comme QGIS 3.2 il semble que certaines API n'aient pas encore été portées (wikipedia et wikidata), mais cela ne posera pas de problème pour 99% du tutoriel.
Quelques regex sur Notepad
- Détails
- 55063
Les expressions régulières (regex) sur Notepad++ sont très pratiques pour standardiser un fichier de données avant import par exemple, récupérer des données, corriger des chaînes particulières, avec des conditions, etc...
Ici quelques astuces propres à mon usage personnel.
Sécurité Joomla
- Détails
- 8765
Les permissions
Les permissions des fichiers et dossiers (CHMOD, abréviation de Change Mode) recommandées sur Joomla (ou d'autres applications PHP) dépendent en partie des hébergeurs.
Un même droit est parfois interprêté différemment selon l'hébergeur (déjà vu), une même application requiert parfois différents droits selon l'hébergeur. Certains serveurs vont automatiquement bloquer certains droits sur certains contenus.
Mais quand un site commence à être mature, il subit de moins en moins de modifications structurelles. On peut alors fermer certaines portes - comme on fermerait l'accès au compteur électrique - et mettre en place une politique des moindres privilèges.
La mise en place d'une politique des moindres privilèges doit être suivie de tests et d'une communication fine avec son hébergeur. Il n'y a rien d'exhautif et rien de parfait, n'hésitez pas à modifier progressivement les permissions vers le bas selon vos propres observations. Il s'agit de fermer au maximum, puis de ne ré-ouvrir que le strict nécessaire.
Récupération de données sur le web avec PHP
- Détails
- 61897
Retour d'expérience sur la création d'un gentil petit robot récupérateur de données.
Bien entendu il n'y a pas de mauvaises intentions de notre part, nous ne récupérerons que des données publiques, disponibles librement sur des sites internet divers. Il ne s'agit pas de piratage ni d'aucune forme d'intrusion. Soit une forme de web scraping. La récupération automatique de données peut d'ailleurs être utile pour de nombreuses tâches très honorables (statistiques, santé, social...) ou marketing.
Nous travaillerons, dans cet exemple simple, sur un site contenant des données de contacts (email, téléphone, métier...). Certains sites considèrent ce type d'annuaire comme vendeur et mettent en avant la disponibilité de données de contact.
Nous tairons son nom de domaine, mais prenons l'exemple d'une fiche de contact à l'URL bien lisible :
http://site-indiscret.com/contacts/45988
La forme de l'URL est très standard et se termine par une chaîne numérique. Sans doute un identifiant unique ! C'est le terrain d'action idéal pour un jeune robot récupérateur de données.
Ce site au webmaster un peu pressé sera donc un bon cobaye pour notre 1er bot. Et en modifiant le script final, vous pourrez sans doute l'adapter à vos propres besoins.
Les grandes étapes d'enfantement seront les suivantes :
Web scraping with Python and BeautifulSoup
- Détails
- 3358
Let's go web scraping with Python and BeautifulSoup! Here BeautifulSoup will be able to extract formatted data from HTML and its CCS code. For confidentiality reasons, we will not name the parsed website, but a lot are built like that: pages containing record from a database use their ID in the URL. So you will to adapt the codes below to your own website and purposes.
We will use a complex website as example, where the IDs to guess are listed in a large pagination.
First, we will get the links to articles (with IDs in URLs) from all pages of the pagination, then we will store data in a CSV file, if interesting (we search emails). So we will do a loop in a loop, with a condition, but if the website you want to parse is simpler (without pagination), you will not need the first loop.
Libraries and receptacle
We start by importing some necessary libraries and creating the receptacle file for our data.
from bs4 import BeautifulSoup import requests import re import csv # CSV file to receive data out_file = open('C:/python_projects/webscraping/email.csv', 'w', encoding='cp1252') out_file.write("email" + "\n")
Acymailing, mass sending et bonnes pratiques
- Détails
- 67644
Acymailing est une extension Joomla permettant de mettre en place des outils newsletter du plus simple au plus puissant (filtres, vitesses d'envoi, tracking, stats, relai SMTP...). Ce système open-source existe en version gratuite (déjà très performante) ou payante (très abordable). L'extension peut bien sûr être overridée.
Cependant son développement régulier rend l'utilisation des overrides plus lourd que la modification directe du code source. En effet dans certains contextes (multi-utilisateurs, multi-bases, flotte d'outils...), les overrides risquent d'être complexes à maintenir dans le temps.
C'est en tout cas mon impression en utilisation intensive d'Acy. Certaines MAJ peuvent toucher les fichiers originaux et ne pas être prises en compte dans vos overrides... Mieux vaut donc connaître un minimum le code de l'extension et avoir quelques repères.
Ici quelques notes personnelles me permettant de maintenir facilement mes outils. Rappellons l'ancien forum encore en ligne d'où proviennent certaines de ces astuces (le support a évolué vers un système plus personnalisé).
Cet article est principalement destiné aux joomlistes avancés souhaitant personnaliser ou optimiser leurs applications newsletter.
Le paragraphe Quelques liens s'adresse généralement à tous webworkers digitaux (marketeurs, intégrateurs, graphistes...).
Le paragraphe Relai SMTP évoque le relai Elastic Email en contexte de mass sending.
Et non, je ne travaille pas pour eux.
Page 2 sur 6