Dziwię się, że nie ma rozwiązania tego w przestrzeni R
Brad Nesom
Odpowiedzi:
8
To stary problem bez prostego rozwiązania. Jedyne podejście, na jakie natknąłem się, to utworzenie funkcji, którą podasz nagłówek, a liczba części i komputer wykonają próby, aż do uzyskania równych obszarów. W programie AutoCAD istnieje funkcja LISP. W Postgis działa tak samo, oto fragment PostGIS w akcji z Manninga, ten kod dzieli wielokąt na dwie równe części:
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;
Jednym z podejść może być całkowite podzielenie wielokąta na trójkąty, każdy o danym obszarze. Wtedy byłoby kwestią próby grupowania tych (sąsiednich) trójkątów z powrotem w wielokąty o (mniej więcej) rozmiarze / n. Byłaby to rodzaj spersonalizowanej wersji problemu „sumy części” lub „plecaka” (i nie wiedziałbym, jak zacząć od PostGIS).
Odpowiedzi:
To stary problem bez prostego rozwiązania. Jedyne podejście, na jakie natknąłem się, to utworzenie funkcji, którą podasz nagłówek, a liczba części i komputer wykonają próby, aż do uzyskania równych obszarów. W programie AutoCAD istnieje funkcja LISP. W Postgis działa tak samo, oto fragment PostGIS w akcji z Manninga, ten kod dzieli wielokąt na dwie równe części:
źródło
Jednym z podejść może być całkowite podzielenie wielokąta na trójkąty, każdy o danym obszarze. Wtedy byłoby kwestią próby grupowania tych (sąsiednich) trójkątów z powrotem w wielokąty o (mniej więcej) rozmiarze / n. Byłaby to rodzaj spersonalizowanej wersji problemu „sumy części” lub „plecaka” (i nie wiedziałbym, jak zacząć od PostGIS).
źródło