• [^] # Re: I beg your pardon?

    Posté par (site web personnel) . En réponse à la dépêche Sortie de PostGIS 2.0. Évalué à 10.

    Exemple :
    J'ai une table de communes (représentées par des polygones), et une table avec des points représentant les endroits où on trouve des services (médecin, pharmacie, etc). Ces deux tables n'ont aucun identifiant commun permettant de les relier par une jointure alphanumérique.

    Je peux alors faire des requêtes SQL spatiales pour répondre à une question par exemple :
    «combien y a t-il de médecins par commune et quelle est leur zone de couverture ?»

    Si je simplifie et considère qu'un médecin couvre une zone de 3 kilomètres à vol d'oiseau autour de son implantation, je peux effectuer la requête suivante :

    select
     c.code_insee
     , c.name
     , count(*) as nb
     , st_asgeojson(st_concave_hull(st_union(st_buffer(s.geom, 3000), 0.99, true)) as zone_couverture
    from
     communes as c
    join
     services as s
    on
     st_contains(c.geom, s.geom)
    where
     s.type = 'medecin'
    group by
     c.code_insee, c.name;
    
    

    Je vais alors récupérer une liste de communes, avec le nombre de médecins dans chaque commune, et un objet géométrique (ici au format geojson), qui représente la zone de couverture globale des médecins dans la commune. Je peux ensuite renvoyer les résultats à une application cliente web utilisant OpenLayers par exemple, et afficher le tout sur une carte.

    Les géométries sont traitées de la même façon que les objets classiques de la base de données, et les possibilités de traitement et d'analyse sont tout aussi étendues.