Добавить поддержку выбора случайной точки из полигона: https://trac.osgeo.org/postgis/wiki/UserWikiRandomPoint
CREATE TABLE global_points (
id SERIAL PRIMARY KEY,
name VARCHAR(64),
location GEOGRAPHY(POINT, 4326)
);
INSERT INTO global_points(name, location)
SELECT null, RandomPointsInPolygon(geom, 1000)
FROM (
SELECT ST_Buffer(
ST_GeomFromText('CIRCULARSTRING(49 49, 50 50, 49 50)'),
10,
'endcap=round join=round'
) AS geom
) AS s;
Выборка из таблицы:
select name, st_asewkt(location) FROM global_points;
Создание областей поиска сложной формы:
SELECT RandomPointsInPolygon(geom, 2000)
FROM (
SELECT ST_Union(ARRAY[
ST_Buffer(ST_GeomFromText('POINT(49.94 50)')::geography, 3500)::geometry,
ST_Buffer(ST_GeomFromText('POINT(50.06 50)')::geography, 3500)::geometry,
ST_Buffer(ST_GeomFromText('LINESTRING(50 50, 50 50.15)')::geography, 3000)::geometry
]) as geom
) AS s;