[postgis-users] Extract start/end points

Stephen Woodbridge woodbri at swoodbridge.com
Sat Mar 17 17:36:47 PDT 2012


On 3/17/2012 6:28 PM, Aurélien FILEZ wrote:
> Hi all,
>
> I have a table of 3.200.000 linestrings and I have to extract the start
> point (x1, y1) and the end point (x2, y2).
>
> So I make :
> UPDATE myTable SET x1 = St_X(St_StartPoint(the_geom));
>
> But the query is running since 5 hours, and still not finished.
>
> The computer is an Ubuntu Server, i3, with 4Go of RAM..
>
> Is it normal ? Is there is something to do somewhere ?

A couple of thoughts on this:

1. yes, this is more or less normal as you have to modify every row in 
the table and because of row revisioning you actually have to copy every 
row and modify the copy.

2. it probably would be faster to do something like:

create table newtable as select <list of your existing columns>,
   St_X(St_StartPoint(the_geom)) as x1,
   St_Y(St_StartPoint(the_geom)) as y1,
   St_X(St_EndPoint(the_geom)) as x2,
   St_Y(St_EndPoint(the_geom)) as y2;

Or if you use the update method, you should add all 4 values on the 
update rather than do it 4 times. And make sure you vacuum the database 
afterwards to recover dead space etc.

3. if you are using the out of the box postgresql install it is probably 
not using much of your memory, and you should do some tuning. google for 
"postgresql tuning" and I'm sure you will get lots of links that will be 
helpful.

-Steve



More information about the postgis-users mailing list