PostGIS : 주어진 비율로 다각형 분할


11

nPostGIS에서 다각형을 여러 크기 로 분할 할 수있는 편리한 방법이 있습니까?


동일한 면적 또는 동일한 크기 (예 : 유사한 폭과 높이)?
Anthony -GISCOE-

비율에 관계없이 면적.
Adam Matan 2019


나는 R 공간에서 이것에 대한 해결책이 없다는 것에
놀랐습니다

답변:


8

이것은 간단한 해결책이없는 오래된 문제입니다. 내가 만난 유일한 접근 방식은 당신이 제목과 부품 수를 부여하고 컴퓨터가 동일한 영역에 도달 할 때까지 시험을 수행하는 기능을 만드는 것입니다. AutoCAD에는 LISP 기능이 있습니다. postgis에서는 동일하게 작동합니다. 여기 Manning 의 PostGIS 가 발췌 한 것입니다 .이 코드는 다각형을 두 개의 동일한 부분으로 나눕니다.

WITH RECURSIVE
ref(the_geom, env) AS (
SELECT the_geom,
ST_Envelope(the_geom) As env,
ST_Area(The_geom)/2 As targ_area,
1000 As nit
FROM us.states
WHERE state = 'Idaho'
),

T(n,overlap) AS (
VALUES (CAST(0 As Float),CAST(0 As Float))
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;

2

한 가지 방법은 다각형을 주어진 영역이있는 삼각형으로 완전히 분할하는 것입니다. 그런 다음 (인접한) 삼각형을 (거의 또는 덜) 크기 영역 / n의 다각형으로 다시 그룹화하려고 시도해야합니다. 이것은 일종의 사용자 정의 버전의 "하위 집합 합계"또는 "백팩"문제입니다 (PostGIS로 시작하는 방법을 모르겠습니다).


알고리즘에 대한 자세한 정보를 제공 할 수 있습니까?
Majid Hojati
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.