Files
fletimageanalysis/python_mapping_usage.py
2025-07-17 17:02:45 +09:00

90 lines
3.8 KiB
Python

import json
# JSON 매핑 테이블 로드
def load_mapping_table(json_file_path):
"""매핑 테이블 JSON 파일을 로드합니다."""
with open(json_file_path, 'r', encoding='utf-8') as file:
return json.load(file)
class FieldMapper:
def __init__(self, mapping_data):
self.mapping_data = mapping_data
self.ailabel_to_systems = mapping_data['mapping_table']['ailabel_to_systems']
self.system_mappings = mapping_data['mapping_table']['system_mappings']
def ailabel_to_expressway(self, ailabel):
"""AI 라벨을 고속도로공사 필드명으로 변환"""
if ailabel in self.ailabel_to_systems:
return self.ailabel_to_systems[ailabel]['expressway']
return None
def expressway_to_transportation(self, expressway_field):
"""고속도로공사 필드명을 교통부 필드명으로 변환"""
if expressway_field in self.system_mappings['expressway_to_transportation']:
return self.system_mappings['expressway_to_transportation'][expressway_field]
return None
def ailabel_to_transportation_via_expressway(self, ailabel):
"""AI 라벨 → 고속도로공사 → 교통부 순서로 변환"""
expressway_field = self.ailabel_to_expressway(ailabel)
if expressway_field:
return self.expressway_to_transportation(expressway_field)
return None
def get_all_system_fields(self, ailabel):
"""AI 라벨에 해당하는 모든 시스템의 필드명을 반환"""
if ailabel in self.ailabel_to_systems:
return self.ailabel_to_systems[ailabel]
return None
# 사용 예제
if __name__ == "__main__":
# 매핑 테이블 로드
mapping_data = load_mapping_table('mapping_table.json')
mapper = FieldMapper(mapping_data)
# 사용 사례 1: AILABEL => EXPRESSWAY
print("=== AI 라벨 → 고속도로공사 필드명 변환 ===")
test_labels = ["도면명", "편철번호", "도면번호", "Main Title", "계정번호"]
for label in test_labels:
expressway_field = mapper.ailabel_to_expressway(label)
print(f"{label}{expressway_field}")
print("\n=== 고속도로공사 → 교통부 필드명 변환 ===")
# 사용 사례 2: EXPRESSWAY => TRANSPORTATION
expressway_fields = ["TD_DNAME_MAIN", "TD_DWGNO", "TD_DWGCODE", "TR_RNUM1"]
for field in expressway_fields:
transportation_field = mapper.expressway_to_transportation(field)
print(f"{field}{transportation_field}")
print("\n=== AI 라벨 → 고속도로공사 → 교통부 (연속 변환) ===")
# 연속 변환 예제
for label in test_labels:
transportation_field = mapper.ailabel_to_transportation_via_expressway(label)
expressway_field = mapper.ailabel_to_expressway(label)
print(f"{label}{expressway_field}{transportation_field}")
print("\n=== 특정 AI 라벨의 모든 시스템 필드명 ===")
# 모든 시스템 필드명 조회
all_fields = mapper.get_all_system_fields("도면명")
if all_fields:
print("도면명에 해당하는 모든 시스템 필드:")
for system, field in all_fields.items():
print(f" {system}: {field}")
# 배치 처리 함수
def batch_convert_ailabel_to_expressway(mapper, ailabels):
"""여러 AI 라벨을 한번에 고속도로공사 필드명으로 변환"""
results = {}
for label in ailabels:
results[label] = mapper.ailabel_to_expressway(label)
return results
def batch_convert_expressway_to_transportation(mapper, expressway_fields):
"""여러 고속도로공사 필드를 한번에 교통부 필드명으로 변환"""
results = {}
for field in expressway_fields:
results[field] = mapper.expressway_to_transportation(field)
return results