/// <summary> /// 특보 해당구역 코드 리스트를 행정구역 지역명 문자열(콤마로 구분된 연속된 문자열)로 변환. /// </summary> /// <returns></returns> public string GetTargetRegionNames() { string[] targetRegionCodes = GetTargetRegionCodes(); if (targetRegionCodes == null) { return(string.Empty); } List <string> regionNames = new List <string>(); foreach (string regionCode in targetRegionCodes) { RegionProfile profile = BasisData.FindRegion(regionCode); if (profile == null) { continue; } if (regionNames.Contains(profile.Name)) { continue; } regionNames.Add(profile.Name); } return(string.Join(",", regionNames)); }
public static RegionProfile FindRegion(string regionCode) { if (string.IsNullOrEmpty(regionCode)) { return(null); } if (!IsRegionDataLoaded()) { return(null); } RegionProfile profile = null; try { if (Regions.LstRegion.ContainsKey(regionCode)) { profile = Regions.LstRegion[regionCode]; } else { bool isFound = false; bool check2 = true; foreach (RegionProfile region1 in Regions.LstRegion.Values) { if (region1.LstSubRegion == null || region1.LstSubRegion.Count <= 0) { continue; } if (check2) { check2 = false; isFound = region1.LstSubRegion.ContainsKey(regionCode); // 시군구 if (isFound) { profile = region1.LstSubRegion[regionCode]; break; } } foreach (RegionProfile region2 in region1.LstSubRegion.Values) { if (region2.LstSubRegion == null || region2.LstSubRegion.Count <= 0) { continue; } isFound = region2.LstSubRegion.ContainsKey(regionCode); if (isFound) { profile = region2.LstSubRegion[regionCode]; break; } } if (isFound) { break; } } } } catch (Exception ex) { System.Console.WriteLine("[BasisData] FindRegion ( Exception: " + ex.ToString() + " )"); FileLogManager.GetInstance().WriteLog("[BasisData] FindRegion ( Exception: " + ex.ToString() + " )"); } return(profile); }
/// <summary> /// CAP 메시지로부터 발령 대상 지역 정보를 추출. /// </summary> /// <param name="msg"></param> /// <returns></returns> public List <RegionDefinition> ExtractTargetRegionsFromCAP(CAP msg) { System.Diagnostics.Debug.Assert(msg != null); if (msg.Scope == CAPLib.ScopeType.Private) { return(null); } if (msg.Info == null || msg.Info.Count < 1) { return(null); } List <RegionDefinition> targets = new List <RegionDefinition>(); InfoType info = msg.Info[0]; if (info == null) { return(null); } if (info.Area == null || info.Area.Count < 1) { return(null); } foreach (AreaType area in info.Area) { int areaIndex = -1; string[] stringSeperators = new string[] { " " }; foreach (NameValueType geoCode in area.GeoCode) { areaIndex++; if (geoCode.Name != "KRDSTGeocode") { continue; } string code = geoCode.Value; RegionProfile profile = BasisData.FindRegion(code); if (profile == null) { string areaDesc = area.AreaDesc; if (areaDesc == null) { continue; } string[] areaNames = areaDesc.Split(stringSeperators, StringSplitOptions.RemoveEmptyEntries); if (areaNames != null && areaNames.Count() <= areaIndex) { continue; } RegionDefinition region = new RegionDefinition(code, areaNames[areaIndex]); targets.Add(region); } else { RegionDefinition region = new RegionDefinition(profile.Code, profile.Name); targets.Add(region); } } } return(targets); }