<div dir="ltr"><div>All lines should be in one table, you can add a column to differentiate between line going SN and EW, </div><div>this is what the query I wrote does.</div><div><br></div><div>Not changing your code much, it gives for the line table :</div>
<div><br></div><div><span style="font-family:arial,sans-serif;font-size:12.800000190734863px">CREATE TABLE all_lines tablespace jamestabs AS</span><br></div><div><span style="font-family:arial,sans-serif;font-size:12.800000190734863px">( SELECT st_setsrid(st_makeline(st_</span><span style="font-family:arial,sans-serif;font-size:12.800000190734863px">makepoint(x, 7780), st_makepoint(x,</span><br style="font-family:arial,sans-serif;font-size:12.800000190734863px">
<span style="font-family:arial,sans-serif;font-size:12.800000190734863px">1226580)),27700) as the_geom, 'SN' AS direction</span><br style="font-family:arial,sans-serif;font-size:12.800000190734863px"><span style="font-family:arial,sans-serif;font-size:12.800000190734863px">FROM generate_series(53320::int, 667380::int, 20) as x)</span><br>
</div><div><span style="font-family:arial,sans-serif;font-size:12.800000190734863px">UNION </span></div><div><span style="font-size:12.800000190734863px;font-family:arial,sans-serif">( SELECT st_setsrid(st_makeline(st_</span><span style="font-size:12.800000190734863px;font-family:arial,sans-serif">makepoint(53320, y),</span><br>
<span style="font-family:arial,sans-serif;font-size:12.800000190734863px">st_makepoint(667380, y)),27700) as the_geom, 'EW' AS direction</span><br style="font-family:arial,sans-serif;font-size:12.800000190734863px">
<span style="font-family:arial,sans-serif;font-size:12.800000190734863px">FROM generate_series(7780::int, 1226580::int, 20) as y)</span><span style="font-family:arial,sans-serif;font-size:12.800000190734863px"><br></span></div>
<div><br></div><div>then building index on it.</div><div><br></div><div><span style="font-family:arial,sans-serif;font-size:12.800000190734863px"><br></span></div><div><span style="font-family:arial,sans-serif;font-size:12.800000190734863px">"-- Merge the road buffer polygons into one big polygon</span><br style="font-family:arial,sans-serif;font-size:12.800000190734863px">
<span style="font-family:arial,sans-serif;font-size:12.800000190734863px">-- Should maybe consider leaving them as they are, but am merging for now.</span><br style="font-family:arial,sans-serif;font-size:12.800000190734863px">
<span style="font-family:arial,sans-serif;font-size:12.800000190734863px">SELECT st_union(geom) as geom INTO union_roads FROM ukmajrdbuffer;"</span></div><div><span style="font-family:arial,sans-serif;font-size:12.800000190734863px"><b>You must not do it ! </b></span></div>
<div><span style="font-family:arial,sans-serif;font-size:12.800000190734863px">As I told you "blabla index blabla".</span></div><div><span style="font-family:arial,sans-serif;font-size:12.800000190734863px"><br>
</span></div><div><font face="arial, sans-serif">instead, create an index on table </font><span style="font-family:arial,sans-serif;font-size:12.800000190734863px">ukmajrdbuffer, and use it without unioning.</span></div><div>
<span style="font-family:arial,sans-serif;font-size:12.800000190734863px"><br></span></div><div><span style="font-family:arial,sans-serif;font-size:12.800000190734863px">Then you query is not going to work at all ... (or *very very* slowly) </span></div>
<div><span style="font-family:arial,sans-serif;font-size:12.800000190734863px">"FROM </span><span style="font-family:arial,sans-serif;font-size:12.800000190734863px">east_to_west, north_to_south, buff_union_roads" : it potentially generates 1000*50*1000*50 * number_of_road rows to filter, very bad idea, you'll get the same problem as with points...</span></div>
<div><span style="font-family:arial,sans-serif;font-size:12.800000190734863px"><br></span></div><div><font face="arial, sans-serif">(please see some example on internet to understand WITH, it is simple , useful, and makes query much more clear)</font></div>
<div><span style="font-family:arial,sans-serif;font-size:12.800000190734863px"><br></span></div><div><span style="font-family:arial,sans-serif;font-size:12.800000190734863px">First you could try :</span></div><div><span style="font-family:arial,sans-serif;font-size:12.800000190734863px"><br>
</span></div><div><span style="font-family:arial,sans-serif;font-size:12.800000190734863px">CREATE TABLE lines_for_each_road </span><span style="font-family:arial,sans-serif;font-size:12.800000190734863px">tablespace jamestabs AS</span></div>
<div><span style="font-family:arial,sans-serif;font-size:12.800000190734863px">WITH all_lines AS ( --this subquerry gets all the lines</span></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div><span style="font-family:arial,sans-serif;font-size:12.800000190734863px">SELECT * </span></div>
<div><span style="font-family:arial,sans-serif;font-size:12.800000190734863px">FROM all_lines</span></div></blockquote><div><span style="font-family:arial,sans-serif;font-size:12.800000190734863px">),</span></div><div><span style="font-family:arial,sans-serif;font-size:12.800000190734863px">SELECT row_number() over() AS id--,*</span></div>
<div><span style="font-family:arial,sans-serif;font-size:12.800000190734863px">FROM </span><span style="font-family:arial,sans-serif;font-size:12.800000190734863px">ukmajrdbuffer, all_lines</span></div><div><span style="font-family:arial,sans-serif;font-size:12.800000190734863px">WHERE ST_Intersects(</span><span style="font-family:arial,sans-serif;font-size:12.800000190734863px">ukmajrdbuffer.the_geom, </span><span style="font-family:arial,sans-serif;font-size:12.800000190734863px">all_lines.the_geom</span><span style="font-family:arial,sans-serif;font-size:12.800000190734863px">)=TRUE;</span></div>
<div><span style="font-family:arial,sans-serif;font-size:12.800000190734863px"><br></span></div><div><span style="font-family:arial,sans-serif;font-size:12.800000190734863px">This will give you (if you uncomment the "--,*", ), for every road, all the lines intersecting the road</span></div>
<div><span style="font-family:arial,sans-serif;font-size:12.800000190734863px">example :</span></div><div><font face="arial, sans-serif">road_1 | line_2_EW</font></div><div><span style="font-family:arial,sans-serif">road_1 | line_3_EW</span><font face="arial, sans-serif"><br>
</font></div><div><span style="font-family:arial,sans-serif">road_1 | line_78_SN</span><span style="font-family:arial,sans-serif"><br></span></div><div><span style="font-family:arial,sans-serif">road_1 | line_7_EW</span><span style="font-family:arial,sans-serif"><br>
</span></div><div><span style="font-family:arial,sans-serif">road_2 ...</span></div><div><span style="font-family:arial,sans-serif;font-size:12.800000190734863px"><br></span></div><div><b><font face="arial, sans-serif">How long is it (don't uncomment plz), and how many rows do you get (select count(*) from </font><span style="font-family:arial,sans-serif;font-size:12.800000190734863px">lines_for_each_road</span><span style="font-family:arial,sans-serif;font-size:12.800000190734863px"> </span><span style="font-family:arial,sans-serif">)?</span></b></div>
<div><span style="font-family:arial,sans-serif"><br></span></div><div>If it is not too long, we will go on and "cut" the lines so that for every road, we keep the part of the lines that are inside the road_buffer.</div>
<div>(I have to leave now, tomorrow)</div><div><br></div><div>Cheers,</div><div>Rémi-C</div><div><br></div><div><span style="font-family:arial,sans-serif"><br></span></div><div><span style="font-family:arial,sans-serif"><br>
</span></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/11/13 James David Smith <span dir="ltr"><<a href="mailto:james.david.smith@gmail.com" target="_blank">james.david.smith@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hey Remi,<br>
<br>
I don't quite get what the query you gave does to be honest. But<br>
working with some of the ideas and notions you gave me I have put the<br>
below together. The final bit of the code is the key query. The tables<br>
of NS and EW lines were done very quickly. Nice. But now doing the<br>
'intersects within polygon' is taking some time so I'll see how it<br>
gets on when I get in to work tomorrow morning:<br>
<br>
DROP TABLE IF EXISTS north_to_south;<br>
DROP TABLE IF EXISTS east_to_west;<br>
<br>
-- Make a table of north to south lines<br>
CREATE TABLE north_to_south tablespace jamestabs AS<br>
( SELECT st_setsrid(st_makeline(st_makepoint(x, 7780), st_makepoint(x,<br>
1226580)),27700) as the_geom<br>
FROM generate_series(53320::int, 667380::int, 20) as x);<br>
<br>
-- Add an index<br>
CREATE INDEX north_to_south_geom_index ON north_to_south USING GIST (<br>
the_geom );<br>
<br>
-- Make a table of east to west lines<br>
CREATE TABLE east_to_west tablespace jamestabs AS<br>
( SELECT st_setsrid(st_makeline(st_makepoint(53320, y),<br>
st_makepoint(667380, y)),27700) as the_geom<br>
FROM generate_series(7780::int, 1226580::int, 20) as y);<br>
<br>
-- Add an index<br>
CREATE INDEX east_to_west_geom_index ON east_to_west USING GIST ( the_geom );<br>
<br>
-- Import the Road Buffer file using the pg_loader interface<br>
<br>
-- Update the geometry field as the loader didn't seem to do this.<br>
SELECT UpdateGeometrySRID('ukmajrdbuffer','geom',27700);<br>
<br>
-- Merge the road buffer polygons into one big polygon<br>
-- Should maybe consider leaving them as they are, but am merging for now.<br>
SELECT st_union(geom) as geom INTO union_roads FROM ukmajrdbuffer;<br>
<br>
-- The unioned roads file isn't valid geom. So I simplify it a little<br>
to make it valid.<br>
-- We simplify with a 70 metres factor. Geom is now valid.<br>
SELECT ST_SimplifyPreserveTopology(geom, 70) AS geom INTO<br>
buff_union_roads FROM union_roads;<br>
<br>
-- Now calculate the points where the lines intersect and also where<br>
they are within the polygon.<br>
CREATE TABLE gridpoints tablespace jamestabs<br>
AS (SELECT ST_Intersection(east_to_west.the_geom, north_to_south.the_geom)<br>
FROM east_to_west, north_to_south, buff_union_roads<br>
WHERE st_within(buff_union_roads.geom,<br>
ST_Intersection(east_to_west.the_geom, north_to_south.the_geom)) =<br>
TRUE);<br>
<br>
Thanks<br>
<span class="HOEnZb"><font color="#888888"><br>
James<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
<br>
<br>
<br>
On 13 November 2013 13:33, Rémi Cura <<a href="mailto:remi.cura@gmail.com">remi.cura@gmail.com</a>> wrote:<br>
> Using the lines you exactly do the same as with points.<br>
> The lines will be spaced exactly by 20 meters, end and start being exactly<br>
> on the 20 meters grid, line being either perfectly veritcla or perfectly<br>
> horizontal.<br>
> So intersections are guaranteed to be on the 20 meter grid, because this is<br>
> the definition of a 20 meter grid =) .<br>
><br>
><br>
> Here is a not optimal way to do it :<br>
> For instance if UK is enclosed in a bouding box (xmin,ymin,xmax,ymax), where<br>
> xmin-max and ymin-max are rounded to the nearest 20 meters multiple (ie x or<br>
> y % 20 = 0)<br>
> (Please note that this is not clever because we generate too much SN lines,<br>
> GB being only 500 km wide at most, so we would need to filter, but you don't<br>
> care, following would take less than a minute anyway, and you need to do it<br>
> only once).<br>
><br>
> WITH minmax AS (<br>
> SELECT xmin,ymin,xmax,ymax, bbox_of_england<br>
> ),<br>
> WITH series AS (<br>
> SELECT s<br>
> FROM generate_series(0,1000*(1000/20)::bigint,20) AS s --casting to bigint<br>
> to be safe against going over int limit<br>
> ),<br>
> WITH lines AS (<br>
> SELECT ST_MakeLine (ST_MakePoint(xmin+s,ymin),ST_MakePoint(xmin+s,ymax)) AS<br>
> lineSN,<br>
>  ST_MakeLine(ST_MakePoint(xmin, ymin+s), ST_MakePoint(xmax,ymin+s) AS lineEW<br>
> FROM series, minmax<br>
> ),<br>
> unioned_lines AS (<br>
><br>
> SELECT lineSN AS line, 'SN' as direction<br>
> FROM lines,minmax<br>
> WHERE ST_Interesects(lineSN,bbox_of_england)= TRUE<br>
><br>
> UNION<br>
><br>
> SELECT lineEW AS line, 'EW' AS direction<br>
> FFROM lines,minmax<br>
> WHERE ST_Interesects(lineEW,bbox_of_england)= TRUE<br>
><br>
> )<br>
> SELECT row_number() over() AS uid, line, direction<br>
> FROM unioned_line<br>
><br>
> then creating table and index on geom and on direction (and possibly on uid,<br>
> but better create a primary key then if you use it)<br>
><br>
> Of course I didn't test this query, but you should be able to use it easily.<br>
><br>
> Cheers,<br>
> Rémi-C<br>
><br>
><br>
><br>
><br>
> 2013/11/13 James David Smith <<a href="mailto:james.david.smith@gmail.com">james.david.smith@gmail.com</a>><br>
>><br>
>> Hi Remi,<br>
>><br>
>> Apologies.  One more thing which I am not sure about. We need the<br>
>> final grid of points that we make to be multiples of 20. For example:<br>
>><br>
>> 53320, 7780 = Yes<br>
>> 53323, 7780 = No<br>
>> 53320, 7794 = No<br>
>> 53321, 7754 = No<br>
>><br>
>> That is why in the original function that we wrote, we put the numbers<br>
>> in as below.<br>
>><br>
>> SELECT ST_Collect(st_setsrid(ST_POINT(x,y),$3)) FROM<br>
>> generate_series(53320::int, 667380::int,$2) as x<br>
>> ,generate_series(7780::int, 1226580::int,$2) as y<br>
>> where st_intersects($1,st_setsrid(ST_POINT(x,y),$3))'<br>
>><br>
>> We did this because the points in the grid have to 'align' with the<br>
>> values of mutliple 20.<br>
>><br>
>> If we do the N-S and E-W lines solution that you suggest, I don't<br>
>> think that this will work will it?<br>
>><br>
>> Thanks<br>
>><br>
>> James<br>
>><br>
>><br>
>> On 13 November 2013 11:49, James David Smith<br>
>> <<a href="mailto:james.david.smith@gmail.com">james.david.smith@gmail.com</a>> wrote:<br>
>> > Hi Remi,<br>
>> ><br>
>> > Thanks so much for this detailed response. Your idea about creating<br>
>> > the lines and the only storing where they intersect and are within the<br>
>> > polygons is a great idea. I'm going to give that a go now.<br>
>> ><br>
>> > Thanks again,<br>
>> ><br>
>> > James<br>
>> ><br>
>> > On 13 November 2013 11:41, Rémi Cura <<a href="mailto:remi.cura@gmail.com">remi.cura@gmail.com</a>> wrote:<br>
>> >> This would be an improvement but still non efficient.<br>
>> >><br>
>> >> you have 2 possibilities, supposing that what you want is points 20<br>
>> >> meter<br>
>> >> spaced in all road_buf  :<br>
>> >><br>
>> >> either you compute for each road_buffer the points inside, one road at<br>
>> >> a<br>
>> >> time ( figuratively ).<br>
>> >><br>
>> >> This means you write a function which generates points 20-meter spaced<br>
>> >> in<br>
>> >> the bounding box of the road you are working on, and keep those in the<br>
>> >> real<br>
>> >> road buffer, and group result points as a multipoints (for cosmetic<br>
>> >> purpose)<br>
>> >> .<br>
>> >><br>
>> >> You would then use it like this :<br>
>> >><br>
>> >> SELECT road_id, points_insidea_road(the_geom) AS<br>
>> >> my_points_inside_the_road<br>
>> >> FROM road_polygons_table<br>
>> >><br>
>> >> You would have as output a line per road with a multipoint containing<br>
>> >> all<br>
>> >> the point 20 meter spaced inside the road.<br>
>> >><br>
>> >> Or (what you wrote) you generate all points and keep those intersecting<br>
>> >> one<br>
>> >> or many road.<br>
>> >><br>
>> >> The first one is mandatory, because it avoids to manipulate<br>
>> >> (incredibly) big<br>
>> >> table of all points spaced by 20 meters for UK (around 500 * 10^6<br>
>> >> points ! )<br>
>> >> Even with indexes it's not a good idea to use such number of rows.<br>
>> >><br>
>> >> That's the first point (write a function working for one road, then use<br>
>> >> it<br>
>> >> for all road).<br>
>> >><br>
>> >> The second point is the way you compute is very inefficient. If your<br>
>> >> road is<br>
>> >> going from south-West to NorthEast, you will generate a very big number<br>
>> >> of<br>
>> >> points, and very few will be in the road_buffer. This is problematic as<br>
>> >> for<br>
>> >> a road of only 20 kms, you may generate as many as 100k points and keep<br>
>> >> only<br>
>> >> few of them. If you want to process hundreds of ks or roads it will<br>
>> >> become<br>
>> >> very problematic. Also you would have to generate points each time.<br>
>> >><br>
>> >> So here is what  I suggest you : change your strategy :<br>
>> >>  instead of generating all point in bounding box and then keeping only<br>
>> >> those<br>
>> >> in road_buffer,<br>
>> >> generate a line every 20 meters going North south and an line every 20<br>
>> >> meters going East-West , then use the function ST_Intersection to keep<br>
>> >> only<br>
>> >> part of this lines being inside the road_polygon, then you have the<br>
>> >> points<br>
>> >> inside road_polygons as the intersections of these EW lines with the SN<br>
>> >> lines.<br>
>> >><br>
>> >> It will be very efficient because you can create a table with all the<br>
>> >> lines<br>
>> >> going East-West and South-North for great britain (about 25k + 50k<br>
>> >> lines),<br>
>> >> and build index on it (index on geom and on the column saying if it is<br>
>> >> SN or<br>
>> >> EW).<br>
>> >><br>
>> >> The trick is the number of lines is around 500km * 50 line/km + 1000km<br>
>> >> * 50<br>
>> >> line/km , where the number of points is  500km * 50 line/km * 1000km *<br>
>> >> 50<br>
>> >> line/km<br>
>> >><br>
>> >> Hope it helps,<br>
>> >><br>
>> >> Cheers,<br>
>> >> Rémi-C<br>
>> >><br>
>> >><br>
>> >><br>
>> >><br>
>> >><br>
>> >> 2013/11/13 James David Smith <<a href="mailto:james.david.smith@gmail.com">james.david.smith@gmail.com</a>><br>
>> >>><br>
>> >>> Hey Remi,<br>
>> >>><br>
>> >>> Thanks for your reply. So in your mind you think we should have a<br>
>> >>> database of say 300 polygons, and then we run a command like this<br>
>> >>> right?<br>
>> >>><br>
>> >>> SELECT<br>
>> >>> ST_Collect(st_setsrid(ST_POINT(x,y),27700))<br>
>> >>> FROM<br>
>> >>> generate_series(53320::int, 667380::int,20) as x,<br>
>> >>> generate_series(7780::int, 1226580::int,20) as y,<br>
>> >>> road_polygons_table<br>
>> >>> WHERE<br>
>> >>> st_intersects(road_polygons_table.the_geom,<br>
>> >>> st_setsrid(ST_POINT(x,y),27700))<br>
>> >>><br>
>> >>> What do you think?<br>
>> >>><br>
>> >>> Thanks<br>
>> >>><br>
>> >>> James<br>
>> >>><br>
>> >>><br>
>> >>><br>
>> >>><br>
>> >>> On 11 November 2013 14:51, Rémi Cura <<a href="mailto:remi.cura@gmail.com">remi.cura@gmail.com</a>> wrote:<br>
>> >>> > Hey,<br>
>> >>> > the whole point on using a sgbds like postgis is using index.<br>
>> >>> ><br>
>> >>> > If you have one line you don't use indexes...<br>
>> >>> ><br>
>> >>> > So in short, don't make one polygon with a buffer of all the road,<br>
>> >>> > but a<br>
>> >>> > table with a line for the buffer for every road, then do you<br>
>> >>> > computation<br>
>> >>> > to<br>
>> >>> > create grid of points inside of polygons, then union the result of<br>
>> >>> > points!<br>
>> >>> ><br>
>> >>> > And it s always a bad idea to run a function on big data when you<br>
>> >>> > have<br>
>> >>> > not<br>
>> >>> > tested it fully (including scaling behavior) on small data.<br>
>> >>> ><br>
>> >>> ><br>
>> >>> > Cheers<br>
>> >>> > Rémi-C<br>
>> >>> ><br>
>> >>> ><br>
>> >>> > 2013/11/11 James David Smith <<a href="mailto:james.david.smith@gmail.com">james.david.smith@gmail.com</a>><br>
>> >>> >><br>
>> >>> >> Hi all,<br>
>> >>> >><br>
>> >>> >> Would appreciate some advice on the best way to accomplish this<br>
>> >>> >> please.<br>
>> >>> >><br>
>> >>> >> Our situation is that we have a single polygon which has been<br>
>> >>> >> created<br>
>> >>> >> by buffering all of the major roads in the UK. Projection is OSGB36<br>
>> >>> >> (27700). Obviously it's quite a big polygon.<br>
>> >>> >><br>
>> >>> >> -->  SELECT st_area(geom) FROM roadbufferunion;<br>
>> >>> >>      st_area<br>
>> >>> >> ------------------<br>
>> >>> >>  77228753220.8271<br>
>> >>> >><br>
>> >>> >> What we now want to do is create a regular grid of 20 metre x 20<br>
>> >>> >> metre<br>
>> >>> >> points instead the polygon area. So we wrote this function (based<br>
>> >>> >> on<br>
>> >>> >> some googling, apologies for not being able to recall the exact<br>
>> >>> >> person<br>
>> >>> >> who originally wrote it):<br>
>> >>> >><br>
>> >>> >> CREATE OR REPLACE FUNCTION makegrid(geometry, integer, integer)<br>
>> >>> >> RETURNS geometry AS<br>
>> >>> >> 'SELECT ST_Collect(st_setsrid(ST_POINT(x,y),$3)) FROM<br>
>> >>> >>   generate_series(53320::int, 667380::int,$2) as x<br>
>> >>> >>   ,generate_series(7780::int, 1226580::int,$2) as y<br>
>> >>> >> where st_intersects($1,st_setsrid(ST_POINT(x,y),$3))'<br>
>> >>> >> LANGUAGE sql<br>
>> >>> >><br>
>> >>> >> and we then run this by doing the following:<br>
>> >>> >><br>
>> >>> >> SELECT st_x((ST_Dump(makegrid(geom, 20, 27700))).geom) as x,<br>
>> >>> >> st_y((ST_Dump(makegrid(geom, 20, 27700))).geom) as y INTO<br>
>> >>> >> grid_points<br>
>> >>> >> from roadbufferunion;<br>
>> >>> >><br>
>> >>> >> However after over 2 days of the query running on a pretty powerful<br>
>> >>> >> linux cluster, we still have no result.  I'm not sure if it is<br>
>> >>> >> actually running or not to be honest.<br>
>> >>> >><br>
>> >>> >> Does the query look right?<br>
>> >>> >> Any ideas how we can make it run quicker?<br>
>> >>> >><br>
>> >>> >> Thanks<br>
>> >>> >><br>
>> >>> >> James<br>
>> >>> >> _______________________________________________<br>
>> >>> >> postgis-users mailing list<br>
>> >>> >> <a href="mailto:postgis-users@lists.osgeo.org">postgis-users@lists.osgeo.org</a><br>
>> >>> >> <a href="http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users" target="_blank">http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users</a><br>
>> >>> ><br>
>> >>> ><br>
>> >>> ><br>
>> >>> > _______________________________________________<br>
>> >>> > postgis-users mailing list<br>
>> >>> > <a href="mailto:postgis-users@lists.osgeo.org">postgis-users@lists.osgeo.org</a><br>
>> >>> > <a href="http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users" target="_blank">http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users</a><br>
>> >>> _______________________________________________<br>
>> >>> postgis-users mailing list<br>
>> >>> <a href="mailto:postgis-users@lists.osgeo.org">postgis-users@lists.osgeo.org</a><br>
>> >>> <a href="http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users" target="_blank">http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users</a><br>
>> >><br>
>> >><br>
>> >><br>
>> >> _______________________________________________<br>
>> >> postgis-users mailing list<br>
>> >> <a href="mailto:postgis-users@lists.osgeo.org">postgis-users@lists.osgeo.org</a><br>
>> >> <a href="http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users" target="_blank">http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users</a><br>
>> _______________________________________________<br>
>> postgis-users mailing list<br>
>> <a href="mailto:postgis-users@lists.osgeo.org">postgis-users@lists.osgeo.org</a><br>
>> <a href="http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users" target="_blank">http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users</a><br>
><br>
><br>
><br>
> _______________________________________________<br>
> postgis-users mailing list<br>
> <a href="mailto:postgis-users@lists.osgeo.org">postgis-users@lists.osgeo.org</a><br>
> <a href="http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users" target="_blank">http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users</a><br>
_______________________________________________<br>
postgis-users mailing list<br>
<a href="mailto:postgis-users@lists.osgeo.org">postgis-users@lists.osgeo.org</a><br>
<a href="http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users" target="_blank">http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users</a><br>
</div></div></blockquote></div><br></div>