[postgis-users] Accumulated segment length of a linestring
Stephan Holl
stephan.holl at intevation.de
Thu Jul 21 04:47:46 PDT 2011
Hello Ralf,
"Ralf Suhr" <Ralf.Suhr at itc-halle.de>, [20110721 - 13:43:59]
> Hello Stefan,
>
> use a trigger on table romy_2010 for fast calculating. You need only
> to add the new segment length to the last summary length.
the table is a point-table, but maybe I do not get your point.
> And you can't use st_makeline() on a point table without ordering the
> points.
I do not want. They are ordered by gid (which is a serial though, see
below).
Best
Stephan
> Am Donnerstag 21 Juli 2011, 11:47:53 schrieb Stephan Holl:
> > Dear PostGIS-users,
> >
> > I would like to calculate the accumulated lengths of each
> > linestring-segments into a new column, so that every segment holds
> > the real length from the beginning of the linestring. The last
> > segment of the linestring shows the overall length of the
> > linestring then.
> >
> > My data (GPS POINT-data):
> > CREATE TABLE romy_2010 (
> > gid integer NOT NULL,
> > id double precision,
> > tag_zeit date,
> > the_geom public.geometry,
> > veroeffentlicht smallint DEFAULT 0,
> > bild text,
> > link text,
> > beschreibung text,
> > CONSTRAINT enforce_dims_the_geom CHECK ((public.ndims(the_geom)
> > = 2)), CONSTRAINT enforce_geotype_the_geom CHECK
> > (((public.geometrytype(the_geom) = 'POINT'::text) OR (the_geom IS
> > NULL))), CONSTRAINT enforce_srid_the_geom CHECK
> > ((public.srid(the_geom) = 4326)) );
> >
> > My current linestring representing the vertexes and additional
> > information:
> > CREATE OR REPLACE VIEW v_romy_2010_foo AS
> > SELECT
> > 'Romy'::text as storkname,
> > n AS gid,
> > n AS id,
> > to_char(s.tag_zeit::timestamp, 'DD.MM.YYYY') AS zeit,
> > s.beschreibung,
> > s.bild,
> > s.link,
> > -- segments
> > st_makeline(st_PointN(m.the_geom,n), st_PointN(m.the_geom,
> > n+1)) AS the_geom,
> > round(st_length_spheroid(st_makeline(st_PointN(m.the_geom,n),
> > st_PointN(m.the_geom, n+1)), 'SPHEROID["WGS
> > 84",6378137,298.257223563]')/1000) AS length_sphero_inKM
> > FROM
> > (SELECT
> > st_makeline(the_geom) AS the_geom
> > FROM
> > (SELECT
> > gid,
> > beschreibung,
> > the_geom
> > FROM romy_2010 WHERE gid >= 1 AND veroeffentlicht = 1 ORDER
> > BY gid ) AS t
> > ) AS m
> > CROSS JOIN generate_series(1,1000) AS n
> > LEFT JOIN romy_2010 s ON s.id = n
> > WHERE n < st_npoints(m.the_geom);
> >
> >
> > I appreciate any pointers how to solve this.
> >
> > TIA
> >
> > Best regards
> >
> > Stephan
>
--
Stephan Holl <stephan.holl at intevation.de> | Tel.: +49 (0)541-33 508 3663
Intevation GmbH, Neuer Graben 17, 49074 OS | AG Osnabrück - HR B 18998
Geschäftsführer: Frank Koormann, Bernhard Reiter, Dr. Jan-Oliver Wagner
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20110721/a9fa925d/attachment.pgp>
More information about the postgis-users
mailing list