OSDN Git Service

GPX: <trkseg>セグメントの最初の1ノードは無視する。
authoryuuhayashi <hayashi.yuu@gmail.com>
Tue, 29 Dec 2015 13:51:42 +0000 (22:51 +0900)
committeryuuhayashi <hayashi.yuu@gmail.com>
Tue, 29 Dec 2015 13:51:42 +0000 (22:51 +0900)
importPicture/src/osm/jp/gpx/AppParameters.java
importPicture/src/osm/jp/gpx/ImportPicture.java
importPicture/src/osm/jp/gpx/matchtime/gui/AdjustTime.java
importPicture/src/osm/jp/gpx/matchtime/gui/QuitDialog.java

index 951614d..0bb11f2 100644 (file)
@@ -11,11 +11,14 @@ import java.util.Properties;
 public class AppParameters extends Properties {
        static final String FILE_PATH = "AdjustTime.ini";
        
-       // GPX出力: 時間的に間隔が開いたGPXログを別の<>セグメントに分割する。 {ON | OFF}
+       // GPX: 時間的に間隔が開いたGPXログを別の<trkseg>セグメントに分割する。 {ON | OFF}
        public static String GPX_GPXSPLIT = "GPX.gpxSplit";
        
-       // EXIF出力: 画像ファイルのEXIF情報を変更する {ON | OFF}
-       public static String EXIF_GPXSPLIT = "EXIF.noEXIF";
+       // GPX: <trkseg>セグメントの最初の1ノードは無視する。 {ON | OFF}
+       public static String GPX_NO_FIRST_NODE = "GPX.noFirstNode";
+       
+       // GPX: 基準時刻 {FILE_UPDATE | EXIF}
+       public static String GPX_BASETIME = "GPX.BASETIME";
        
        public AppParameters() throws FileNotFoundException, IOException {
                super();
@@ -40,7 +43,7 @@ public class AppParameters extends Properties {
                }
                
                //------------------------------------------------
-               // GPX出力: 時間的に間隔が開いたGPXログを別の<>セグメントに分割する。 {ON | OFF}
+               // GPX出力: 時間的に間隔が開いたGPXログを別の<trkseg>セグメントに分割する。 {ON | OFF}
                String valueStr = this.getProperty(GPX_GPXSPLIT);
                if (valueStr == null) {
                        update = true;
@@ -48,11 +51,19 @@ public class AppParameters extends Properties {
                }
 
                //------------------------------------------------
-               //  EXIF出力: 画像ファイルのEXIF情報を変更する {ON | OFF}
-               valueStr = this.getProperty(EXIF_GPXSPLIT);
+               // GPX出力: <trkseg>セグメントの最初の1ノードは無視する。 {ON | OFF}
+               valueStr = this.getProperty(GPX_NO_FIRST_NODE);
+               if (valueStr == null) {
+                       update = true;
+                       this.setProperty(GPX_NO_FIRST_NODE, "ON");              
+               }
+
+               //------------------------------------------------
+               //  GPX: 基準時刻 {FILE_UPDATE | EXIF}
+               valueStr = this.getProperty(GPX_BASETIME);
                if (valueStr == null) {
                        update = true;
-                       this.setProperty(EXIF_GPXSPLIT, "ON");
+                       this.setProperty(GPX_BASETIME, "FILE_UPDATE");
                }
 
                if (update) {
index c0dc6b1..27b795e 100644 (file)
@@ -188,9 +188,24 @@ public class ImportPicture extends Thread {
     public boolean exif = false;\r
     public ArrayList<File> gpxFiles = new ArrayList<>();\r
     public AppParameters params;\r
-    \r
+       public boolean param_GpxSplit = false;\r
+       public boolean param_GpxNoFirstNode = false;\r
+       \r
     @Override\r
     public void run() {\r
+       String paramStr = params.getProperty(AppParameters.GPX_GPXSPLIT);\r
+       if ((paramStr != null) && (paramStr.toUpperCase().equals(AppParameters.GPX_GPXSPLIT))) {\r
+               param_GpxSplit = true;\r
+       }\r
+        \r
+       paramStr = params.getProperty(AppParameters.GPX_NO_FIRST_NODE);\r
+       if ((paramStr != null) && (paramStr.toUpperCase().equals(AppParameters.GPX_NO_FIRST_NODE))) {\r
+               param_GpxNoFirstNode = true;\r
+       }\r
+       \r
+        System.out.println(" - param: "+ AppParameters.GPX_GPXSPLIT +"="+ param_GpxSplit);\r
+        System.out.println(" - param: "+ AppParameters.GPX_NO_FIRST_NODE +"="+ param_GpxNoFirstNode);        \r
+        System.out.println(" - param: "+ AppParameters.GPX_BASETIME +"="+ params.getProperty(AppParameters.GPX_BASETIME) );\r
         \r
         /**\r
          *\r
@@ -232,22 +247,21 @@ public class ImportPicture extends Thread {
                 document = domImpl.createDocument("", "gpx", null);\r
 \r
                 /*\r
-                <gpx>\r
-                <trk>\r
-                <name><![CDATA[Tracked with OSMTracker for Android?]]></name>\r
-                <cmt><![CDATA[警告: HDOP values aren't the HDOP as returned by the GPS device. They're approximated from the location accuracy in meters.]]></cmt>\r
-                <trkseg>\r
-                <trkpt lat="35.32123832" lon="139.56965631">\r
-                <ele>47.20000076293945</ele>\r
-                <time>2012-06-15T03:00:29Z</time>\r
-                <hdop>0.5</hdop>\r
-                </trkpt>\r
-                </trkseg>\r
-                </trk>\r
-                <wpt lat="35.2564461" lon="139.15437809">\r
-                </wpt>\r
-                </gpx>\r
-                */\r
+                 * <gpx>\r
+                 *   <trk>\r
+                 *     <name><![CDATA[Tracked with OSMTracker for Android?]]></name>\r
+                 *     <cmt><![CDATA[警告: HDOP values aren't the HDOP as returned by the GPS device. They're approximated from the location accuracy in meters.]]></cmt>\r
+                 *     <trkseg>\r
+                 *       <trkpt lat="35.32123832" lon="139.56965631">\r
+                 *         <ele>47.20000076293945</ele>\r
+                 *         <time>2012-06-15T03:00:29Z</time>\r
+                 *         <hdop>0.5</hdop>\r
+                 *       </trkpt>\r
+                 *     </trkseg>\r
+                 *   </trk>\r
+                 *   <wpt lat="35.2564461" lon="139.15437809"></wpt>\r
+                 * </gpx>\r
+                 */\r
                 TreeMap<Long,Element> map = new TreeMap<>();\r
                 Element trk = null;\r
                 gpx    = builder.parse(gpxFile).getFirstChild();\r
@@ -277,7 +291,7 @@ public class ImportPicture extends Thread {
                             gpxEndTime = gpxTime;\r
                         }\r
                     }\r
-\r
+                    \r
                     System.out.println("           時差: "+ (delta / 1000) +"(sec)");\r
                     System.out.println("    Target GPX: ["+ gpxFile.getAbsolutePath() +"]");\r
                     System.out.println("GPX start time: "+ dfjp.format(new Date(gpxStartTime)) + "\t[GMT " + dfuk.format(new Date(gpxStartTime))+"]");\r
@@ -289,8 +303,6 @@ public class ImportPicture extends Thread {
                     System.out.println("------------|--------------------|--------------------|------------|------------|--------|------|");\r
                     change = proc(imgDir, delta, gpxStartTime, gpxEndTime, map, exif, gpx);\r
                     System.out.println("------------|--------------------|--------------------|------------|------------|--------|------|");\r
-                    System.out.println("          param: "+ AppParameters.EXIF_GPXSPLIT +"="+ params.getProperty(AppParameters.EXIF_GPXSPLIT) );\r
-                    System.out.println("          param: "+ AppParameters.GPX_GPXSPLIT +"="+ params.getProperty(AppParameters.GPX_GPXSPLIT) );\r
                 }\r
 \r
                 // 出力\r
@@ -524,7 +536,7 @@ public class ImportPicture extends Thread {
      * @param map\r
      * @throws ParseException\r
      */\r
-    public static void trkptMap(Element trk, TreeMap<Long,Element> map) throws ParseException {\r
+    public void trkptMap(Element trk, TreeMap<Long,Element> map) throws ParseException {\r
         dfuk.setTimeZone(TimeZone.getTimeZone("GMT"));\r
 \r
         NodeList nodes1 = trk.getChildNodes();\r
@@ -540,6 +552,9 @@ public class ImportPicture extends Thread {
 \r
                         NodeList nodes3 = trkpt.getChildNodes();\r
                         for (int i3=0; i3 < nodes3.getLength(); i3++) {\r
+                               if (param_GpxNoFirstNode && (i3 == 0)) {\r
+                                       continue;\r
+                               }\r
                             Node node4 = nodes3.item(i3);\r
                             if (node4.getNodeName().equals("time")) {\r
                                 Element time = (Element) node4;\r
@@ -569,7 +584,7 @@ public class ImportPicture extends Thread {
      * </trkpt>\r
      * @return\r
      * @param map\r
-     * @param jptime\r
+     * @param jptime   画像ファイルの撮影日時 ミリ秒(日本時間)\r
      * @throws ParseException\r
      */\r
     public static Element trkpt(TreeMap<Long,Element> map, Date jptime) throws ParseException {\r
@@ -681,7 +696,7 @@ public class ImportPicture extends Thread {
         }\r
 \r
         if (sa < (60000L * 10L)) {\r
-            // System.out.println(dfuk.format(jpt) +" ("+ sa +")");\r
+               // GPX時刻との差が10分以内なら有効\r
             return ret;\r
         }\r
         return null;\r
index a40f8a8..8ea7ccd 100644 (file)
@@ -20,8 +20,6 @@ import org.apache.commons.imaging.formats.tiff.write.TiffOutputDirectory;
 import org.apache.commons.imaging.formats.tiff.write.TiffOutputField;
 import org.apache.commons.imaging.formats.tiff.write.TiffOutputSet;
 
-
-
 /**
  * 本プログラムのメインクラス
  */
index bbe4df3..26eb088 100644 (file)
@@ -12,6 +12,7 @@ import javax.swing.JDialog;
 import javax.swing.JFrame;
 import javax.swing.JLabel;
 
+@SuppressWarnings("serial")
 public class QuitDialog extends JDialog implements WindowListener
 {
        public static final String TITLE = "終了?";