[postgis-users] Need help constructing a query

Pedro Doria Meunier pdoria at netmadeira.com
Fri Jul 20 04:08:23 PDT 2012


Ok. followup on progress here

This query gives me the buoy which I want to count the laps with:

SELECT ST_Buffer(transform(geometry,32628),50)
FROM
customer_pois
WHERE
label = 'myBuoy'

This query constructs the line for the boat track:

SELECT
unit_imei As boat, ST_MakeLine(coordinates) As geom
FROM units_history
WHERE
unit_imei = 'theImei' AND
zulu_timestamp >= '2012-07-18' AND zulu_timestamp <= '2012-07-19'
GROUP BY unit_imei


Now I need to transform Tom's query (compatible with PG 8.4+)
*many thanks to Tom for this elegant approach ;)*
/WITH line AS
(
    SELECT
    gps.gps_track As boat, ST_MakeLine(gps.the_geom ORDER BY gps_time)
As geom
    FROM gps_points As gps
    GROUP BY gps.gps_track;
)
,intersections AS
(
    SELECT boat, (ST_Dump(ST_Intersection(line.geom,
ST_SetSrid(ST_Makepoint(lon,lat),4326)))).geom
)
SELECT
   boat, count(boat) As number_of_passes
    FROM intersections
    WHERE ST_GeometryType(geom) = 'ST_LineString'
    GROUP BY boat/

Into one (compatible with PG 8.3 by means of sub-queries) performing an
ST_Intersection for those 2 sets
giving me the number of times that line crosses the buffered point.

TIA,

-- 
Pedro Doria Meunier
Telf. +351 291 933 006
GSM  +351 915 818 823
Skype: pdoriam

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20120720/b585a8ac/attachment.html>


More information about the postgis-users mailing list