Как разделить полигон на части

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

Как разделить полигон на части

Сообщение Svility » 01 июл 2020, 05:51

Добрый день.
Подскажите, какой функцией можно разделить полигон на (+/-) равные части? На 2,3 или 6

gr.max
Новоприбывший
Сообщения: 2
Зарегистрирован: 14 окт 2023, 05:51
Репутация: 0
Откуда: Белгород

Re: Как разделить полигон на части

Сообщение gr.max » 14 окт 2023, 10:59

Если еще актуально:

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

CREATE TABLE tmp (
    id int GENERATED BY DEFAULT AS IDENTITY,
    geom GEOMETRY
);

INSERT INTO tmp (geom)
SELECT geom  
  FROM (VALUES ('POLYGON ((10 9, 10 10, 11 10, 11 9, 10 9))'::geometry),
						('MULTIPOLYGON (((-1 8, -1 -5, -1.5 -5, -1.5 8, -1 8)), ((-4 7, -2 7, -2 4, -4 4, -4 7)))'::geometry),
						('POLYGON ((-4.5 2.5, -8 2.5, -8 4, -4.5 4, -6 3.25,  -4.5 2.5))'::geometry),
						('POLYGON ((0 0, 0 5, 5 5, 5 0, 0 0))'::geometry),
						('POLYGON ((8 8, 8 13, 12 13, 12 8, 8 8))'::geometry),
						('POLYGON ((10 11, 10 12, 11 12, 11 11, 10 11))'::geometry),
						('MULTIPOLYGON (((-8 2, -7 2, -7 1, -8 1, -8 2)), ((-4 2, -3 2, -3 1, -4 1, -4 2)))'::geometry),
						('POLYGON ((-5 0, -5 5, 0 5, 0 0, -5 0))'::geometry),
						('POLYGON ((2 3, 2 7, 7 7, 7 3, 2 3))'::geometry),
						('POLYGON ((-4 4, -4 7, -2 7, -2 4, -4 4))'::geometry)
					) AS st (geom);
					
SELECT row_number() OVER() AS idgrid, squares.geom AS geom_grid 
  FROM tmp AS pts
 INNER JOIN
	   ST_HexagonGrid(6, pts.geom) AS squares
    ON ST_Intersects(pts.geom, squares.geom)
 GROUP BY squares.geom;

tikhpetr
Гуру
Сообщения: 1081
Зарегистрирован: 30 окт 2014, 16:33
Репутация: 153
Откуда: г. Жуковский МО

Re: Как разделить полигон на части

Сообщение tikhpetr » 14 окт 2023, 15:06

ИМХО, за 3 года ТС нашел решение.))

Ответить

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

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

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