[postgis-users] line interpolate point

George R. C. Silva georger.silva at gmail.com
Tue May 27 17:57:12 PDT 2008


Hello everyone!

Once again i come to your expertise.

I have a MULTILINESTRING layer (logradouros) and a test point layer.

What i want to do is to locate the midpoint of a specific road and place 
a point into it.

Well, the roads layer have these informations nomelog(name of the road), 
prefixo_direcao(intersection before that piece of road) and 
sufixo_direcao(intersection after that piece of road).

I want that this function selects the apropriate piece of road using 
those fields, and then interpolate and insert the point to another layer.
----
*create or replace function interpola_centro(text,text,text) returns 
geometry as
$$

declare
geo_ponto geometry;
geometria geometry;
sql varchar;
begin
sql:='select the_geom from logradouros where nomelog='||$1||' and 
prefixo_direcao='||$2||' and sufixo_direcao='||$3 ;

geometria := sql;
geo_ponto := st_line_interpolate_point(st_geometryn(geometria,1),.5);


insert into teste(the_geom) values (geo_ponto);
return geo_ponto;
end;
$$
language plpgsql
---
*there is no problem with the function 'per se', but when i try to run 
the function it gives me:

ERROR:  parse error - invalid geometry
CONTEXT:  PL/pgSQL function "interpola_centro" line 9 at assignment

what is wrong?

Thanks for your attention

George Silva



More information about the postgis-users mailing list