From 8393dfd6193e70d82e99dffa0e8d7bf90381eda6 Mon Sep 17 00:00:00 2001 From: umsangdon Date: Thu, 3 Sep 2026 13:13:00 +0900 Subject: [PATCH] =?UTF-8?q?fix(B04):=20=EC=84=B8=EB=B6=80=EC=9C=A0?= =?UTF-8?q?=EC=97=AD=20=EC=B5=9C=EC=86=8C=EB=A9=B4=EC=A0=81=20=ED=95=84?= =?UTF-8?q?=ED=84=B0=20=EC=A0=9C=EA=B1=B0=20=E2=80=94=20=EC=9E=91=EC=9D=80?= =?UTF-8?q?=20=EC=9C=A0=EC=97=AD=EC=9D=B4=20=ED=86=B5=EC=A7=B8=EB=A1=9C=20?= =?UTF-8?q?=EC=95=88=20=EA=B7=B8=EB=A0=A4=EC=A7=80=EB=8D=98=20=EB=AC=B8?= =?UTF-8?q?=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 100㎡ 미만 유역은 `polygonize_labels` 의 최소면적 필터에 걸려 폴리곤이 아예 만들어지지 않았다. 유역 목록에는 있는데 지도에는 없는 상태 — 실측에서 용화 22개 중 1개(64㎡), S자 48개 중 1개가 그랬다. 링 목록이 조각을 싣게 된 뒤로는 버릴 이유가 없다. 실측: 폴리곤 면적 오차(셀 면적 대비 평균) 용화 5.76%→1.86%, S자 3.56%→1.42%, 경계 없는 유역 1개→0개. 좌표점은 583→622 · 806→829 로 거의 그대로다. 1차 전체 배수유역 등 다른 호출부의 기본값(100㎡)은 그대로 둔다. S자 실사례 검증: 용화 지형 위에 스위치백 3구간 합성 노선(정점 439·연장 4,528m)으로 신규 프로젝트를 만들어 자동 체인까지 완주 — 관 48개·세부유역 48개, 경계 없는 유역 0개. Co-Authored-By: Claude Opus 5 (1M context) --- common_util/common_util_drainage_detail.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/common_util/common_util_drainage_detail.py b/common_util/common_util_drainage_detail.py index 592b756f..1b9413bb 100644 --- a/common_util/common_util_drainage_detail.py +++ b/common_util/common_util_drainage_detail.py @@ -527,7 +527,11 @@ def assemble_basins( reached = routing.road_slot >= 0 labels[reached] = pipe_of_slot[routing.road_slot[reached]] - polygons = polygonize_labels(spec, labels) + # 최소면적 필터를 끈다 — 그 필터가 곧 빈공간이었다. 떨어진 조각을 100㎡ 미만이라고 + # 버리면 유역 면적과 그림이 어긋난다(실측: 용화 5.76%→1.86%, S자 3.56%→1.42%, + # 조각 유역 0→2·0→3 복원). 링 목록이 조각을 싣게 된 뒤로는 버릴 이유가 없고, 좌표점은 + # 583→622·806→829로 거의 늘지 않는다(2026-09-03). 남은 오차는 simplify(2.0m) 몫. + polygons = polygonize_labels(spec, labels, min_area_m2=0.0) cell_area = spec.cell_area_m2 basins: list[WatershedBasin] = [] for order, pipe in enumerate(pipes):