[postgis-users] Fucntion that find if the x, y, z for any points in the table are the same

eehab hamzeh eehab40 at hotmail.com
Tue Aug 26 06:52:38 PDT 2008


Hello,
 
I have the following function which check if two (or more) points are one, the function just consider the x,y coordinates. can any body help me to modify it to check z-index also. 
 
Thanks
 
Ihab
 
below is the function
 
-- Function: assign_vertex_id(character varying, double precision, character varying, character varying) 
-- DROP FUNCTION assign_vertex_id(character varying, double precision, character varying, character varying); 
CREATE OR REPLACE FUNCTION assign_vertex_id(geom_table character varying, tolerance double precision, geo_cname character varying, gid_cname character varying) 
RETURNS character varying AS 
$BODY$ DECLARE 
points record; i record; source_id int; target_id int; pre varchar; post varchar; 
BEGIN 
BEGIN 
DROP TABLE vertices_tmp; 
EXCEPTION 
WHEN UNDEFINED_TABLE THEN 
END; 
CREATE TABLE vertices_tmp ( id serial ); 
EXECUTE $q$ SELECT addGeometryColumn('vertices_tmp', 'the_geom', 
(SELECT srid FROM geometry_columns WHERE f_table_name='$q$ quote_ident(geom_table) $q$') , 'POINT', 4) $q$; 
CREATE INDEX vertices_tmp_idx ON vertices_tmp USING GIST (the_geom); 
pre = ; 
post = ; 
FOR i in EXECUTE 'SELECT count(*) as t from ' quote_ident(geom_table) ' WHERE NumGeometries??(' quote_ident(geo_cname) ') is not null' loop 
IF (i.t > 0) THEN 
pre = 'geometryN('; post = ' , 1)'; 
END IF; 
END LOOP; 
FOR points IN EXECUTE 'SELECT ' quote_ident(gid_cname) ' AS id,' 
' startPoint(' pre quote_ident(geo_cname) post ') AS source,' ' endPoint(' pre quote_ident(geo_cname) post ') as target' ' FROM ' quote_ident(geom_table) loop 
source_id := point_to_id(points.source, tolerance); target_id := point_to_id(points.target, tolerance); 
EXECUTE 'update ' quote_ident(geom_table) 
' SET source_id = ' source_id 
', target_id = ' target_id 
' WHERE ' quote_ident(gid_cname) ' = ' points.id; 
END LOOP; 
RETURN 'OK'; 
END; $BODY$ 
LANGUAGE 'plpgsql' VOLATILE STRICT COST 100; 
ALTER FUNCTION assign_vertex_id(character varying, double precision, character varying, character varying) OWNER TO postgres; 
_________________________________________________________________
Discover the new Windows Vista
http://search.msn.com/results.aspx?q=windows+vista&mkt=en-US&form=QBRE
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20080826/dc4ddde0/attachment.html>


More information about the postgis-users mailing list