48 lines
3.3 KiB
Python
48 lines
3.3 KiB
Python
"""기존 추출 및 지반 계산 설정값 (단위 m)."""
|
||
from __future__ import annotations
|
||
|
||
from dataclasses import dataclass, field
|
||
|
||
|
||
@dataclass
|
||
class LayerMap:
|
||
"""수치지형도 레이어 매핑 (운곡교 평면도 C0050202-001 기준)."""
|
||
spot_block: tuple[str, ...] = ("CA002",) # 표고점 블록, INSERT z = EL
|
||
spot_text: tuple[str, ...] = ("CA0021",) # 표고점 글자, 글자 값 = EL
|
||
contour: tuple[str, ...] = ("CAA001", "CAA002") # 계곡선 · 주곡선, 폴리라인 elevation = EL
|
||
bore_text: tuple[str, ...] = ("CV-BORE-TEXT",) # 시추공 번호
|
||
bore_symbol: tuple[str, ...] = ("CV-BORE-SYMB",) # 시추공 기호
|
||
bridge: tuple[str, ...] = ("CF-BRDG-NEWC",) # 계획 교량 외곽 (그림용)
|
||
pier_text: tuple[str, ...] = ("CS-XXXX",) # 교각 번호 텍스트 (piers JSON 없어도 자동 추출)
|
||
elevation_layer_keywords: tuple[str, ...] = ("EL", "ELEV", "LEVEL", "SPOT", "TBM", "BM", "표고", "고도")
|
||
contour_layer_keywords: tuple[str, ...] = ("CONTOUR", "CONTR", "CAA", "CNTR", "등고", "곡선")
|
||
pier_layer_keywords: tuple[str, ...] = ("PIER", "교각", "XXXX", "BRIDGE")
|
||
ground_profile_layer_keywords: tuple[str, ...] = ("GRND", "GROUND", "GLAY", "GLINE", "TERRAIN", "TOPO", "지형", "지반", "토피")
|
||
scale_layer_keywords: tuple[str, ...] = ("GSCL", "SCALE", "LEV", "ELV", "표고", "고도", "LEGEND")
|
||
# 3D 지형지물 폴리라인은 기본으로 쓰지 않는다 (--use-3d-lines 로 켬).
|
||
feature_3d_exclude_prefix: tuple[str, ...] = ("B", "CZ") # 건물(B*), 도곽·기타(CZ*) 제외
|
||
|
||
|
||
@dataclass
|
||
class GroundConfig:
|
||
layers: LayerMap = field(default_factory=LayerMap)
|
||
cad_axes: str = "YX" # "YX": CAD x = 측량 Y(동), CAD y = 측량 X(북). "XY": 그대로
|
||
use_3d_lines: bool = False # 3D 지형지물 폴리라인 꼭짓점을 지표면에 넣을지
|
||
use_profile_points: bool = True # 실지도 신규 작업에서는 종단 도식 좌표 사용 금지
|
||
allowed_terrain_layers: tuple[str, ...] = () # 빈 값이면 기존 레이어 탐색 사용
|
||
z_min: float = 0.0 # 유효 EL 범위 (이상치 1차 제거)
|
||
z_max: float = 200.0
|
||
outlier_radius: float = 15.0 # 이웃 비교 반경 (m)
|
||
outlier_dz: float = 5.0 # 이웃 중앙값과의 차이 한계 (m)
|
||
dedup_xy: float = 0.05 # 같은 자리 판정 (m)
|
||
text_block_match: float = 3.0 # 표고점 글자를 블록과 같은 점으로 볼 거리 (m)
|
||
contour_step: float = 2.0 # 등고선 꼭짓점 사이를 이 간격으로 촘촘히 (m)
|
||
tin_max_edge: float = 100.0 # 이보다 긴 변을 가진 삼각형은 자료 없음으로 처리 (m)
|
||
dtm_sparse: float = 30.0 # I07: 지반고를 만든 지형 점이 이보다 멀면 알림 (m)
|
||
ground_tol: float = 0.3 # W09: 엑셀 지반고와 DTM 차이 한계 (m)
|
||
bore_far: float = 30.0 # I04: 가장 가까운 시추공 거리 한계 (m)
|
||
bore_max: float = 80.0 # 이보다 먼 시추공은 보간에 쓰지 않음 (m)
|
||
support_layer: str = "연암" # 지지층 (G-7)
|
||
embed_d: float = 1.0 # 지지층 근입 깊이 = embed_d × 말뚝 지름 (G-7)
|
||
strata_order: tuple[str, ...] = ("매립토", "퇴적토", "풍화토", "풍화암", "연암", "경암") # G-2
|