Ticket #108 (closed feature request: fixed)
Shooting_Star not accepting a JOINing query
Reported by: | yancho | Owned by: | anton |
---|---|---|---|
Priority: | major | Milestone: | Version 2.0 |
Component: | Shooting* | Version: | 1.01 |
Keywords: | shooting star query where join | Cc: |
Description
Hi,
anton, I tried changing the Shooting Star function like you told me to accept a WHERE clause, and am calling for it via another function.
This is how I am calling it :
var_params_shootingstar := $v$ WHERE t1.status = TRUE, AND ( ( ( SELECT z( pointn( geometryn(d3.the_geom,1), 1) ) AS z FROM streets_3d d3 WHERE d3.gid = t1.gid ) / $v$ || var_rain_cm || $v$ ) >= $v$ || rain_ratio || $v$ ), AND ( $v$ || var_ratio_cartype_rain || $v$ <= 10 ) , $v$; RAISE NOTICE 'Where clause : %', var_params_shootingstar; var_text_shootingstar := $qt$ SELECT gid, the_geom FROM shootingstar_sp_where_new ( 'streets', $qt$ || var_gid_a || $qt$, $qt$ || var_gid_b || $qt$, 5000, 'length', true, true, $qt$ || quote_literal(var_params_shootingstar) || $qt$ ) $qt$; RAISE NOTICE 'SQL Query : %',var_text_shootingstar; var_id := 0; FOR rec_shooting_star IN EXECUTE var_text_shootingstar
The query part which I added the WHERE clause is :
query := 'SELECT gid, the_geom FROM ' || 'shortest_path_shooting_star(''SELECT t1.gid as id, t1.source::integer, ' || 't1.target::integer, t1.'||cost_column||'::double precision as cost, ' || 't1.x1::double precision, t1.y1::double precision, t1.x2::double ' || 't1.precision, t1.y2::double precision, t1.rule::varchar, ' || 't1.to_cost::double precision '; IF rc THEN query := query || ' , t1.reverse_cost '; END IF; query := query || 'FROM ' || quote_ident(geom_table) || ' AS t1 ' || query_text || ' AND setSRID(''''BOX3D('|| ll_x-delta||' '||ll_y-delta||','||ur_x+delta||' '|| ur_y+delta||')''''::BOX3D, ' || srid || ') && the_geom'', ' || quote_literal(sourceid) || ' , ' || quote_literal(targetid) || ' , '''||text(dir)||''', '''||text(rc)||''' ) , ' || quote_ident(geom_table) || ' where edge_id = gid ' ; RAISE NOTICE 'Query is : %', query;
When I am running my function, this is what I am getting :
NOTICE: SQL Query : SELECT gid, the_geom FROM shootingstar_sp_where_new ( 'streets', 36368, 39134, 5000, 'length', true, true, '', ' WHERE t1.status = TRUE, AND ( ( ( SELECT z( pointn( geometryn(d3.the_geom,1), 1) ) AS z FROM streets_3d d3 WHERE d3.gid = t1.gid ) / 0.0001 ) >= 1 ), AND ( 0 <= 10 ) , ' ) NOTICE: Query is : SELECT gid, the_geom FROM shortest_path_shooting_star('SELECT t1.gid as id, t1.source::integer, t1.target::integer, t1.length::double precision as cost, t1.x1::double precision, t1.y1::double precision, t1.x2::double t1.precision, t1.y2::double precision, t1.rule::varchar, t1.to_cost::double precision , t1.reverse_cost FROM streets AS t1 WHERE t1.status = TRUE, AND ( ( ( SELECT z( pointn( geometryn(d3.the_geom,1), 1) ) AS z FROM streets_3d d3 WHERE d3.gid = t1.gid ) / 0.0001 ) >= 1 ), AND ( 0 <= 10 ) , AND setSRID(''BOX3D(630264.299796684 224548.091433566,643684.863573708 241417.300516518)''::BOX3D, -1) && the_geom', '36368' , '39134' , 'true', 'true' ) , streets where edge_id = gid CONTEXT: PL/pgSQL function "give_most_fuel_friendly" line 127 at for over execute statement ERROR: syntax error at or near "t1" SQL state: 42601 Context: PL/pgSQL function "shootingstar_sp_where_new" line 116 at for over execute statement PL/pgSQL function "give_most_fuel_friendly" line 127 at for over execute statement
Any idea what I can do please? I think it is a bug in the shootingstar function since it seems it doesn't accept a join to another table :|
I am all the days on IRC, so if you can try to log in so we can discuss better it would be really nice of you.
Thanks
Change History
Note: See
TracTickets for help on using
tickets.