Récupération des magasins
QuickOSM et overpass
Commençons par récupérer tous les magasins de sport en France avec l'excellent plugin QuickOSM (key=shop ; value=sport ; in=France).
En réalité le plugin a quelques limitations, nous nous en servirons donc pour générer la requête, puis irons l'exécuter sur l'overpass-turbo (augmentez tout de même le timout).
<osm-script output="xml" timeout="2500"> <id-query {{geocodeArea:France}} into="area_0"/> <union> <query type="node"> <has-kv k="shop" v="sports"/> <area-query from="area_0"/> </query> <query type="way"> <has-kv k="shop" v="sports"/> <area-query from="area_0"/> </query> <query type="relation"> <has-kv k="shop" v="sports"/> <area-query from="area_0"/> </query> </union> <union> <item/> <recurse type="down"/> </union> <print mode="body"/> </osm-script>
Importez le GEOSJON résultant dans QGIS. Nous nous retrouvons avec 706 polygones et 2378 points (27 décembre 2020). Si vous avez des difficultés d'export ou de connexion internet, le fichier GEOJSON exporté est un pièce jointe de cet article.
Explorez les données sous QGIS et son Field Calculator, le champ brand notamment.
Un shape propre
Pour plus de simplicité et d'efficacité dans les futurs traitements, exportez dans un seul shape les points et les centroïdes de polygones correspondants à brand=Decathlon en France Métropolitaine.
- Sur chaque couche, en mode édition, sélection manuelle de la France métropolitaine, inversion de la sélection, suppression de la sélection.
- Sur la couche polygonale, extraction des centroïdes (Vector/Geometry Tools/Centroids). Suppression de la couche polygonale.
- Sur chaque couche de points restantes, requêtes d'affichage (Properties/Source/Query Builder) des magasins Décathlon (attention aux valeurs distinctes) :
"brand" = 'Decathlon' OR "brand" = 'Decathlon Easy' OR "brand" = 'Décathlon' ...
- Fusion des 2 couches de points (Vector/Data Management Tools/Merge Vector Layers).
Un shape propre... en SQL spatial
Attention aux noms de couches s'il y a plusieurs types d'entités (points, polygones), car QGIS virtualisera des couches et les renommera.
SELECT REPLACE(REPLACE(REPLACE(id, 'node/', ''), 'way/', ''), 'relation/', '') AS id, type_origine, brand, ST_TRANSFORM(geometry, 2154) AS geometry FROM ( SELECT id, 'Point' AS type_origine, brand, geometry FROM export_60f6133c_444d_4dfa_830f_54bb60e39d70 UNION SELECT id, 'Polygone', brand, ST_CENTROID(geometry) FROM export ) WHERE (brand LIKE '%Decathlon%' OR brand LIKE '%Décathlon%') AND ST_WITHIN(ST_TRANSFORM(geometry, 2154), BUILDMBR(-272166, 6041954, 1668968, 7129915, 2154)) ; -- AND ST_WITHIN(geometry, ST_MAKEENVELOPE(xmin, ymin, xmax, ymax, SRID)) ;