OSDN Git Service

FIX: 複数<trk>エレメントに対応
authoryuuhayashi <hayashi.yuu@gmail.com>
Mon, 24 Nov 2014 02:04:07 +0000 (11:04 +0900)
committeryuuhayashi <hayashi.yuu@gmail.com>
Mon, 24 Nov 2014 02:04:07 +0000 (11:04 +0900)
importPicture/src/osm/jp/gpx/ImportPicture.java
importPicture/src/osm/jp/gpx/matchtime/gui/Command.java

index 0696de1..d219503 100644 (file)
@@ -8,8 +8,8 @@ import java.util.Comparator;
 import java.util.Date;\r
 import java.util.HashMap;\r
 import java.util.Iterator;\r
-import java.util.Locale;\r
 import java.util.Set;\r
+import java.util.TimeZone;\r
 import java.util.logging.LogManager;\r
 import java.util.logging.Logger;\r
 \r
@@ -175,6 +175,7 @@ public class ImportPicture {
                                        </wpt>\r
                                </gpx>\r
                                */\r
+                               HashMap<Long,Element> map = new HashMap<Long,Element>();\r
                                Element trk = null;\r
                                gpx    = builder.parse(gpxFile).getFirstChild();\r
                                NodeList nodes = gpx.getChildNodes();\r
@@ -182,12 +183,12 @@ public class ImportPicture {
                                        Node node2 = nodes.item(i);\r
                                        if (node2.getNodeName().equals("trk")) {\r
                                                trk = (Element) node2;\r
+                                               trkptMap(trk, map);\r
                                        }\r
                                }\r
 \r
                                if (trk != null) {\r
-                                       HashMap<Long,Element> map = trkptMap(trk);\r
-\r
+                                       dfjp.setTimeZone(TimeZone.getTimeZone("JST"));\r
                                        String timeStr = argv[2];\r
                                        try {\r
                                                Date t = dfjp.parse(timeStr);\r
@@ -196,7 +197,7 @@ public class ImportPicture {
                                                /*\r
                                                 * GPXへ割りつける開始時刻と終了時刻を求める\r
                                                 */\r
-                                               long gpxStartTime = (new Date()).getTime();     // 対象とする開始時刻\r
+                                               long gpxStartTime = (new Date()).getTime();             // 対象とする開始時刻(現在時刻)\r
                                                long gpxEndTime = 0L;                                                   // 対象とする終了時刻\r
                                                Set<Long> keySet = map.keySet();  //すべてのキー値を取得\r
                                                for (Iterator<Long> keyIte = keySet.iterator(); keyIte.hasNext();) {\r
@@ -212,14 +213,14 @@ public class ImportPicture {
                                                \r
                                                System.out.println("           時差: "+ (delta / 1000) +"(sec)");\r
                                                System.out.println("    Target GPX: ["+ gpxFile.getName() +"]");\r
-                                               System.out.println("GPX start time: "+ dfjp.format(new Date(gpxStartTime).getTime()));\r
-                                               System.out.println("  GPX end time: "+ dfjp.format(new Date(gpxEndTime).getTime()));\r
+                                               System.out.println("GPX start time: "+ dfjp.format(new Date(gpxStartTime)) + "\t[GMT " + dfuk.format(new Date(gpxStartTime))+"]");\r
+                                               System.out.println("  GPX end time: "+ dfjp.format(new Date(gpxEndTime)) + "\t[GMT " + dfuk.format(new Date(gpxEndTime))+"]");\r
                                                System.out.println();\r
-                                               System.out.println("------------|--------------------|--------------------|--------|-------|--------");\r
-                                               System.out.println(" name       | UpdateTime         | GPStime            | LAT    | LON   | ele");\r
-                                               System.out.println("------------|--------------------|--------------------|--------|-------|--------");\r
+                                               System.out.println("------------|--------------------|--------------------|------------|----------|--------");\r
+                                               System.out.println(" name       | UpdateTime         | GPStime            | LAT        | LON      | ele");\r
+                                               System.out.println("------------|--------------------|--------------------|------------|----------|--------");\r
                                                proc(gpxDir, delta, gpxStartTime, gpxEndTime, map, gpx);\r
-                                               System.out.println("------------|--------------------|--------------------|--------|-------|--------");\r
+                                               System.out.println("------------|--------------------|--------------------|------------|----------|--------");\r
                                        }\r
                                        catch (ParseException e) {\r
                                                System.out.println("'"+ timeStr +"' の書式が違います("+ TIME_FORMAT_STRING +")");\r
@@ -275,12 +276,14 @@ public class ImportPicture {
                                                Element trkpt = trkpt(map, uktime);\r
                                                if (trkpt != null) {\r
                                                        System.out.print(String.format("%12s ", image.getName()));\r
-                                                       System.out.print(String.format("%19s ", dfjp.format(itime)));\r
-                                                       System.out.print(String.format("%19s ", dfjp.format(uktime)));\r
+                                                       System.out.print(String.format("%20s ", dfjp.format(itime)));\r
+                                                       System.out.print(String.format("%20s ", dfjp.format(uktime)));\r
 \r
                                                        Element wpt = createWptTag(image, uktime.getTime(), trkpt);\r
                                                        System.out.print(String.format("%12s ", wpt.getAttribute("lat")));\r
-                                                       System.out.print(String.format("%12s "+ wpt.getAttribute("lon")));\r
+                                                       String lonStr = wpt.getAttribute("lon");\r
+                                                       //System.out.print(String.format("%12s "+ lonStr));\r
+                                                       System.out.print(lonStr + " ");\r
                                                        \r
                                                        NodeList nodes = wpt.getChildNodes();      // 子ノードを取得\r
                                                        for (int i4=0; i4< nodes.getLength(); i4++) {\r
@@ -291,6 +294,9 @@ public class ImportPicture {
                                                                                System.out.println(eleStr);\r
                                                                        }\r
                                                            }\r
+                                                               else {\r
+                                                                       System.out.println("-");\r
+                                                               }\r
                                                        }\r
 \r
                                                        Element temp = getCopy(gpx.getOwnerDocument(), wpt);\r
@@ -310,7 +316,7 @@ public class ImportPicture {
         */\r
        public static final String TIME_FORMAT_STRING = "yyyy-MM-dd'T'HH:mm:ss";\r
        public static SimpleDateFormat dfjp = new SimpleDateFormat(TIME_FORMAT_STRING);\r
-       public static SimpleDateFormat dfuk = new SimpleDateFormat(TIME_FORMAT_STRING +"'Z'", Locale.UK);\r
+       public static SimpleDateFormat dfuk = new SimpleDateFormat(TIME_FORMAT_STRING +"'Z'");\r
 \r
        /**\r
         * XMLエレメント<trkpt>をTIMEでキー付したHashMapを生成する<br>\r
@@ -321,9 +327,9 @@ public class ImportPicture {
         * @return\r
         * @throws ParseException\r
         */\r
-       public static HashMap<Long,Element> trkptMap(Element trk) throws ParseException {\r
-               HashMap<Long,Element> map = new HashMap<Long,Element>();\r
-\r
+       public static void trkptMap(Element trk, HashMap<Long,Element> map) throws ParseException {\r
+               dfuk.setTimeZone(TimeZone.getTimeZone("GMT"));\r
+               \r
                NodeList nodes1 = trk.getChildNodes();\r
                for (int i1=0; i1 < nodes1.getLength(); i1++) {\r
                        Node node2 = nodes1.item(i1);\r
@@ -346,7 +352,7 @@ public class ImportPicture {
                                                                        if (node5 != null) {\r
                                                                                if (node5.getNodeType() == Node.TEXT_NODE) {\r
                                                                                        String timeStr = node5.getNodeValue();\r
-                                                                                       long t = dfuk.parse(timeStr).getTime() + (9L * 3600000L);\r
+                                                                                       long t = dfuk.parse(timeStr).getTime();\r
                                                                                        map.put(new Long(t), getCopy(trk.getOwnerDocument(), trkpt));\r
                                                                                }\r
                                                                    }\r
@@ -357,7 +363,6 @@ public class ImportPicture {
                                }\r
                        }\r
                }\r
-               return map;\r
        }\r
 \r
        public static Element trkpt(HashMap<Long,Element> map, Date jptime) throws ParseException {\r
@@ -377,7 +382,7 @@ public class ImportPicture {
                }\r
 \r
                if (sa < (60000L * 10L)) {\r
-               System.out.println(dfuk.format(jpt) +" ("+ sa +")");\r
+               // System.out.println(dfuk.format(jpt) +" ("+ sa +")");\r
                return ret;\r
         }\r
                return null;\r
index 04d67b1..130af21 100644 (file)
@@ -1,4 +1,5 @@
 package osm.jp.gpx.matchtime.gui;
+import java.lang.reflect.InvocationTargetException;
 import java.text.SimpleDateFormat;
 
 class Command extends Thread {
@@ -50,6 +51,11 @@ class Command extends Thread {
                        System.out.println();
                        System.out.println("[END:"+ (new SimpleDateFormat("yyyy/MM/dd-HH:mm:ss")).format(new java.util.Date()) +"]\t"+ this.commandName);
                }
+               catch (InvocationTargetException e) {
+                       System.out.println("[ERR!:"+ (new SimpleDateFormat("yyyy/MM/dd-HH:mm:ss")).format(new java.util.Date()) +"]\t"+ this.commandName);
+                   e.getCause().printStackTrace();
+                       throw e;
+               }
                catch (Exception e) {
                        System.out.println("[ERR!:"+ (new SimpleDateFormat("yyyy/MM/dd-HH:mm:ss")).format(new java.util.Date()) +"]\t"+ this.commandName);
                        throw e;