IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PostgreSQL Discussion :

Requête spatiale postGIS


Sujet :

PostgreSQL

  1. #1
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 250
    Points : 96
    Points
    96
    Par défaut Requête spatiale postGIS
    Bonjour,

    Je cherche à faire une requête spatiale entre 3 couches mais je m'emmêle les pinceaux.
    J'ai 3 tables une couche de point (point de collecte), et 2 couches de polygone (zone et batiment). Je cherche a savoir pour un point de collecte, le nombre de bâtiment se trouvant dans la zone la plus proche d'un point de collecte. En gros j'ai 2 requêtes et il faudrait que je les imbrique !

    1er : pour connaître le nombre de bâtiment dans une zone

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT COUNT(DISTINCT(bati.ogc_fid)) AS nbreLogement FROM zone left join bati Intersects(bati.the_geom , zone.the_geom)
    2ième: pour connaître la zone la plus proche d'un point de collecte

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT zone.ogc_fid, Distance(zone.the_geom ,Pointcollecte.the_geom)   FROM zone, Pointcollecte ORDER BY Distance ASC Limit 1
    (Peut être faut-il écrire cette dernière autrement ...)

    Si vous avez une idée , merci !

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 768
    Points : 52 571
    Points
    52 571
    Billets dans le blog
    5
    Par défaut
    Ce que vous faites c'est vraiment du n'importe quoi. Commencez par donner vos tables sous la forme CREATE TABLE ..., ainsi qu'un jeu d'essais sous la forme INSERT ...
    Après on pourra commencer à vous aider.

    Mais il serait peut être temps de vous forme r à ce qu'est une jointure spatiale !
    Mon livre sur SQL possède un chapitre de 60 pages consacré au SIG dans SQL avec des exemples de jointures spatiales...

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 250
    Points : 96
    Points
    96
    Par défaut
    Bonjour,

    Je trouve votre réponse un peu arrogante. Je pense avoir été claire, d'ailleurs on m'a donné une réponse sur un autre forum sans que je donne plus d'explications. voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    with plus_proche as (
       select distinct on(pt.ogc_fid) pt.ogc_fid as pt_id, 
              z.ogc_fid as zone_id,
              z.the_geom as zone_geom
       from zone z, Pointcollecte pt
       where st_dwithin(z.the_geom, pt.the_geom, 500)
       order by pt.ogc_fid, distance(z.the_geom, pt.the_geom)
    ) select p.pt_id, p.zone_id, count(b.ogc_fid) as nbrelogement
    from bati b, plus_proche p
    where st_within(b.the_geom, p.zone_geom)
    group by p.pt_id, p.zone_id;
    ... donc un peu d'indulgence pour ceux qui débutent, mais merci d'avoir répondu ;-)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. mise à jour par requête spatiale
    Par amelo dans le forum PL/SQL
    Réponses: 0
    Dernier message: 25/03/2011, 10h35
  2. Réponses: 2
    Dernier message: 19/01/2011, 14h46
  3. Réponses: 0
    Dernier message: 27/05/2009, 16h16
  4. Requête spatiale - géolocalisation sur géoïde
    Par darkned dans le forum Requêtes
    Réponses: 0
    Dernier message: 08/10/2008, 16h32
  5. requête spatiale postgis
    Par jonathan1 dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 06/02/2007, 12h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo