diff --git a/importPicture/doc/GPX.class.violet.html b/importPicture/doc/GPX.class.violet.html index ccca066..8239128 100644 --- a/importPicture/doc/GPX.class.violet.html +++ b/importPicture/doc/GPX.class.violet.html @@ -20,7 +20,7 @@ - + 1 @@ -37,28 +37,28 @@ - trkpt : Element + trkpt : XML Element - + lat -+ lon + + lat: Attribute ++ lon: Attribute - + ele -+ time -+ hdop + + ele: Element ++ time: Element ++ hdop: Element - + 1 - trkseg : Element + trkseg : XML Element @@ -69,33 +69,33 @@ - + 1 - trk : Element + trk : XML Element - + + name: Attribute ++ extensions: Attribute - + name -+ extensions + - + 1 - gpx : Element + gpx : XML Element + creater @@ -108,7 +108,7 @@ - + 1 @@ -136,7 +136,7 @@ - + 1 @@ -153,7 +153,7 @@ - wpt : Element + wpt : XML Element + lat @@ -165,7 +165,7 @@ - + 1 @@ -182,19 +182,23 @@ - mapTRKPT : TreeMap + ElementMapTRKPT - key:long[*] -value:Element[*] + + key:Date = trkptエレメントのtime [*] ++ value:Element = trkpt [*] - + put(time:long, trkpt:Element) + + put(value: Element): Date ++ getValue(jpdate: Date): Element +- getTrkpt(jpdate: Date): Element +- getMaeTrkpt(imaTrkpt: TagTrkpt): Element ++ printinfo(): void - + 1 @@ -211,19 +215,20 @@ - mapTRKSEG : TreeMap + ElementMapTRKSEG - key:long[*] -value:Element[*] + + key:Date = TRKPTの一番最初の日時[*] ++ value:ElementMapTRKPT = mapTRKPT [*] - + put(long time, Element trkpt) + + put(value: ElementMapTRKSEG): void ++ printinfo(): void - + 1 @@ -242,9 +247,7 @@ ○ GPXノードは複数のTRKノードで構成されるが、このプログ ラムではTRKノードの構成は無視してTRKSEGノードをフラッ - トにして mapTRKSEG にかくのうする。 -○ mapTRKSEG は、TreeMapクラスを用いているため、開始 - 時刻順にソートされる。 + トに mapTRKSEG に格納する。 255 @@ -255,69 +258,73 @@ - - + + 1 - ○ mapTRKSEG から TRKPT をひとつづつ取り出して mapTRKPT - に格納して処理を行う。 - -○ mapTRKPT もTreeMapクラスを用いているので、時間 - 順にソートされる。 - - - - - - - - 1 - - - - wptノードについてはとりあえず後回し + + 255 + 228 + 181 + 255 + + + + + + + 1 + + 255 + 255 + 255 + 255 + + + 0 + 0 + 0 + 255 + + + + java.util.TreeMap + + + + + + + + + + + + + 1 + + + + + ○ mapTRKSEG と mapTRKPT は、TreeMapクラスを継承ているため、開始 + 時刻順にソートできる + - - + + - - - - - 1 - - 0..* - - 1 - - - - - - - - - 1 - - 0..* - - 1 - - - - - - + + - + 1 0..* @@ -325,955 +332,1215 @@ 1 - - - - - - + + + + + + + + + + 1 + + 0..* + + 1 + + + + + + + + 1 0..* 1 - + + + + + + + + 1 + + 0..* + + 1 + + - - - - + + + + 1 * - 時間順 + - value [時間順] 1 - + - - - - + + + + 1 - + - - - - + + + + 1 - - - - - - - - 1 - - - - - - - - - 1 - - + - - - - - + + + + + 1 - + - - - - + + + + 1 - + * - 時間順 + - value [時間順] 1 + + + + + + + + 1 + + + + + + + + + + + + + 1 + + + + + + + + + 1 + + + + + + + + + 1 + + + + + + + + + 1 + + + + + + + + + 1 + + + + + ]]>

- embedded diagram image + embedded diagram image \ No newline at end of file diff --git a/importPicture/src/osm/jp/gpx/AppParameters.java b/importPicture/src/osm/jp/gpx/AppParameters.java index ee7f98e..fdd20ca 100644 --- a/importPicture/src/osm/jp/gpx/AppParameters.java +++ b/importPicture/src/osm/jp/gpx/AppParameters.java @@ -61,19 +61,26 @@ public AppParameters() throws FileNotFoundException, IOException { super(); + this.file = new File(FILE_PATH); syncFile(); } public AppParameters(Properties defaults) throws FileNotFoundException, IOException { super(defaults); + this.file = new File(FILE_PATH); + syncFile(); + } + + public AppParameters(String iniFileName) throws FileNotFoundException, IOException { + super(); + this.file = new File(iniFileName); syncFile(); } void syncFile() throws FileNotFoundException, IOException { boolean update = false; - this.file = new File(FILE_PATH); - if (file.exists()) { + if (this.file.exists()) { // ファイルが存在すれば、その内容をロードする。 this.load(new FileInputStream(file)); } @@ -199,7 +206,7 @@ if (update) { // ・ファイルがなければ新たに作る // ・項目が足りない時は書き足す。 - this.store(new FileOutputStream(this.file), "defuilt settings"); + this.store(new FileOutputStream(this.file), "defuilt settings"); } } diff --git a/importPicture/src/osm/jp/gpx/ElementMapTRKPT.java b/importPicture/src/osm/jp/gpx/ElementMapTRKPT.java index 8bb015e..8b8758d 100644 --- a/importPicture/src/osm/jp/gpx/ElementMapTRKPT.java +++ b/importPicture/src/osm/jp/gpx/ElementMapTRKPT.java @@ -18,7 +18,7 @@ } /** - * 拡張put value:ElementをputするとElement内のtimeを読み取ってkeyとしてsuper.put(key,value)する。 + * 拡張put value:ElementをputするとElement内のtimeを読み取ってkeyとしてthis.put(key,value)する。 * @param value * @return keyとして登録したtime:Date * @throws ParseException @@ -145,4 +145,16 @@ } return null; } + + public void printinfo() { + Date firstTime = null; + Date lastTime = null; + for (Date key : this.keySet()) { + if (firstTime == null) { + firstTime = new Date(key.getTime()); + } + lastTime = new Date(key.getTime()); + } + System.out.println(String.format("| |%20s|%20s|", ImportPicture.dfuk.format(firstTime), ImportPicture.dfuk.format(lastTime))); + } } diff --git a/importPicture/src/osm/jp/gpx/ElementMapTRKSEG.java b/importPicture/src/osm/jp/gpx/ElementMapTRKSEG.java new file mode 100644 index 0000000..45d5486 --- /dev/null +++ b/importPicture/src/osm/jp/gpx/ElementMapTRKSEG.java @@ -0,0 +1,70 @@ +package osm.jp.gpx; + +import java.text.ParseException; +import java.util.Date; +import java.util.TreeMap; + +import org.w3c.dom.*; + +@SuppressWarnings("serial") +public class ElementMapTRKSEG extends TreeMap { + + public ElementMapTRKSEG() { + super(new TimeComparator()); + } + + /** + * 拡張put value:NodeをputするとNode内のNodeを put(key,value)する。 + * @param nodeTRKSEG + * @return keyとして登録したtime:Date + * @throws ParseException + * @throws DOMException + */ + public Date put(Node nodeTRKSEG) throws DOMException, ParseException { + if (nodeTRKSEG.getNodeName().equals("trkseg")) { + NodeList nodes2 = nodeTRKSEG.getChildNodes(); + + Date trksegStartTime = new Date(); // 対象とする開始時刻(現在時刻) + ElementMapTRKPT mapTRKPT = new ElementMapTRKPT(); + for (int i2 = 0; i2 < nodes2.getLength(); i2++) { + Node nodeTRKPT = nodes2.item(i2); + if (nodeTRKPT.getNodeName().equals("trkpt")) { + if (ImportPicture.param_GpxNoFirstNode && (i2 == 0)) { + continue; + } + Date time = mapTRKPT.put((Element)nodeTRKPT); + if (trksegStartTime.compareTo(time) < 0) { + trksegStartTime = time; + } + } + } + this.put(trksegStartTime, mapTRKPT); + return trksegStartTime; + } + return null; + } + + /** + * 拡張put value:ElementMapTRKPTをputするとElementMapTRKPT内の最初のエントリのtimeを読み取ってkeyとしてthis.put(key,value)する。 + * @param value + * @return keyとして登録したtime:Date + * @throws ParseException + * @throws DOMException + */ + public Date put(ElementMapTRKPT value) { + for (Date key : value.keySet()) { + this.put(key, value); + return key; + } + return null; + } + + public void printinfo() { + for (java.util.Map.Entry map : this.entrySet()) { + System.out.println("|--------------------------------|--------------------|--------------------|"); + ElementMapTRKPT mapTRKPT = map.getValue(); + mapTRKPT.printinfo(); + } + } + +} diff --git a/importPicture/src/osm/jp/gpx/ImportPicture.java b/importPicture/src/osm/jp/gpx/ImportPicture.java index fe2a689..bb487a5 100644 --- a/importPicture/src/osm/jp/gpx/ImportPicture.java +++ b/importPicture/src/osm/jp/gpx/ImportPicture.java @@ -13,7 +13,6 @@ import java.util.GregorianCalendar; import java.util.Map; import java.util.TimeZone; -import java.util.TreeMap; import java.util.logging.LogManager; import java.util.logging.Logger; @@ -95,8 +94,13 @@ * ・精確な時刻との時差を入力することで、撮影日時を補正します。 * ・画像ファイルの更新日付リストをCSV形式のファイルとして出力する。 * ・・結果は、取り込み元のGPXファイルとは別に、元ファイル名にアンダーバー「_」を付加した.ファイルに出力します。 + * + * exp) $ java -cp .:AdjustTime.jar:commons-imaging-1.0-SNAPSHOT.jar [AdjustTime.ini] + * exp) > java -cp .;AdjustTime.jar;commons-imaging-1.0-SNAPSHOT.jar [AdjustTime.ini] * * @param argv + * argv[0] = INIファイルのパス名 + * * argv[-] = dummy * argv[0] = 画像ファイルが格納されているディレクトリ --> imgDir * argv[1] = 時刻補正の基準とする画像ファイル --> baseFile @@ -109,31 +113,23 @@ */ public static void main(String[] argv) throws Exception { - Date jptime; + Date imgtime; + String paramFilePath = ((argv.length < 1) ? AppParameters.FILE_PATH : argv[0]); + System.out.println("Param File = '"+ paramFilePath +"'"); ImportPicture obj = new ImportPicture(); + obj.params = new AppParameters(paramFilePath); + obj.ex = null; - - if (argv.length > 0) { - obj.imgDir = new File(argv[0]); - } - - if (argv.length < 4) { - System.out.println("!!! Illigal command call. !!!"); - System.out.println("> java -cp .:AdjustTime.jar:commons-imaging-1.0-SNAPSHOT.jar