I think you are right. That's what I get for copying other peoples code assuming it was doing the right thing and reformatting it.
-----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Andy Anderson Sent: Friday, May 30, 2008 9:50 PM To: PostGIS Users Discussion Subject: Re: [postgis-users] Attributes update I think what Lucas wants is actually the mirror statement: UPDATE parcels SET landuse = land_use.type FROM landuse WHERE ST_Within(centroid(parcels.the_geom),land_use.the_geom); -- Andy On May 30, 2008, at 7:54 AM, Obe, Regina wrote: > Markus, > > Rule of thumb for relation operations - I think you always read it A > function_name B > > So A within B -> Within(A,B) > > I think that holds true for all the spatial relation functions in > PostGIS. > > Lucas - Markus gave you the correlated sub query approach. You can > also do it without a subquery. Which one is faster depends on how big > your data sets are I think. The non-correlated I think generally > works better (especially for large data sets) (make sure to have > indexes on both geom fields). > > I think the correlated sub query always forces a nested loop join. > > > Below is a non-sub query way of doing it. For the new versions of > PostGIS you can also replace the && Within with just ST_Within. > > UPDATE land_use SET type = parcels.landuse FROM parcels WHERE > ST_Within(centroid(parcels.the_geom),land_use.the_geom); > > Hope that helps, > Regina > > -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On Behalf Of > Markus Schaber > Sent: Friday, May 30, 2008 7:26 AM > To: postgis-users@postgis.refractions.net > Subject: Re: [postgis-users] Attributes update > > Hi, Lucas, > > "Lucas Mueller" <[EMAIL PROTECTED]> wrote: > > >> I have two polygon layers (let's say Parcels and Land_use). I would > like to >> assign the attribute Land_use.type to the Parcels.landuse column by a > query >> that assigns a certain land use type to a parcel if the centroid of > the >> parcel is within a certain land use polygon. I hope to be clear > enough... >> Any idea on how to proceed? > > Try something like: > > update land_use set type=(select parcels.landuse FROM parcels where > land_use.the_geom && parcels.the_geom AND > within(centroid(parcels.the_geom),land_use.the_geom)); > > Btw, I tend to mix up the argument order of within and contains, so > please double-check. > > > Regards, > Markus > > -- > Markus Schaber | Logical Tracking&Tracing International AG > Dipl. Inf. | Software Development GIS > > Fight against software patents in Europe! www.ffii.org > www.nosoftwarepatents.org > _______________________________________________ > postgis-users mailing list > postgis-users@postgis.refractions.net > http://postgis.refractions.net/mailman/listinfo/postgis-users > ----------------------------------------- > The substance of this message, including any attachments, may be > confidential, legally privileged and/or exempt from disclosure > pursuant to Massachusetts law. It is intended solely for the > addressee. If you received this in error, please contact the sender > and delete the material from any computer. > > _______________________________________________ > 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