[postgis-users] Selecting Unique polygons with st_intersects()
Ben Madin
lists at remoteinformation.com.au
Mon Jun 6 19:00:43 PDT 2011
Thanks Regina,
you are right - for some unknown reason I had in my mind that the order by clause would come after the distinct giving no surety of the part of the property being returned.
For Posterity, I used :
SELECT DISTINCT ON (pic) 'QLD'::text as state, lga_name09 as shire, propname as name, pic, round((st_area(st_transform(q.the_geom, 32754))/10000)::numeric,2) as ha
FROM lga l
JOIN qldproperties q
ON st_intersects(q.the_geom, l.gda_geom)
AND l.gid in (245,247,252,254,258,259,275,279,289,297)
ORDER BY pic, st_area(st_intersection(q.the_geom, l.gda_geom)) DESC;
It's surprisingly slow, so I'll have to fiddle with the indexes, but it certainly does what I want.
cheers
Ben
On 07/06/2011, at 8:56 AM, Paragon Corporation wrote:
> Ben,
>
> Perhaps I'm missing something -- but why don't you just put an ORDER BY in
> your DISTINCT ON to control which one is returned?
>
> SELECT DISTINCT ON (pic) lga_name09 as shire, propname as name, pic
> FROM lga l JOIN qldproperties q ON st_intersects(q.the_geom, l.gda_geom) AND
> l.gid in (245,247,252,254,258,259,275,279,289,297)
> ORDER BY pic, ST_Area(st_intersection(q.the_geom, l.gda_geom)) DESC
>
> Hope that helps,
> Regina
> http://www.postgis.us
>
>
> -----Original Message-----
> From: postgis-users-bounces at postgis.refractions.net
> [mailto:postgis-users-bounces at postgis.refractions.net] On Behalf Of Ben
> Madin
> Sent: Monday, June 06, 2011 5:36 PM
> To: PostGIS Users Discussion
> Subject: [postgis-users] Selecting Unique polygons with st_intersects()
>
> G'day all,
>
> I've just realised that in selecting a group of properties by the local
> government area they reside in, I end up with duplicates = some properties
> span shire boundaries. I've used st_intersects, because some properties
> cover boundaries, so I need those that are within and may be partially
> without the boundary.
>
> I'm sure I'm not the first person to have this problem, but I was wondering
> if anyone has any insights into the most efficient way to choose a unique
> listing of property and shire. I was wondering about taking the area of the
> property still within the local government area, and choosing the row with
> the biggest value...
>
> Although I have unique property identifiers, I can't be sure of not getting
> a ridiculous answer - an erroneously small amount of a property in a shire
> etc.
>
> My current query looks a bit like :
>
> SELECT DISTINCT ON (pic) lga_name09 as shire, propname as name, pic FROM lga
> l JOIN qldproperties q ON st_intersects(q.the_geom, l.gda_geom) AND l.gid in
> (245,247,252,254,258,259,275,279,289,297);
>
> but I need to do better than using SELECT DISTINCT ON.
>
> cheers
>
> Ben
>
>
> _______________________________________________
> postgis-users mailing list
> postgis-users at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-users
>
>
> _______________________________________________
> postgis-users mailing list
> postgis-users at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-users
More information about the postgis-users
mailing list