Я удивлен, что нет решения для этого в пространственном R
Брэд Несом
Ответы:
8
Это старая проблема без простого решения. Единственный подход, с которым я столкнулся, - это создать функцию, в которой вы дадите заголовок, а количество деталей и компьютер будут проверены, пока он не получит равные области. В AutoCAD есть функция LISP. В Postgis он работает так же, вот выдержка из PostGIS в действии от Мэннинга, этот код разбивает многоугольник на две равные части:
WITH RECURSIVE
ref(the_geom, env) AS (
SELECT the_geom,
ST_Envelope(the_geom)As env,
ST_Area(The_geom)/2As targ_area,1000As nit
FROM us.states
WHERE state ='Idaho'),
T(n,overlap) AS (
VALUES (CAST(0AsFloat),CAST(0AsFloat))
UNION ALL
SELECT n + nit, ST_Area(ST_Intersection(the_geom, ST_Translate(env, n+nit,0)))
FROM T CROSS JOIN ref
WHERE ST_Area(ST_Intersection(the_geom, ST_Translate(env, n+nit,0)))>ref.targ_area
),
bi(n) AS
(SELECT n
FROM T
ORDER BY n DESC LIMIT 1)
SELECT bi.n,
ST_Difference(the_geom, ST_Translate(ref.env, n,0))As geom_part1,
ST_Intersection(the_geom, ST_Translate(ref.env, n,0))As geom_part2
FROM bi CROSS JOIN ref;
Одним из подходов может быть разделение многоугольника на треугольники, каждый с определенной площадью. Тогда нужно было бы попытаться сгруппировать эти (смежные) треугольники обратно в многоугольники (более или менее) размера области / n. Это будет своего рода настраиваемая версия проблемы «подмножество сумм» или «ранца» (и я не знаю, как начать с этого с PostGIS).
Ответы:
Это старая проблема без простого решения. Единственный подход, с которым я столкнулся, - это создать функцию, в которой вы дадите заголовок, а количество деталей и компьютер будут проверены, пока он не получит равные области. В AutoCAD есть функция LISP. В Postgis он работает так же, вот выдержка из PostGIS в действии от Мэннинга, этот код разбивает многоугольник на две равные части:
источник
Одним из подходов может быть разделение многоугольника на треугольники, каждый с определенной площадью. Тогда нужно было бы попытаться сгруппировать эти (смежные) треугольники обратно в многоугольники (более или менее) размера области / n. Это будет своего рода настраиваемая версия проблемы «подмножество сумм» или «ранца» (и я не знаю, как начать с этого с PostGIS).
источник