|
|
XWMMManager Class |

public class XWMMManager : XGeoidManager
The XWMMManager type exposes the following members.
| Name | Description | |
|---|---|---|
| XWMMManager | XWMMManager 클래스의 기본 생성자로서, 멤버변수들을 초기화한다. |
| Name | Description | |
|---|---|---|
| UseMSL | true 로 설정할 경우 입력 고도를 지오이드고를 고려한 해발고도로 해석하고, false 로 설정할 경우 입력 고도를 WGS84 타원체고로 해석하도록 설정한다.
설정하지 않을 경우 기본값은 true(해발고도) 이다. Calc 함수 호출 시 UseMSL 가 true 인 경우 지오이드 파일을 로드하지 않았다면 파일을 자동으로 로드한다. UseMSL 가 true 인 경우 지오이드 파일을 읽을 수 없으면 NOTCOMPUTED 를 리턴한다. 지오이드고가 계산 결과에 미치는 영향은 매우 작으나(1 nT 미만) 정밀한 계산을 원하는 경우 사용한다. |
| Name | Description | |
|---|---|---|
| Calc | 입력 위치의 자기장 요소를 계산한다.
계수 파일을 로드하지 않고 호출하면 최신 WMM 모델의 계수 파일을 자동으로 로드한다. UseMSL 속성이 true 일 때, 지오이드 파일을 로드하지 않고 호출하면 지오이드 파일을 자동으로 로드한다. 계산 시점을 설정하지 않고 호출하면 현재 날짜로 WMM 계산 시점을 설정한다. | |
| GetDeclination | 자기편각을 반환한다. | |
| GetDeclinationSecVar | 자기편각의 연간 장기 변화율(Annual Secular variation)을 반환한다. | |
| GetEpoch | 현재 사용자가 설정한 WMM 계산 시점을 확인한다. | |
| GetGridVariation | 지도 투영기준 편각을 반환한다. | |
| GetHorizontalIntensity | 자기장의 수평 방향 강도를 반환한다. | |
| GetHorizontalIntensitySecVar | 자기장 수평 방향 강도의 연간 장기 변화율(Annual Secular variation)을 반환한다. | |
| GetInclination | 자기복각을 반환한다. | |
| GetInclinationSecVar | 자기복각의 연간 장기 변화율(Annual Secular variation)을 반환한다. | |
| GetModelName | WMM 객체의 모델 이름을 가져온다. | |
| GetTotalIntensity | 자기장의 총 강도를 반환한다. | |
| GetTotalIntensitySecVar | 자기장 총 강도의 연간 장기 변화율(Annual Secular variation)을 반환한다. | |
| GetValidEpoch | 로드한 WMM 계수 파일의 유효한 계산 시점 범위를 확인한다. 유효한 범위는 파일의 계수 일로부터 종료 연도 사이의 날짜이다. | |
| GetVector | 자기장의 X, Y, Z, 벡터를 반환한다. | |
| GetVectorSecVar | 자기장 X, Y, Z, 벡터의 연간 장기 변화율(Annual Secular variation)을 반환한다. | |
| LoadFileFromEGM2008 | EGM2008 지오이드 파일을 로드한다. (Overrides XGeoidManagerLoadFileFromEGM2008(String, String)) | |
| LoadFileFromWMM | WMM 계수 파일을 로드한다. | |
| SetCurrentEpoch | 현재 날짜로 WMM 계산 시점을 설정한다. 계수파일을 로드하지 않고 호출하면 최신 WMM 모델의 계수 파일을 자동으로 로드한다. | |
| SetEpoch | WMM 계산 시점을 설정한다. 계수 파일을 로드하지 않고 호출하면 최신 WMM 모델의 계수 파일을 자동으로 로드한다. |
using Pixoneer.NXDL.NIO; // Create XWMMManager XWMMManager wmm = new XWMMManager(); // Sets WMM Coefficients file path. This file could download from web site. https://www.ncei.noaa.gov/products/world-magnetic-model string strWmmPath = Xfn.GetResourcePath() + "\\WMM2025.COF"; // Sets Geoid file path. This file could download from web site. http://earth-info.nga.mil/GandG/wgs84/gravitymod/egm2008/egm08_wgs84.html string strGeoidPath = Xfn.GetResourcePath() + "\\Und_min2.5x2.5_egm2008_isw=82_WGS84_TideFree_SE"; // Load the Coefficient file String strError = ""; if (wmm.LoadFileFromWMM(strWmmPath, ref strError)) { double alt = 10000; //meter wmm.UseMSL = true; if (!wmm.LoadFileFromEGM2008(strGeoidPath, ref strError)) { wmm.UseMSL = false; } XGeoPoint geoPt = XGeoPoint.FromDegree(127, 36, alt); XWMMManager.eBoZState eWmmState; double dec, gv, inc, tInt, hInt; // Set epoch within the valid range of the WMM coefficient file. if (wmm.SetEpoch(2027, 5, 1, ref strError)) { // Compute World Magnetic Model // WMM 계산에 필요한 입력값의 범위와 반환값에 대한 자세한 설명은 NOAA 보고서를 참고하세요. // https://www.ncei.noaa.gov/products/world-magnetic-model eWmmState = wmm.Calc(geoPt); if (XWMMManager.eBoZState.BLACKOUT == eWmmState) { MessageBox.Show("Location is in a Blackout Zone (nearly vertical magnetic field)." + "Navigation data may be unreliable."); } else { if (XWMMManager.eBoZState.CAUTION == eWmmState) { MessageBox.Show("Caution: Magnetic compasses may be less accurate in this area."); } dec = wmm.GetDeclination(); gv = wmm.GetGridVariation(); inc = wmm.GetInclination(); tInt = wmm.GetTotalIntensity(); hInt = wmm.GetHorizontalIntensity(); } } else { MessageBox.Show(strError); } }