Dear Regina, As always you come to the rescue... :) Thank you for your thoughts. This is actually a *tad* out of the ordinary...
Anyway it's just occurred to me that I was trying to kill two birds with
the same pellet ...
This has to have a two step approach, as the problem is related to
having several tunnels in range:
- get all the tunnels in that range (thus eliminating the LIMIT 1)
- check if the current location (road segment) *touches* one of the
returned tunnels (this involved a quick fix on the road map... ;-) )
Best regards,
Pedro.
On Thu, 2008-07-17 at 05:49 -0400, Paragon Corporation wrote:
> Pedro,
>
> It got thru the first time, I just don't think people have too many
> thoughts on it since it is a litte out of the ordinary. So you always
> want the closest upper tunnel.
>
> One thought that comes to mind is to use the overlap/above bounding
> box operator (but that would only work if your lines fit nicely in
> non-overlapping bounding boxes.). To get true above below ( I'm
> actually not sure that has any meaning with lines vs. right and left
> which would depend on the directionality of your line).
>
> So something like below - note I am using the new ST_DWithin function
> introduced in 1.3 and the new naming conventions - so you may need to
> change back to what you had and add the |&> operator if you are
> running an older version of PostGIS.
>
> SELECT name, road_type
> FROM $road_net
> WHERE
> ST_DWithin(ST_Transform(geometry, $srid) ,
> ST_Transform(ST_geomfromtext('POINT($lon $lat)',4326),$srid), 150.1)
> AND road_type = 67 AND ST_Transform(geometry, $srid) |&>
> ST_Transform(ST_geomfromtext('POINT($lon $lat)',4326),$srid)
> ORDER BY
> ST_Distance(ST_transform(geometry,$srid),
> ST_transform(ST_geomfromtext('POINT($lon $lat)',4326),$srid))
> LIMIT 1 ;
>
> Hope that helps,
> Regina
>
>
> ______________________________________________________________________
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] On Behalf Of
> Pedro Doria Meunier
> Sent: Thursday, July 17, 2008 4:16 AM
> To: [email protected]
> Subject: [postgis-users] Need help with a query - resending
> Importance: High
>
>
>
>
> (Since I'm not certain that this got through I'm resending. If it did,
> please forgive me)
>
> Hi all,
>
> I need help with an unusual query (at least for me :] )
>
> The objective is to find road segments with a type defined to tunnel
> within a given distance.
> This is needed because of gps signal spikes (speed-wise) at tunnel
> exits...
>
> Now given the following scenario of road segments:
>
>
> =====*-----------------*==========
> ====V===*========================*
> *======
>
> =====*-----------------*==========
> |
> |
> |
> |
> |
> |
> |
> |
> |
> |
> ==========-----------------------=======================
>
> = | road
> - tunnel
> * nodes
> V vehicle
>
> Now when I execute a distance-based query (for road segments of tunnel
> type) I get the lower tunnel, which is closer.
> But I want the upper one which is actually the one on the top.
>
> the actual query is as follows (tunnels (road type=67) within a 150
> metres radius) -- the road map is in WGS84:
>
> Already thankful for any tips,
>
> --
> Pedro Doria Meunier <[EMAIL PROTECTED]>
>
> _______________________________________________
> postgis-users mailing list
> [email protected]
> http://postgis.refractions.net/mailman/listinfo/postgis-users
<<attachment: stock_smiley-3.png>>
<<attachment: stock_smiley-1.png>>
_______________________________________________ postgis-users mailing list [email protected] http://postgis.refractions.net/mailman/listinfo/postgis-users
