[postgis-users] Re: maximum distance between a POINT and POLYGON
Kevin Neufeld
kneufeld at refractions.net
Thu Feb 19 08:51:21 PST 2009
Try moving your query into a subquery and then taking the max distance. Also, you can probably drop the subquery you
put as a parameter to the generate_series call. Why are you converting the geometry to text, then back to a geometry again?
ie.
SELECT "cellID", max(dist)
FROM (
-- Your query here, but also select the cellID to group on
SELECT
cellID,
distance_spheroid(
geometry_centroid,
ST_PointN(
ExteriorRing(geometry_zone),
generate_series(1, ST_NPoints(geometry_zone))
),
'SPHEROID["WGS 84",6378137,298.257223563]'
) AS dist
FROM "208_1_26624_zones"
WHERE > "cellID"='1'
) AS foo
GROUP BY "cellID";
-- Kevin
My Pid wrote:
> Hello again,
>
> I found the generate_series function (yes i am a newbie!) and I can use
> it in order to calculate the distance between
> my centroid (geometry_centroid) and my polygon (geometry_zone) with the
> following request
>
>
> SELECT
> (distance_spheroid(geometry_centroid,ST_AsText(ST_PointN(ExteriorRing(geometry_zone),
> generate_series(1,(SELECT npoints(geometry_zone) FROM
> "208_1_26624_zones" WHERE "cellID"='1')))), 'SPHEROID["WGS
> 84",6378137,298.257223563]')) as d FROM "208_1_26624_zones" WHERE
> "cellID"='1';
>
> Now I can't use the max function because of the following error:
> "set-valued function called in context that cannot accept a set"
> when I use
>
> SELECT
> max(distance_spheroid(geometry_centroid,ST_AsText(ST_PointN(ExteriorRing(geometry_zone),
> generate_series(1,(SELECT npoints(geometry_zone) FROM
> "208_1_26624_zones" WHERE "cellID"='1')))), 'SPHEROID["WGS
> 84",6378137,298.257223563]')) as d FROM "208_1_26624_zones" WHERE
> "cellID"='1';
>
>
> any idea ?
>
> thanks!
> Nick
>
>
> 2009/2/18 My Pid <mamat750 at gmail.com <mailto:mamat750 at gmail.com>>
>
> Hello,
>
> I would like to know how I could get the maximum distance between a
> POINT and a POLYGON.
> (the POINT i am talking about here is in fact the ST_Centroid of the
> mentionned POLYGON)
>
> I looked for a function that transform my POLYGON into several POINT
> but without success.
>
> I am working with longitude, latitude, altitude for POINT
> It is really the max distance that I am looking for (not the minimum
> distance.)
> and "accuracy" is important to me.
>
> thanks in advance for your help !
>
> regards,
> Nick
>
>
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> 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