2017-10-19 6 views
1

J'ai besoin d'obtenir le nombre de fois que chaque personne entre dans un lieu spécifique défini en tant que polygone en utilisant PostGIS.Obtenir le nombre de fois où une action s'est produite

Voici comment j'ai commencé l'instruction SQL:

SELECT id_p 
FROM Movement 
WHERE ST_Contains('POLYGON((long1 lat1, long2 lat2, long3 lat3, long4 lat4))', 
        ST_MakePoint(longitude,latitude)) 
    AND (datehour::date BETWEEN '2017-01-01' AND '2017-01-31') 
    AND speed = 0 

enter image description here

Répondre

2

Vous pouvez essayer de faire une requête de comptage de base:

SELECT 
    id_p, 
    COUNT(*) AS cnt 
FROM 
    Movement 
WHERE 
    ST_Contains('POLYGON((long1 lat1, long2 lat2, long3 lat3, long4 lat4))', 
       ST_MakePoint(longitude,latitude)) AND 
    datehour::date BETWEEN '2017-01-01' AND '2017-01-31' AND 
    speed = 0 
GROUP BY 
    id_p; 

Pour accélérer cette requête, vous pouvez envisager d'ajouter indices aux colonnes utilisées dans la clause WHERE, à savoir datehour et speed. Vous pouvez également envisager un index géospatial pour les colonnes impliquées dans l'appel à ST_Contains.