pub struct JgdTransformer { /* private fields */ }Expand description
JGD2011座標変換器
Tokyo Datum/JGD2000からJGD2011への変換を行う。
- Step 1: Tokyo Datum → JGD2000 (TKY2JGD)
- Step 2: JGD2000 → JGD2011 (PatchJGD統合)
- Step 3: JGD2011 → WGS84 (proj)
Implementations§
Source§impl JgdTransformer
impl JgdTransformer
Sourcepub fn with_survey_date<P: AsRef<Path>>(
tky_path: P,
patch_dir: P,
survey_date: SurveyStartDate,
) -> Result<Self, TransformError>
pub fn with_survey_date<P: AsRef<Path>>( tky_path: P, patch_dir: P, survey_date: SurveyStartDate, ) -> Result<Self, TransformError>
パラメータファイルを読み込んで変換器を初期化(調査日指定あり)
§Arguments
tky_path- TKY2JGD.par のパスpatch_dir- PatchJGD系ファイルが入ったディレクトリのパスsurvey_date- 調査日(地震補正の適用判定に使用)
§地震補正の適用ルール
- 調査日が地震発生日より前の場合のみ、その地震の補正を適用
- 調査日が地震発生日より後の場合、補正は適用しない(既に変動後の位置)
- ジオイド補正(hyokorev2014_geoid2011_h.par)は常に適用
§Example
ⓘ
let survey_date = SurveyStartDate::new(2010, 5, 15);
let transformer = JgdTransformer::with_survey_date(
"params/TKY2JGD.par",
"params/patch_files",
survey_date
)?;Examples found in repository?
examples/bench.rs (lines 18-22)
5fn main() {
6 // ファイル読み込み
7 let xml_bytes = std::fs::read("107282 (1).xml").unwrap();
8 let (utf8, _, _) = encoding_rs::SHIFT_JIS.decode(&xml_bytes);
9 let xml_str = utf8.to_string();
10
11 // パース計測
12 let start = Instant::now();
13 let boring = Boring300::parse_from_str(&xml_str).unwrap();
14 println!("Parse: {:?}", start.elapsed());
15
16 // 変換器初期化計測
17 let start = Instant::now();
18 let transformer = JgdTransformer::with_survey_date(
19 "params/TKY2JGD.par",
20 "params/patch_files",
21 SurveyStartDate::new(2010, 5, 15),
22 ).unwrap();
23 println!("Transformer init: {:?}", start.elapsed());
24
25 // 座標変換計測
26 let start = Instant::now();
27 let loc = boring.geo_location();
28 let result = loc.to_wgs84(&transformer);
29 println!("Coordinate transform: {:?}", start.elapsed());
30 println!("Result: {:?}", result);
31
32 // 100回ループ計測
33 let start = Instant::now();
34 for _ in 0..100 {
35 let loc = boring.geo_location();
36 let _ = loc.to_wgs84(&transformer);
37 }
38 println!("100x transform: {:?}", start.elapsed());
39}Sourcepub fn new<P: AsRef<Path>>(
tky_path: P,
patch_dir: P,
) -> Result<Self, TransformError>
pub fn new<P: AsRef<Path>>( tky_path: P, patch_dir: P, ) -> Result<Self, TransformError>
パラメータファイルを読み込んで変換器を初期化(調査日なし)
注意: 調査日が不明な場合、地震補正は適用されません。 ジオイド補正のみが適用されます。
§Arguments
tky_path- TKY2JGD.par のパスpatch_dir- PatchJGD系ファイルが入ったディレクトリのパス
Sourcepub fn new_tky_only<P: AsRef<Path>>(tky_path: P) -> Result<Self, TransformError>
pub fn new_tky_only<P: AsRef<Path>>(tky_path: P) -> Result<Self, TransformError>
TKY2JGDのみで変換器を初期化 (PatchJGDファイルなし)
JGD2000→JGD2011変換が不要な場合に使用