Re: [postgis-users] Query with LIMIT but as random result set?

From: Gavin Flower <GavinFlower(at)archidevsys(dot)co(dot)nz>
To: Stefan Keller <sfkeller(at)gmail(dot)com>
Cc: Kevin Grittner <kgrittn(at)mail(dot)com>, PostGIS Users Discussion <postgis-users(at)lists(dot)osgeo(dot)org>, pgsql-general List <pgsql-general(at)postgresql(dot)org>
Subject: Re: [postgis-users] Query with LIMIT but as random result set?
Date: 2013-01-11 17:31:18
Message-ID: 50F04C66.50209@archidevsys.co.nz
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Hi Stefan,

Please do not to post! :-)
Here, we post replies at the end, so people can see the context before
the new stuff.

On 11/01/13 11:36, Stefan Keller wrote:
> Hi Kevin
>
> No; I'm thinking about some query (or function) that selects random
> points (POIs) with certain characteristics like decreasing density. I
> didn't find much theory about how to *create* such random points.
>
> There seems to be more literature and implementation about measuring
> geographic distribution (like in ArcGIS http://bit.ly/13lTFj9 ).
>
> Under "radial distribution function" I understand a function which
> describes how density varies depending on the distance from a
> reference point (= the user).
>
> Yours, Stefan
>
>
> 2013/1/10 Kevin Grittner <kgrittn(at)mail(dot)com>:
>> Stefan Keller wrote:
>>
>>> "... ORDER BY random() LIMIT 10;" works ok.
>>>
>>> But with the following option it gets more tricky assume:
>>>> And as an option the (limited) resultset should be spatially
>>>> distributed (not clustered).
>>> I'm thinking about some radial spatial distribution function.
>> So, you explicitly *don't* want a random selection? By "spatially
>> distributed" you mean that if you have already chosen one
>> particular location, other locations which are close to it should
>> be less probable (or impossible) to include in the limited result
>> set? How would you define the desired result? The one with the
>> highest best solution to the "traveling salesman" problem?
>>
>> -Kevin
>
Note that even for an even probability distribution,you have to be careful.

There are at least 2 ways to distribute points in a circle, both are
valid in different contexts.

(1) Select (x,y) in a square containing the circle, through away any
points outside the circle. This has an even probability density per
unit area of the circle.

(2) Select (theta, r) at random. This has a greater density of points
at the centre reducing lineraly towards the circumference.

I think something like the second fits your situation.

DROP TABLE IF EXISTS ranpoint;

CREATE TABLE ranpoint
(
id int,
theta float,
r float
);

-- theta in radians
-- for radius = 100

INSERT INTO ranpoint
(id, theta, r)
VALUES
(generate_series(1, 10), pi() * random(), 100 * random());

TABLE ranpoint;

Cheers,
Gavin

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Bosco Rama 2013-01-11 17:45:09 Re: [postgis-users] Query with LIMIT but as random result set?
Previous Message Asia 2013-01-11 15:27:42 Libpq and multithreading