[prev in list] [next in list] [prev in thread] [next in thread] 

List:       postgis-users
Subject:    Re: [postgis-users] Simple ST_Value(rast, point)
From:       Andreas_Forø_Tollefsen <andreasft () gmail ! com>
Date:       2011-09-22 15:59:50
Message-ID: CAGMz7D=Z6gyE3MV5XJQbs7ejm6MgnHMzGFKz76u12n0Y054-yQ () mail ! gmail ! com
[Download RAW message or body]

[Attachment #2 (multipart/related)]

[Attachment #4 (multipart/alternative)]


I managed to get it working.
However, I receive the 'lower bound of FOR loop cannot be null'.

Why does i.e. this query give this error? It does not matter if I exclude or
include no data values, or change the no data value of my raster.
Query:
SELECT foo.gid::integer, 1990, CAST((foo.geomval).val AS integer) as val
FROM
(SELECT a.rid, g.gid, ST_Intersection(a.rast, g.centroid) AS geomval
FROM pop90 a, priogrid_land g WHERE ST_Intersects(a.rast, g.centroid)) AS
foo;

Result:
ERROR:  lower bound of FOR loop cannot be null
CONTEXT:  PL/pgSQL function "_st_intersects" line 96 at FOR with integer
loop variable

********** Error **********

ERROR: lower bound of FOR loop cannot be null
SQL state: 22004
Context: PL/pgSQL function "_st_intersects" line 96 at FOR with integer loop
variable

Thanks,

Andreas


2011/9/20 Chris Hermansen <chris.hermansen@tecogroup.ca>

> Hi Andreas,
> 
> If you need priogrid.gid (you might want to name it more suggestively) in
> your output table in my example you would leave the table definition as I
> originally stated, and you would join the priogrid and the p90, p95, etc etc
> tables together in each INSERT/SELECT statement:
> 
> CREATE TABLE npopgrid (
> priogrid_gid integer,
> year integer,
> pop integer,
> primary key (priogrid_gid, year));
> 
> INSERT INTO npopgrid (priogrid_gid, year, pop)
> SELECT priogrid.gid, 90::integer, ST_Value(p90.rast,
> SetSRID(p.centroid,4326))::integer FROM priogrid AS p, pop90 as p90
> 
> WHERE ST_Intersects(p90.rast, p.centroid)
> UNION...
> 
> in that case it makes sense to make the primary key (priogrid_gid,year)
> because the priogrid.gid itself will re-appear for each year.
> 
> 
> 2011/9/20 Andreas Forø Tollefsen <andreasft@gmail.com>
> 
> > Hi Chris,
> > Thanks for your suggestions.
> > It does make more sense. However, the gid thing comes from the priogrid
> > table which is the point table.
> > 
> > I think I solved the issue with the error.
> > No data for the raster is -3.40282e+38, so excluding no data values makes
> > the query work.
> > But not excluding the no data values makesthe function crash.
> > 
> > The population data can be downloaded here if someone wants to replicate.
> > 
> > http://sedac.ciesin.columbia.edu/gpw/global.jsp?file=gpwv3&data=pcount&type=wrk&resolut=half&year=90&version=gpw-v3
> >  
> > Andreas
> > 
> > 
> > 
> > 2011/9/20 Chris Hermansen <chris.hermansen@tecogroup.ca>
> > 
> > > Andreas, possibly with a more normalized data model you can make this
> > > work.
> > > 
> > > Consider a table that looks like
> > > 
> > > CREATE TABLE npopgrid (
> > > gid integer,
> > > year integer,
> > > pop integer,
> > > primary key (gid, year));
> > > 
> > > Then you can efficiently put data into it like this:
> > > 
> > > INSERT INTO npopgrid (gid, year, pop)
> > > SELECT gid, 90::integer, ST_Value(p90.rast,
> > > SetSRID(p.centroid,4326))::integer from p90
> > > UNION
> > > SELECT gid, 95::integer, ST_Value(p95.rast,
> > > SetSRID(p.centroid,4326))::integer from p95
> > > ....
> > > 
> > > This - to me at least - makes more sense because I assume that p90 has
> > > the population from 90 at every cell in the raster, p95 at every cell in the
> > > raster from 95, etc.  The query the way you structured it originally
> > > requires some kind of table join exercise and you really don't need that if
> > > your data model is normalized like the above.
> > > 
> > > In the end I'm not certain about the "gid" thing because I'm not sure
> > > which table you expect it to come from.  If your gid is unique across all of
> > > your tables p90, p95, etc etc then you are ok but I suspect it's not.
> > > Therefore it's good to have the primary key containing the gid and the
> > > year...
> > > 
> > > Does this make sense?
> > > 
> > > If you really want an unnormalized version of this in the end (think
> > > about that - why would you want such a thing? if you don't fully understand
> > > normalized data models, perhaps this is a good moment to read about it) you
> > > can denormalize it inexpensively from this structure (exercise left to the
> > > reader... :-0)
> > > 
> > > 2011/9/19 Andreas Forø Tollefsen <andreasft@gmail.com>
> > > 
> > > > Somehow that result in an error.
> > > > 
> > > > Query:
> > > > DROP TABLE IF EXISTS popgrid;
> > > > 
> > > > SELECT gid,
> > > > ST_Value(p90.rast, SetSRID(p.centroid,4326)) as pop90,
> > > > ST_Value(p95.rast, SetSRID(p.centroid,4326)) as pop95,
> > > > ST_Value(p00.rast, SetSRID(p.centroid,4326)) as pop00,
> > > > ST_Value(p05.rast, SetSRID(p.centroid,4326)) as pop05,
> > > > ST_Value(p10.rast, SetSRID(p.centroid,4326)) as pop10,
> > > > ST_Value(p15.rast, SetSRID(p.centroid,4326)) as pop15
> > > > INTO popgrid
> > > > FROM pop90 p90, pop95 p95, pop00 p00, pop05 p05, pop10 p10, pop15 p15,
> > > > priogrid p
> > > > WHERE ST_Intersects(p90.rast, p.centroid)
> > > > AND ST_Intersects(p95.rast, p.centroid)
> > > > AND ST_Intersects(p00.rast, p.centroid)
> > > > AND ST_Intersects(p05.rast, p.centroid)
> > > > AND ST_Intersects(p10.rast, p.centroid)
> > > > AND ST_Intersects(p15.rast, p.centroid)
> > > > ;
> > > > 
> > > > Result:
> > > > ERROR:  lower bound of FOR loop cannot be null
> > > > CONTEXT:  PL/pgSQL function "_st_intersects" line 96 at FOR with
> > > > integer loop variable
> > > > 
> > > > ********** Error **********
> > > > 
> > > > ERROR: lower bound of FOR loop cannot be null
> > > > SQL state: 22004
> > > > Context: PL/pgSQL function "_st_intersects" line 96 at FOR with
> > > > integer loop variable
> > > > 
> > > > Something fishy going on here?
> > > > 
> > > > Rev 7862.
> > > > 
> > > > 2011/9/19 Paragon Corporation <lr@pcorp.us>:
> > > > > Andreas,
> > > > > 
> > > > > Off hand I think you are missing some intersects checks and are
> > > > therefore
> > > > > doing much more work than you need to
> > > > > 
> > > > > Don't you want to check only raasters where
> > > > > 
> > > > > ST_Intersects(p90.rast, p.centroid) AND ST_Intersects(p95.rast,
> > > > p.centroid)
> > > > > 
> > > > > etc etc.
> > > > > 
> > > > > Regina
> > > > > http://www.postgis.us
> > > > > 
> > > > > 
> > > > > > -----Original Message-----
> > > > > > From: postgis-users-bounces@postgis.refractions.net
> > > > > > [mailto:postgis-users-bounces@postgis.refractions.net] On
> > > > > > Behalf Of Andreas Forø Tollefsen
> > > > > > Sent: Monday, September 19, 2011 11:51 AM
> > > > > > To: PostGIS Users Discussion
> > > > > > Subject: [postgis-users] Simple ST_Value(rast, point)
> > > > > > 
> > > > > > Hi all,
> > > > > > 
> > > > > > I just wanted to get some feedback on my query. Basically, it
> > > > > > is simply to create a new table with the raster values of my
> > > > > > 6 population rasters overlapping my regularly separated point
> > > > dataset.
> > > > > > 
> > > > > > Is this an optimal way of doing this? Reason I ask is that it
> > > > > > does take a lot of time.
> > > > > > 
> > > > > > DROP TABLE IF EXISTS popgrid;
> > > > > > 
> > > > > > SELECT gid,
> > > > > > ST_Value(p90.rast, SetSRID(p.centroid,4326)) as pop90,
> > > > > > ST_Value(p95.rast, SetSRID(p.centroid,4326)) as pop95,
> > > > > > ST_Value(p00.rast, SetSRID(p.centroid,4326)) as pop00,
> > > > > > ST_Value(p05.rast, SetSRID(p.centroid,4326)) as pop05,
> > > > > > ST_Value(p10.rast, SetSRID(p.centroid,4326)) as pop10,
> > > > > > ST_Value(p15.rast, SetSRID(p.centroid,4326)) as pop15 INTO
> > > > > > popgrid FROM pop90 p90, pop95 p95, pop00 p00, pop05 p05,
> > > > > > pop10 p10, pop15 p15, priogrid p ;
> > > > > > 
> > > > > > Best,
> > > > > > Andreas
> > > > > > _______________________________________________
> > > > > > postgis-users mailing list
> > > > > > postgis-users@postgis.refractions.net
> > > > > > http://postgis.refractions.net/mailman/listinfo/postgis-users
> > > > > > 
> > > > > 
> > > > > 
> > > > > _______________________________________________
> > > > > postgis-users mailing list
> > > > > postgis-users@postgis.refractions.net
> > > > > http://postgis.refractions.net/mailman/listinfo/postgis-users
> > > > > 
> > > > _______________________________________________
> > > > postgis-users mailing list
> > > > postgis-users@postgis.refractions.net
> > > > http://postgis.refractions.net/mailman/listinfo/postgis-users
> > > > 
> > > 
> > > 
> > > 
> > > --
> > > Chris Hermansen
> > > *Vice President*
> > > 
> > > TECO Natural Resource Group Limited
> > > 301 · 958 West 8th Avenue
> > > Vancouver BC CANADA · V5Z 1E5
> > > Tel +1.604.714.2878 · Cel +1.778.840.4625
> > > 
> > > _______________________________________________
> > > postgis-users mailing list
> > > postgis-users@postgis.refractions.net
> > > http://postgis.refractions.net/mailman/listinfo/postgis-users
> > > 
> > > 
> > 
> > _______________________________________________
> > postgis-users mailing list
> > postgis-users@postgis.refractions.net
> > http://postgis.refractions.net/mailman/listinfo/postgis-users
> > 
> > 
> 
> 
> --
> Chris Hermansen
> *Vice President*
> 
> TECO Natural Resource Group Limited
> 301 · 958 West 8th Avenue
> Vancouver BC CANADA · V5Z 1E5
> Tel +1.604.714.2878 · Cel +1.778.840.4625
> 
> _______________________________________________
> postgis-users mailing list
> postgis-users@postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-users
> 
> 


[Attachment #7 (text/html)]

I managed to get it working.<br>However, I receive the &#39;lower bound of FOR loop \
cannot be null&#39;.<br><br>Why does i.e. this query give this error? It does not \
matter if I exclude or include no data values, or change the no data value of my \
raster.<br> Query:<br>SELECT foo.gid::integer, 1990, CAST((foo.geomval).val AS \
integer) as val<br>FROM<br>(SELECT a.rid, g.gid, ST_Intersection(a.rast, g.centroid) \
AS geomval <br>FROM pop90 a, priogrid_land g WHERE ST_Intersects(a.rast, g.centroid)) \
AS foo;<br> <br>Result:<br>ERROR:  lower bound of FOR loop cannot be null<br>CONTEXT: \
PL/pgSQL function &quot;_st_intersects&quot; line 96 at FOR with integer loop \
variable<br><br>********** Error **********<br><br>ERROR: lower bound of FOR loop \
cannot be null<br> SQL state: 22004<br>Context: PL/pgSQL function \
&quot;_st_intersects&quot; line 96 at FOR with integer loop \
variable<br><br>Thanks,<br><br>Andreas<br><br><br><div class="gmail_quote">2011/9/20 \
Chris Hermansen <span dir="ltr">&lt;<a \
href="mailto:chris.hermansen@tecogroup.ca">chris.hermansen@tecogroup.ca</a>&gt;</span><br>
 <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc \
solid;padding-left:1ex;">Hi Andreas,<br><br>If you need priogrid.gid (you might want \
to name it more suggestively) in your output table in my example you would leave the \
table definition as I originally stated, and you would join the priogrid and the p90, \
p95, etc etc tables together in each INSERT/SELECT statement:<br>

<br>CREATE TABLE npopgrid (<br>    priogrid_gid integer,<br>    year integer,<br>    \
pop integer,<br>    primary key (priogrid_gid, year));<br><br>INSERT INTO npopgrid \
(priogrid_gid, year, pop)<br>SELECT priogrid.gid, 90::integer, ST_Value(p90.rast, \
SetSRID(p.centroid,4326))::integer FROM priogrid AS p, pop90 as p90<div class="im"> \
<br> WHERE ST_Intersects(p90.rast, p.centroid)<br></div>UNION...<br><br>in that case \
it makes sense to make the primary key (priogrid_gid,year) because the priogrid.gid \
itself will re-appear for each year.<div><div></div><div class="h5"> <br><br><div \
class="gmail_quote"> 2011/9/20 Andreas Forø Tollefsen <span dir="ltr">&lt;<a \
href="mailto:andreasft@gmail.com" \
target="_blank">andreasft@gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" \
style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Hi Chris,<br>Thanks for your suggestions.<br>It does make more sense. However, the \
gid thing comes from the priogrid table which is the point table.<br><br>I think I \
solved the issue with the error.<br>No data for the raster is -3.40282e+38, so \
excluding no data values makes the query work.<br>


But not excluding the no data values makesthe function crash.<br><br>The population \
data can be downloaded here if someone wants to replicate.<br><a \
href="http://sedac.ciesin.columbia.edu/gpw/global.jsp?file=gpwv3&amp;data=pcount&amp;type=wrk&amp;resolut=half&amp;year=90&amp;version=gpw-v3" \
target="_blank">http://sedac.ciesin.columbia.edu/gpw/global.jsp?file=gpwv3&amp;data=pcount&amp;type=wrk&amp;resolut=half&amp;year=90&amp;version=gpw-v3</a><br>


<font color="#888888">
<br>Andreas</font><div><div></div><div><br><br><br><div class="gmail_quote">2011/9/20 \
Chris Hermansen <span dir="ltr">&lt;<a href="mailto:chris.hermansen@tecogroup.ca" \
target="_blank">chris.hermansen@tecogroup.ca</a>&gt;</span><br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc \
solid;padding-left:1ex"> Andreas, possibly with a more normalized data model you can \
make this work.<br><br>Consider a table that looks like<br><br>CREATE TABLE npopgrid \
(<br>    gid integer,<br>    year integer,<br>    pop integer,<br>    primary key \
(gid, year));<br>



<br>Then you can efficiently put data into it like this:<br><br>INSERT INTO npopgrid \
(gid, year, pop)<br>SELECT gid, 90::integer, ST_Value(p90.rast, \
SetSRID(p.centroid,4326))::integer from p90<br>UNION<br>SELECT gid, 95::integer, \
ST_Value(p95.rast, SetSRID(p.centroid,4326))::integer from p95<br>



....<br><br>This - to me at least - makes more sense because I assume that p90 has \
the population from 90 at every cell in the raster, p95 at every cell in the raster \
from 95, etc.  The query the way you structured it originally requires some kind of \
table join exercise and you really don&#39;t need that if your data model is \
normalized like the above.<br>



<br>In the end I&#39;m not certain about the &quot;gid&quot; thing because I&#39;m \
not sure which table you expect it to come from.  If your gid is unique across all of \
your tables p90, p95, etc etc then you are ok but I suspect it&#39;s not.  Therefore \
it&#39;s good to have the primary key containing the gid and the year...<br>



<br>Does this make sense?<br><br>If you really want an unnormalized version of this \
in the end (think about that - why would you want such a thing? if you don&#39;t \
fully understand normalized data models, perhaps this is a good moment to read about \
it) you can denormalize it inexpensively from this structure (exercise left to the \
reader... :-0)<br>



<br><div class="gmail_quote"><div>2011/9/19 Andreas Forø Tollefsen <span \
dir="ltr">&lt;<a href="mailto:andreasft@gmail.com" \
target="_blank">andreasft@gmail.com</a>&gt;</span><br></div><div><div></div><div> \
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc \
solid;padding-left:1ex"> Somehow that result in an error.<br>
<br>
Query:<br>
DROP TABLE IF EXISTS popgrid;<br>
<br>
SELECT gid,<br>
ST_Value(p90.rast, SetSRID(p.centroid,4326)) as pop90,<br>
ST_Value(p95.rast, SetSRID(p.centroid,4326)) as pop95,<br>
ST_Value(p00.rast, SetSRID(p.centroid,4326)) as pop00,<br>
ST_Value(p05.rast, SetSRID(p.centroid,4326)) as pop05,<br>
ST_Value(p10.rast, SetSRID(p.centroid,4326)) as pop10,<br>
ST_Value(p15.rast, SetSRID(p.centroid,4326)) as pop15<br>
INTO popgrid<br>
FROM pop90 p90, pop95 p95, pop00 p00, pop05 p05, pop10 p10, pop15 p15,<br>
priogrid p<br>
WHERE ST_Intersects(p90.rast, p.centroid)<br>
AND ST_Intersects(p95.rast, p.centroid)<br>
AND ST_Intersects(p00.rast, p.centroid)<br>
AND ST_Intersects(p05.rast, p.centroid)<br>
AND ST_Intersects(p10.rast, p.centroid)<br>
AND ST_Intersects(p15.rast, p.centroid)<br>
;<br>
<br>
Result:<br>
ERROR:  lower bound of FOR loop cannot be null<br>
CONTEXT:  PL/pgSQL function &quot;_st_intersects&quot; line 96 at FOR with<br>
integer loop variable<br>
<br>
********** Error **********<br>
<br>
ERROR: lower bound of FOR loop cannot be null<br>
SQL state: 22004<br>
Context: PL/pgSQL function &quot;_st_intersects&quot; line 96 at FOR with<br>
integer loop variable<br>
<br>
Something fishy going on here?<br>
<br>
Rev 7862.<br>
<br>
2011/9/19 Paragon Corporation &lt;<a href="mailto:lr@pcorp.us" \
target="_blank">lr@pcorp.us</a>&gt;:<br> &gt; Andreas,<br>
&gt;<br>
&gt; Off hand I think you are missing some intersects checks and are therefore<br>
&gt; doing much more work than you need to<br>
&gt;<br>
&gt; Don&#39;t you want to check only raasters where<br>
&gt;<br>
&gt; ST_Intersects(p90.rast, p.centroid) AND ST_Intersects(p95.rast, p.centroid)<br>
&gt;<br>
&gt; etc etc.<br>
&gt;<br>
&gt; Regina<br>
&gt; <a href="http://www.postgis.us" target="_blank">http://www.postgis.us</a><br>
&gt;<br>
&gt;<br>
&gt;&gt; -----Original Message-----<br>
&gt;&gt; From: <a href="mailto:postgis-users-bounces@postgis.refractions.net" \
target="_blank">postgis-users-bounces@postgis.refractions.net</a><br> &gt;&gt; \
[mailto:<a href="mailto:postgis-users-bounces@postgis.refractions.net" \
target="_blank">postgis-users-bounces@postgis.refractions.net</a>] On<br> &gt;&gt; \
Behalf Of Andreas Forø Tollefsen<br> &gt;&gt; Sent: Monday, September 19, 2011 11:51 \
AM<br> &gt;&gt; To: PostGIS Users Discussion<br>
&gt;&gt; Subject: [postgis-users] Simple ST_Value(rast, point)<br>
&gt;&gt;<br>
&gt;&gt; Hi all,<br>
&gt;&gt;<br>
&gt;&gt; I just wanted to get some feedback on my query. Basically, it<br>
&gt;&gt; is simply to create a new table with the raster values of my<br>
&gt;&gt; 6 population rasters overlapping my regularly separated point dataset.<br>
&gt;&gt;<br>
&gt;&gt; Is this an optimal way of doing this? Reason I ask is that it<br>
&gt;&gt; does take a lot of time.<br>
&gt;&gt;<br>
&gt;&gt; DROP TABLE IF EXISTS popgrid;<br>
&gt;&gt;<br>
&gt;&gt; SELECT gid,<br>
&gt;&gt; ST_Value(p90.rast, SetSRID(p.centroid,4326)) as pop90,<br>
&gt;&gt; ST_Value(p95.rast, SetSRID(p.centroid,4326)) as pop95,<br>
&gt;&gt; ST_Value(p00.rast, SetSRID(p.centroid,4326)) as pop00,<br>
&gt;&gt; ST_Value(p05.rast, SetSRID(p.centroid,4326)) as pop05,<br>
&gt;&gt; ST_Value(p10.rast, SetSRID(p.centroid,4326)) as pop10,<br>
&gt;&gt; ST_Value(p15.rast, SetSRID(p.centroid,4326)) as pop15 INTO<br>
&gt;&gt; popgrid FROM pop90 p90, pop95 p95, pop00 p00, pop05 p05,<br>
&gt;&gt; pop10 p10, pop15 p15, priogrid p ;<br>
&gt;&gt;<br>
&gt;&gt; Best,<br>
&gt;&gt; Andreas<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; postgis-users mailing list<br>
&gt;&gt; <a href="mailto:postgis-users@postgis.refractions.net" \
target="_blank">postgis-users@postgis.refractions.net</a><br> &gt;&gt; <a \
href="http://postgis.refractions.net/mailman/listinfo/postgis-users" \
target="_blank">http://postgis.refractions.net/mailman/listinfo/postgis-users</a><br> \
&gt;&gt;<br> &gt;<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; postgis-users mailing list<br>
&gt; <a href="mailto:postgis-users@postgis.refractions.net" \
target="_blank">postgis-users@postgis.refractions.net</a><br> &gt; <a \
href="http://postgis.refractions.net/mailman/listinfo/postgis-users" \
target="_blank">http://postgis.refractions.net/mailman/listinfo/postgis-users</a><br> \
&gt;<br> _______________________________________________<br>
postgis-users mailing list<br>
<a href="mailto:postgis-users@postgis.refractions.net" \
target="_blank">postgis-users@postgis.refractions.net</a><br> <a \
href="http://postgis.refractions.net/mailman/listinfo/postgis-users" \
target="_blank">http://postgis.refractions.net/mailman/listinfo/postgis-users</a><br> \
</blockquote></div></div></div><font color="#888888"><br><br clear="all"><br>-- \
<br><font face="SANS" size="3"><span style="border-collapse:collapse;color:rgb(32, \
32, 32);font-family:&#39;Droid Sans&#39;, arial, sans-serif;font-size:13px"><font \
style="font-family:arial,helvetica,sans-serif" face="SANS" size="3">Chris \
Hermansen</font><br style="font-family:arial,helvetica,sans-serif">



<i style="font-family:arial,helvetica,sans-serif"><font size="2">Vice \
President</font></i><br style="font-family:arial,helvetica,sans-serif"><img \
style="font-family:arial,helvetica,sans-serif" \
src="cid:part1.07020105.06030603@tecogroup.ca" align="bottom" border="0"><br \
style="font-family:arial,helvetica,sans-serif">



<font style="font-family:arial,helvetica,sans-serif" face="SANS" size="2">TECO \
Natural Resource Group Limited</font><br \
style="font-family:arial,helvetica,sans-serif"><font \
style="font-family:arial,helvetica,sans-serif" face="SANS" size="2">301 · 958 West \
8th Avenue</font><br style="font-family:arial,helvetica,sans-serif">



<font style="font-family:arial,helvetica,sans-serif" face="SANS" size="2">Vancouver \
BC CANADA · V5Z 1E5</font><br style="font-family:arial,helvetica,sans-serif"><font \
face="SANS" size="2"><span style="font-family:arial,helvetica,sans-serif">Tel <a \
href="tel:%2B1.604.714.2878" value="+16047142878" target="_blank">+1.604.714.2878</a> \
· Cel +1.778.840.46</span>25</font></span></font><br>




</font><br>_______________________________________________<br>
postgis-users mailing list<br>
<a href="mailto:postgis-users@postgis.refractions.net" \
target="_blank">postgis-users@postgis.refractions.net</a><br> <a \
href="http://postgis.refractions.net/mailman/listinfo/postgis-users" \
target="_blank">http://postgis.refractions.net/mailman/listinfo/postgis-users</a><br> \
<br></blockquote></div><br> \
</div></div><br>_______________________________________________<br> postgis-users \
mailing list<br> <a href="mailto:postgis-users@postgis.refractions.net" \
target="_blank">postgis-users@postgis.refractions.net</a><br> <a \
href="http://postgis.refractions.net/mailman/listinfo/postgis-users" \
target="_blank">http://postgis.refractions.net/mailman/listinfo/postgis-users</a><br> \
<br></blockquote></div><br><br clear="all"><br>-- <br><font face="SANS" \
size="3"><span style="border-collapse:collapse;color:rgb(32, 32, \
32);font-family:&#39;Droid Sans&#39;, arial, sans-serif;font-size:13px"><font \
style="font-family:arial,helvetica,sans-serif" face="SANS" size="3">Chris \
Hermansen</font><br style="font-family:arial,helvetica,sans-serif">

<i style="font-family:arial,helvetica,sans-serif"><font size="2">Vice \
President</font></i><br style="font-family:arial,helvetica,sans-serif"><img \
style="font-family:arial,helvetica,sans-serif" \
src="cid:part1.07020105.06030603@tecogroup.ca" align="bottom" border="0"><br \
style="font-family:arial,helvetica,sans-serif">

<font style="font-family:arial,helvetica,sans-serif" face="SANS" size="2">TECO \
Natural Resource Group Limited</font><br \
style="font-family:arial,helvetica,sans-serif"><font \
style="font-family:arial,helvetica,sans-serif" face="SANS" size="2">301 · 958 West \
8th Avenue</font><br style="font-family:arial,helvetica,sans-serif">

<font style="font-family:arial,helvetica,sans-serif" face="SANS" size="2">Vancouver \
BC CANADA · V5Z 1E5</font><br style="font-family:arial,helvetica,sans-serif"><font \
face="SANS" size="2"><span style="font-family:arial,helvetica,sans-serif">Tel <a \
href="tel:%2B1.604.714.2878" value="+16047142878" target="_blank">+1.604.714.2878</a> \
· Cel +1.778.840.46</span>25</font></span></font><br>


</div></div><br>_______________________________________________<br>
postgis-users mailing list<br>
<a href="mailto:postgis-users@postgis.refractions.net">postgis-users@postgis.refractions.net</a><br>
 <a href="http://postgis.refractions.net/mailman/listinfo/postgis-users" \
target="_blank">http://postgis.refractions.net/mailman/listinfo/postgis-users</a><br> \
<br></blockquote></div><br>

--20cf30563d5b58fa7104ad89c83d--


["teco_sig.jpg" (image/jpeg)]

_______________________________________________
postgis-users mailing list
postgis-users@postgis.refractions.net
http://postgis.refractions.net/mailman/listinfo/postgis-users


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic