OSDN Git Service

直近のtrkpt からmagver(進行方向) を算出。ただし、exifへは未反映
authorhayashi yuu <hayashi.yuu@gmail.com>
Sun, 26 Jul 2015 02:42:25 +0000 (11:42 +0900)
committerhayashi yuu <hayashi.yuu@gmail.com>
Sun, 26 Jul 2015 02:42:25 +0000 (11:42 +0900)
refacterring

importPicture/src/osm/jp/gpx/ImportPicture.java

index a5601c6..3163877 100644 (file)
@@ -299,28 +299,23 @@ public class ImportPicture {
                             double latitude = Double.parseDouble(latStr);\r
                             double longitude = Double.parseDouble(lonStr);\r
 \r
-                            String eleStr = null;\r
-                            String magvarStr = null;\r
+                            String eleStr = "-";\r
+                            String magvarStr = "-";\r
                             NodeList nodes = wpt.getChildNodes();      // 子ノードを取得\r
-                            for (int i4=0; i4< nodes.getLength(); i4++) {\r
+                            for (int i4 = 0; i4 < nodes.getLength(); i4++) {\r
                                 Node node = nodes.item(i4);\r
                                 if (node != null) {\r
-                                    if (node.getNodeName().equals("ele")) {\r
-                                        eleStr = node.getFirstChild().getNodeValue();\r
-                                        System.out.println(String.format("%8s|", eleStr));\r
-                                        break;\r
-                                    }\r
-                                    if (node.getNodeName().equals("magvar")) {\r
-                                        magvarStr = node.getFirstChild().getNodeValue();\r
-                                        System.out.println(String.format("%6s|", magvarStr));\r
-                                        break;\r
+                                    switch (node.getNodeName()) {\r
+                                        case "ele":\r
+                                            eleStr = node.getFirstChild().getNodeValue();\r
+                                            break;\r
+                                        case "magvar":\r
+                                            magvarStr = node.getFirstChild().getNodeValue();\r
+                                            break;\r
                                     }\r
                                 }\r
-                                else {\r
-                                    System.out.println("-");\r
-                                    break;\r
-                                }\r
                             }\r
+                            System.out.println(String.format("%8s|%6s|", eleStr, magvarStr));\r
 \r
                             if (exifWrite) {\r
                                 TiffOutputSet outputSet = null;\r
@@ -498,7 +493,7 @@ public class ImportPicture {
     }\r
 \r
     /**\r
-     * < lat="35.32123832" lon="139.56965631">\r
+     * <trkpt lat="35.32123832" lon="139.56965631">\r
      *          <ele>47.20000076293945</ele>\r
      *          <time>2012-06-15T03:00:29Z</time>\r
      * </trkpt>\r
@@ -575,9 +570,24 @@ public class ImportPicture {
                             Double x = Math.toRadians(imaLON - maeLON) * r;\r
                             Double y = Math.toRadians(imaLAT - maeLAT) * R;\r
                             double rad = Math.toDegrees(Math.atan(y / x));\r
-                            System.out.println("magvar = " + rad);\r
+                            \r
+                            if (y < 0) {\r
+                                rad = rad * -1;\r
+                                if (x > 0) {\r
+                                    rad = rad + 90;\r
+                                }\r
+                                else {\r
+                                    rad = rad - 90;\r
+                                }\r
+                            }\r
+\r
                             magvar = ret.getOwnerDocument().createElement("magvar");\r
-                            magvar.setTextContent(Double.toString(rad));\r
+                            String str = Double.toString(rad);\r
+                            int iDot = str.indexOf('.');\r
+                            if (iDot > 0) {\r
+                                str = str.substring(0, iDot);\r
+                            }\r
+                            magvar.setTextContent(str);\r
                             ret.appendChild(magvar);\r
                         }\r
                     }\r