perf(전처리): 343-1 같은 지형 파일 다시 올림 = 전처리 결과 살림 · 다시 돌 때 점군 안 풂 · 도엽 병합 · 국가 GIS · 타일 기억 열쇠
- B03 재올림 — 지형 파일이 source_identity.json 과 같으면 B04 폴더 · 지표면 DB 행 남기고 단계 표시만 되돌림 - 확인 창 「처음부터 다시」 따로 고름(fresh_start) · 409 응답에 preprocess_kept - B04 다시 돎 — 점 수 · 평균 Z 를 structured_stats.json 에 · xyz 는 쓸 때만 풂 - 도엽 병합 열쇠 = 도엽 번호 목록 · 국가 GIS 열쇠 = 범위 · 좌표계 - 지도 타일 메모리 기억 열쇠에 mtime · 크기 - 시험 test_343_1_preprocess_keep 13건 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014utrjfoW831Vc5wJUd13kL
This commit is contained in:
@@ -18,7 +18,7 @@ try:
|
||||
except ImportError:
|
||||
mapbox_vector_tile = None
|
||||
|
||||
# 메모리 캐시: {project_id}_{layer_name}: GeoDataFrame
|
||||
# 메모리 캐시: {project_id}_{layer_name}: ((mtime_ns, 크기), GeoDataFrame)
|
||||
_gdf_cache: dict[str, Any] = {}
|
||||
|
||||
|
||||
@@ -41,9 +41,13 @@ def get_tile_bbox(xtile: int, ytile: int, zoom: int) -> tuple[float, float, floa
|
||||
def load_geojson_cached(filepath: Path, cache_key: str) -> Any:
|
||||
"""GeoJSON 파일을 한 번 읽으면 메모리에 GeoDataFrame으로 캐싱합니다."""
|
||||
global _gdf_cache
|
||||
if cache_key not in _gdf_cache:
|
||||
if not filepath.exists():
|
||||
raise FileNotFoundError(f"File not found: {filepath}")
|
||||
if not filepath.exists():
|
||||
raise FileNotFoundError(f"File not found: {filepath}")
|
||||
# 열쇠에 수정시각·크기 — 전처리를 다시 돌려 파일이 바뀌면 옛 타일을 버린다.
|
||||
stat = filepath.stat()
|
||||
stamp = (stat.st_mtime_ns, stat.st_size)
|
||||
cached = _gdf_cache.get(cache_key)
|
||||
if cached is None or cached[0] != stamp:
|
||||
if gpd is None:
|
||||
raise ImportError("geopandas가 설치되어 있지 않습니다.")
|
||||
gdf = gpd.read_file(filepath)
|
||||
@@ -51,8 +55,8 @@ def load_geojson_cached(filepath: Path, cache_key: str) -> Any:
|
||||
gdf.set_crs(epsg=4326, inplace=True)
|
||||
if gdf.crs.to_epsg() != 4326:
|
||||
gdf = gdf.to_crs(epsg=4326)
|
||||
_gdf_cache[cache_key] = gdf
|
||||
return _gdf_cache[cache_key]
|
||||
_gdf_cache[cache_key] = (stamp, gdf)
|
||||
return _gdf_cache[cache_key][1]
|
||||
|
||||
|
||||
def generate_mvt_tile(
|
||||
|
||||
Reference in New Issue
Block a user