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

List:       postgis-users
Subject:    Re: [postgis-users] simple point-in-polygon problem
From:       pere roca <peroc79 () gmail ! com>
Date:       2007-12-18 16:08:11
Message-ID: 14399846.post () talk ! nabble ! com
[Download RAW message or body]



   Kevin,Pedro
   this is not what I'm looking for... 
   The problem is that....

> If I don't have a "link" between the two tables that says like: "where
> polygon.name=point.poly_id"...do I HAVE TO construct a pgsql function to
> loop over all the polygons?
 
   Maybe sounds stupid, but isn't the spatial constraint (point-contained in
polygon) a "link" itself? why can't I update row by row depending on the
number of points each polygon has? I think the solution has to be a function
or php programming...

  Cheers,
  Pere



Kevin Neufeld wrote:
> 
> Is this what you are after? (Note, this is untested)
> 
> UPDATE polygon SET number_points = foo.count
> FROM (
> SELECT polygon.name, count(point.gid) AS count
> FROM point, polygon
> WHERE ST_Contains(polygon.the_geom, point.the_geom)
> GROUP BY polygon.name
> ) AS foo
> WHERE polygon.name = foo.name;
> 
> -- Kevin
> 
> pere roca wrote:
> > hi!
> > please, I need some help with a query to extract points from polygons and
> > update the value (count points) in a field of the polygon table. This
> > counts
> > gives me the name of polygon and counts points-in-polygon. Nice. 
> > 
> > select polygon.name, count(points.gid)  from points, polygon where
> > points.the_geom && polygon.the_geom and Contains
> > (polygon.the_geom,points.the_geom) group by polygon.name
> > 
> > Now I need to update the number_of_points field of polygon table.
> > 
> > update polygon set number_points=
> > 
> > (
> > select count(point.gid) from
> > point, polygon 
> > where point.the_geom && polygon.the_geom and 
> > Contains (polygon.the_geom,point.the_geom) 
> > group by polygon.name
> > ) 
> > 
> > from point where point.the_geom && polygon.the_geom and
> > Contains(polygon.the_geom, point.the_geom) 
> > 
> > It just fills the "number_points" field of the polygons that intersect
> > with
> > points, BUT the value assigned is the same for all (that's the total
> > COUNT
> > of all points, because all of these points are inside a polygon). 
> > 
> > I've checked many more sentences with no success.
> > Of course if at the end of the sentence I add "where polygon.name="x",
> > will
> > update ALL the values with the number of points that are only inside this
> > polygon. 
> > If I don't have a "link" between the two tables that says like: "where
> > polygon.name=point.poly_id"...do I HAVE TO construct a pgsql function to
> > loop over all the polygons?
> > 
> > Is Contains the fastest way to work with these kind of problems?
> > Thanks a lot,
> > Pere
> > 
> _______________________________________________
> postgis-users mailing list
> postgis-users@postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-users
> 
> 

-- 
View this message in context: \
http://www.nabble.com/simple-point-in-polygon-problem-tp14373929p14399846.html Sent \
from the PostGIS - User mailing list archive at Nabble.com.

_______________________________________________
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