## QuickOSM

QuickOSM permet d'obtenir rapidement des données OSM grâce à l'Overpass API.

- Générer des requêtes en fournissant une clé/valeur
- Choisir d'exécuter sur un espace ou une emprise
- Configurer la requête : quelles couches en sortie, quels colonnes ...
- Enregistrer vos requêtes dans des catégories et les exécuter plus tard
- Ouvrir un fichier OSM local (.osm ou .pbf) avec un fichier osmconf spécifique dans QGIS
- Construire des modèles de traitement avec QGIS Processing

Il y a quelques astuces utiles, comme les couleurs automatiques sur les lignes (si le tag est présent) ou encore quelques actions (clic-droit dans la table attributaire) pour chaque entité (éditer dans JOSM par exemple).

### Menu

- Généralités
- Overpass Turbo
- Mes requêtes
- Requête rapide
- Requête
- Fichier OSM
- Traitements

### Généralités

Le plugin va garder toutes les clés disponibles dans les données OSM. Vous pouvez filtrer les colonnes à garder en écrivant colonne1,colonne2,colonne3 avec des virgules.
Si il n'y a pas de fichier de style, QuickOSM va vérifier la présence du champ "colour" dans une couche multilinestrings. C'est utile pour les relations route=tram/bus.

Quelques actions sont activés par défaut. Vous pouvez ouvrir sur openstreetmap.org ou sur JOSM chaque entité. Quelques actions supplémentaires sont ajoutées si les champs sont présents :

- url, website
- wikipedia
- ref:UAI pour les écoles Françaises
- network et ref vont ouvrir la "sketchline" d'Overpass

### Overpass Turbo

Overpass Turbo est une autre interface pour interroger OverpassAPI.
Attention avec quelques requêtes provenant d'Overpass Turbo :

- quelques raccourcis ne sont pas disponibles aujourd'hui dans ce plugin. Nous supportons seulement {{nominatimArea:}} et {{bbox}}.
- l'ordre dans le fichier résultat doit être comme-ci : node et way puis relation. Avec l'assistant par défaut d'Overpass Turbo, vous pouvez obtenir l'ordre inverse. Le parseur OGR ne peut pas lire l'ordre inverse. Vous devez modifier les "print" à la fin de la requête.

Par exemple, cette requête est correcte :

    					<osm-script output="xml" timeout="25">
    					     <id-query {{nominatimArea:montpellier}} into="area"/>
    					     <union>
    					          <query type="node">
    					               <has-kv k="route" v="tram"/>
    					               <area-query from="area"/>
    					          </query>
    					          <query type="way">
    					               <has-kv k="route" v="tram"/>
    					               <area-query from="area"/>
    					          </query>
    					          <query type="relation">
    					               <has-kv k="route" v="tram"/>
    					               <area-query from="area"/>
    					          </query>
    					     </union>
    					     <union>
    					          <item />
    					          <recurse type="down"/>
    					     </union>
    					     <print mode="body" />
    					</osm-script>

### Mes requêtes

"Mes requêtes" montre des requêtes qui sont pré-enregistrées.
Une requête est composée de deux fichiers dans le dossier utilisateur (~/.qgis2/QuickOSM sur Linux) :

- .ini avec toutes les métadonnées
- .xml ou .oql avec la requête en XML ou OQL

Pour ajouter vos propres requêtes, vous devez passer par le panneau "Requête".
Si vous souhaitez supprimer une requête, vous devez faire un clic-droit.
Un fichier ini est composé de plusieurs blocs :

- metadata
  - name : obligatoire
  - category : obligatoire
- points|lines|multilinestrings|multipolygons : chaque bloc à propos des couches est obligatoire.
  - load : obligatoire, booléen True ou False. Si on doit charger la couche.
  - nameLayer : optionnel, nom de la couche en sortie
  - columns : optionnel, liste des colonnes séparés par des virgules. Si vide, on garde toutes les colonnes.
  - style : optionnel, nom du fichier QML a appliquer

### Requête rapide

Ce panneau permet de requêter une clé=valeur. Vous pouvez choisir entre une emprise ou une ville. La ville est cherchée par Nominatim, pour éviter des résultats étranges, vous pouvez fournir le numéro de la relation OSM.
Si vous cochez "Nominatim" mais que vous laissez le champ vide, cela générera uniquement une requête attributaire.
Vous pouvez laisser le champ "valeur" vide.
Vous pouvez choisir sur quels objets OSM exécuter la requête :

- Node
- Way
- Relation

Vous pouvez choisir quelles géométries vous voulez en sortie :

- Points
- Lines
- Multilinestrings
- Multipolygons

Si vous voulez spécifier quelles colonnes, vous devez cliquer sur "Montrer la requête".

### Requête

Ce panneau vous permet d'écrire votre propre requête manuellement (en XML ou OQL).
Pour chaque couche d'OGR, vous vouvez spécifier les sorties et les colonnes que vous souhaitez.
À partir de ce panneau, vous pouvez enregistrer vos requêtes. Les paramètres concernant les sorties seront enregistrés.

- Comme un template : cela enregistra la requête telle quelle est écrite au-dessus. La requête ne sera pas changée. Si vous voulez modifier la ville, changez la dans le XML.
- Comme une requête finale : la requête sera générée avant enregistrement. C'est utile pour ne remplacer les {{bbox}} avec une emprise.

Pour plus d'informations à propos du XML ou de l'OQL.

### Fichier OSM

OGR peut ouvrir un fichier OSM avec l'aide d'un fichier spécifique de configuragtion appelé osmconf. Ce fichier est utilisé pour décrire chaque clé que vous souhaitez en tant que colonne et ce pour chaque couche.
Vous pouvez copier/coller le fichier osmconf.ini par défaut pour le modifier.
Pour plus d'informations à propos d'OSM avec OGR, lisez la documentation.

### Traitements

QuickOSM apporte un lot de nouveaux algorithmes. Vous devriez aller faire un tour. Quelques modèles sont disponibles dans le dossier "models" du plugin.
Dans processing, il est obligatoire de parser chaque couche (points, lines, multilinestrings et multipolygons). Pour améliorer les performances sur les couches que vous ne voulez pas, vous pouvez mettre une virgule seule dans le champs à propos des colonnes. Cette virgule va faire éviter une boucle dans le parseur.
Pour chaque algorithme, de l'aide est fourni.
Laissez aller votre imagination avec Processing !