Разбить полигон на ячейки

Ответить
Аватара пользователя
Svility
Участник
Сообщения: 53
Зарегистрирован: 24 окт 2017, 19:41
Репутация: 4
Откуда: 32637

Разбить полигон на ячейки

Сообщение Svility » 09 авг 2022, 20:13

Добрый день. Подскажите, с помощью какого набора команд можно разбить полигон на ячейки нужного размера? см. вложение
IMG_2301.PNG
IMG_2301.PNG (158.01 КБ) 1133 просмотра

trir
Гуру
Сообщения: 5103
Зарегистрирован: 09 апр 2010, 19:30
Статьи: 1
Репутация: 978
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Разбить полигон на ячейки

Сообщение trir » 10 авг 2022, 07:42

ST_SquareGrid, ST_Intersection

Аватара пользователя
Svility
Участник
Сообщения: 53
Зарегистрирован: 24 окт 2017, 19:41
Репутация: 4
Откуда: 32637

Re: Разбить полигон на ячейки

Сообщение Svility » 12 авг 2022, 09:51

trir писал(а):
10 авг 2022, 07:42
ST_ SquareGrid
А если версия postgis 2.5 ?

drrrrr
Участник
Сообщения: 78
Зарегистрирован: 31 янв 2012, 10:51
Репутация: 45

Re: Разбить полигон на ячейки

Сообщение drrrrr » 12 авг 2022, 10:51

Svility писал(а):
12 авг 2022, 09:51
А если версия postgis 2.5 ?
Лет 10 назад понадобилась планшетная сетка, пришлось написать функцию по этому поводу. Подойдет функция и для вашего случая.

Код: Выделить всё

create or replace function 
 make_grid(xmin int,
         ymin int,
	 xmax int,
	 ymax int,
	 step int,
	 point boolean default false) 
    returns table (geom geometry)
as $$
begin
   if point then
     return query 
	select st_point(x,y) from 
 	(select * from  generate_series(xmin, xmax, step) x, 
			generate_series(ymin, ymax, step) y) gridcoord;
     else
     return query 
	select ST_MakeEnvelope(x, y, x+step, y+step, -1)  from 
 	(select * from  generate_series(xmin, xmax, step) x, 
			generate_series(ymin, ymax, step) y) gridcoord;
   end if;

end;

$$ language plpgSQL;
comment on function make_grid(int, int, int, int, int, boolean) is 
'Функция возвращает таблицу геометрий, образующих сетку из точек 
или полигонов (квадратов).
аргументы (Xmin, Ymin, Xmax, Ymax, шаг сетки, флаг default false )
флаг - true - сетка строится из точек, false - из квадратов';

Ответить

Вернуться в «PostGIS/PostgreSQL»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость