Overpass

Déployer instance OverPass API avec Docker

Ce compose permet de déployer une instance locale de l’API Overpass, utilisée pour interroger les données d’OpenStreetMap. Cette configuration est optimisée pour un usage sur les données de la France, à partir d’un extrait officiel.

Elle repose sur l’image Docker wiktorn/overpass-api  : https://github.com/wiktorn/Overpass-API

services:
  overpass:
    image: wiktorn/overpass-api
    container_name: overpass_france
    restart: unless-stopped
    environment:
      OVERPASS_MODE: init
      OVERPASS_META: yes
      OVERPASS_PLANET_URL: https://download.openstreetmap.fr/extracts/europe/france-latest.osm.pbf
      OVERPASS_PLANET_PREPROCESS: 'mv /db/planet.osm.bz2 /db/planet.osm.pbf && osmium cat -o /db/planet.osm.bz2 /db/planet.osm.pbf && rm /db/planet.osm.pbf'
      OVERPASS_COMPRESSION: lz4
      OVERPASS_DIFF_URL: https://download.openstreetmap.fr/replication/europe/france/minute
      OVERPASS_MAX_TIMEOUT: "1000"
      OVERPASS_UPDATE_SLEEP: "900"
      OVERPASS_FASTCGI_PROCESSES: "3"
      OVERPASS_RATE_LIMIT: "10"
      OVERPASS_SPACE: "12884901888"  # 12 Go laissés à Overpass (sur 15)
    volumes:
      - ./overpass_data:/db
    stdin_open: true
    tty: true
    deploy:
      resources:
        limits:
          cpus: "6" # Limiter 6 CPU
          memory: 15g # Limiter 15 Go de RAM
    ports:
      - 8080:80

Requêtes #completetescommerces

Extraction des commerces sans horaires à par ville

Cette requête Overpass permet d’extraire, un ensemble de commerces, services, établissements et activités (restaurants, magasins, bureaux, artisans, hébergements, etc.) tout en filtrant ceux qui possèdent déjà la clé opening_hours. Elle repose sur plusieurs catégories OSM (amenity, shop, office, craft, tourism) afin de couvrir un large spectre de points d’intérêt, puis ne conserve que les objets nommés et potentiellement ouverts au public. L’objectif est d’identifier les lieux dont les horaires d’ouverture ne sont pas renseignés dans OpenStreetMap, afin d’améliorer la complétude et la qualité des données. 


[out:json][timeout:60];

area["name"="<NOM DE LA VILLE>"]->.ville;

(
  nw["amenity"]
    ["amenity"~"restaurant|fast_food|cafe|fuel|pharmacy|bank|bar|hospital|post_office|clinic|pub|car_wash|ice_cream|driving_school|cinema|car_rental|nightclub|bureau_de_change|studio|internet_cafe|money_transfer|casino|vehicle_inspection|frozen_food|boat_rental|coworking_space|workshop|personal_service|dancing_school|training|ski_school|ski_rental|dive_centre|driver_training|nursing_home|funeral_hall|doctors|dentist|theatre|kindergarten|language_school|stripclub|veterinary"]
    ["amenity"!~"public_bookcase|public_building"]
    ["name"]
    ["name:signed"!~"no"]
    ["noname"!~"yes"]
    [!"opening_hours"]
    (area.ville);

  nw["shop"]
    ["shop"~"convenience|supermarket|clothes|hairdresser|car_repair|bakery|beauty|car|hardware|mobile_phone|butcher|furniture|car_parts|alcohol|florist|scooter|variety_store|electronics|shoes|optician|jewelry|mall|gift|doityourself|greengrocer|books|bicycle|chemist|department_store|laundry|travel_agency|stationery|pet|sports|confectionery|tyres|cosmetics|computer|tailor|tobacco|storage_rental|dry_cleaning|trade|copyshop|motorcycle|funeral_directors|beverages|newsagent|garden_centre|massage|pastry|interior_decoration|general|deli|toys|houseware|wine|seafood|pawnbroker|tattoo|paint|wholesale|photo|second_hand|bed|kitchen|outdoor|fabric|antiques|coffee|gas|e-cigarette|perfumery|craft|hearing_aids|money_lender|appliance|electrical|tea|motorcycle_repair|boutique|baby_goods|bag|musical_instrument|dairy|pet_grooming|music|carpet|rental|fashion_accessories|cheese|cannabis|chocolate|medical_supply|leather|sewing|locksmith|games|video_games|hifi|window_blind|caravan|tool_hire|household_linen|bathroom_furnishing|shoe_repair|watches|nutrition_supplements|fishing|frame|grocery|boat|repair|gold_buyer|lighting|pottery|security|groundskeeping|herbalist|curtain|health_food|flooring|printer_ink|camera|candles|printing|garden_furniture|food|yes"]
    ["shop"!~"kiosk|vacant"]
    ["name"]
    ["name:signed"!~"no"]
    ["noname"!~"yes"]
    [!"opening_hours"]
    (area.ville);

  nw["office"]
    ["office"~"company|estate_agent|insurance|telecommunication|it|accountant|employment_agency|tax_advisor|financial|advertising_agency|logistics|newspaper|financial_advisor|consulting|travel_agent|coworking|moving_company|lawyer|architect|construction_company|developer|credit_broker|graphic_design|construction|property_management|cleaning|notary"]
    ["name"]
    ["name:signed"!~"no"]
    ["noname"!~"yes"]
    [!"opening_hours"]
    (area.ville);

  nw["craft"]
    ["craft"~"carpenter|winery|metal_construction|electronics_repair|photographer|electrician|brewery|hvac|plumber|tailor|shoemaker|sawmill|caterer|window_construction|gardener|dressmaker|confectionery|stonemason|glaziery|painter|roofer|builder|key_cutter|upholsterer|cleaning|pottery|distillery|jeweller|handicraft|joiner|agricultural_engines|tiler|insulation|clockmaker|sculptor|printer|cabinet_maker"]
    ["name"]
    ["name:signed"!~"no"]
    ["noname"!~"yes"]
    [!"opening_hours"]
    (area.ville);

  nw["tourism"]
    ["tourism"~"hotel|hostel|guest_house|motel"]
    ["name"]
    ["name:signed"!~"no"]
    ["noname"!~"yes"]
    [!"opening_hours"]
    (area.ville);
);

out body;
>;
out skel qt;
Sans site web
[out:json][timeout:60];

// Zone
area["name"="<NOM DE LA VILLE>"]->.searchArea;

// Nœuds + ways + relations utiles
(
  // POI principaux
  nwr["amenity"~"restaurant|fast_food|cafe|bar|pub|nightclub|cinema|hospital|clinic|doctors|dentist|pharmacy|bank|post_office|fuel|car_wash|car_rental|driving_school"]
    ["website"!~"."]
    (area.searchArea);

  // Shops
  nwr["shop"~"supermarket|bakery|butcher|hairdresser|car_repair|electronics|bicycle|clothes|convenience|butcher|pharmacy"]
    ["website"!~"."]
    (area.searchArea);

  // Offices
  nwr["office"~"it|insurance|estate_agent|lawyer|accountant|consulting|coworking|travel_agent"]
    ["website"!~"."]
    (area.searchArea);

  // Crafts
  nwr["craft"~"electrician|plumber|carpenter|builder|roofer|painter"]
    ["website"!~"."]
    (area.searchArea);

  // Tourism
  nwr["tourism"~"hotel|hostel|guest_house|motel"]
    ["website"!~"."]
    (area.searchArea);
);

// Sortie
out body;
>;
out skel qt;