package osm.jp.gpx;\r
import java.io.*;\r
+import java.nio.channels.FileChannel;\r
import java.text.DecimalFormat;\r
import java.text.ParseException;\r
import java.text.SimpleDateFormat;\r
\r
paramStr = obj.params.getProperty(AppParameters.IMG_OUTPUT_ALL);\r
if ((paramStr != null) && (paramStr.equals(Boolean.toString(true)))) {\r
- obj.param_GpxOutputWpt = true;\r
+ obj.param_ImgOutputAll = true;\r
}\r
\r
paramStr = obj.params.getProperty(AppParameters.GPX_OUTPUT_WPT);\r
\r
// 時刻uktimeにおける<magver>をtrkptに追加する\r
Element trkptE = trkpt(map, uktime);\r
- if (trkptE == null) {\r
- System.out.println(String.format("%20s ", "Out of GPX logging time."));\r
- continue;\r
- }\r
-\r
- TagTrkpt trkptT = new TagTrkpt(trkptE);\r
-\r
- //Element wpt = createWptTag(image, uktime.getTime(), trkptE);\r
- //String latStr = trkptT.lat.toString();\r
- //String lonStr = trkptT.lon.toString();\r
- double latitude = trkptT.lat;\r
- double longitude = trkptT.lon;\r
- \r
String eleStr = "-";\r
- if (trkptT.eleStr != null) {\r
- eleStr = new String(trkptT.eleStr);\r
- }\r
- \r
String magvarStr = "-";\r
- if (trkptT.magvarStr != null) {\r
- magvarStr = new String(trkptT.magvarStr);\r
- }\r
- \r
String speedStr = "-";\r
- if (trkptT.speedStr != null) {\r
- speedStr = new String(trkptT.speedStr);\r
+ double latitude = 90.5D;\r
+ double longitude = 180.5D;\r
+ TagTrkpt trkptT = null;\r
+ if (trkptE == null) {\r
+ System.out.println(String.format("%20s ", "Out of GPX logging time."));\r
+ if (!this.param_ImgOutputAll) {\r
+ continue;\r
+ }\r
+ }\r
+ else {\r
+ trkptT = new TagTrkpt(trkptE);\r
+\r
+ //Element wpt = createWptTag(image, uktime.getTime(), trkptE);\r
+ //String latStr = trkptT.lat.toString();\r
+ //String lonStr = trkptT.lon.toString();\r
+ latitude = trkptT.lat;\r
+ longitude = trkptT.lon;\r
+ \r
+ if (trkptT.eleStr != null) {\r
+ eleStr = new String(trkptT.eleStr);\r
+ }\r
+ \r
+ if (trkptT.magvarStr != null) {\r
+ magvarStr = new String(trkptT.magvarStr);\r
+ }\r
+ \r
+ if (trkptT.speedStr != null) {\r
+ speedStr = new String(trkptT.speedStr);\r
+ }\r
+ System.out.print(String.format("%12s %12s|", (new Double(latitude)).toString(), (new Double(longitude)).toString()));\r
+ System.out.println(String.format("%8s|%6s|%6s|", eleStr, magvarStr, speedStr));\r
}\r
\r
- System.out.print(String.format("%12s %12s|", (new Double(latitude)).toString(), (new Double(longitude)).toString()));\r
- System.out.println(String.format("%8s|%6s|%6s|", eleStr, magvarStr, speedStr));\r
ret = true;\r
+ FileOutputStream fos = null;\r
+ outDir.mkdir();\r
\r
if (exifWrite) {\r
TiffOutputSet outputSet = null;\r
- FileOutputStream fos = null;\r
\r
ImageMetadata meta = Imaging.getMetadata(image);\r
JpegImageMetadata jpegMetadata = (JpegImageMetadata)meta;\r
gpsDir.add(GpsTagConstants.GPS_TAG_GPS_DATE_STAMP, dateStamp);\r
}\r
\r
- //---- EXIF GPS elevation/ALTITUDE ----\r
- if (eleStr.equals("-") == false) {\r
- final double altitude = Double.parseDouble(eleStr);\r
- gpsDir.removeField(GpsTagConstants.GPS_TAG_GPS_ALTITUDE);\r
- gpsDir.add(GpsTagConstants.GPS_TAG_GPS_ALTITUDE, RationalNumber.valueOf(altitude));\r
- }\r
-\r
- //---- EXIF GPS magvar/IMG_DIRECTION ----\r
- if (magvarStr.equals("-") == false) {\r
- final double magvar = Double.parseDouble(magvarStr);\r
- gpsDir.removeField(GpsTagConstants.GPS_TAG_GPS_IMG_DIRECTION);\r
- gpsDir.add(GpsTagConstants.GPS_TAG_GPS_IMG_DIRECTION, RationalNumber.valueOf(magvar));\r
- }\r
-\r
- //---- EXIF GPS_ ----\r
- final String longitudeRef = (longitude < 0 ? "W" : "E");\r
- longitude = Math.abs(longitude);\r
- final String latitudeRef = (latitude < 0 ? "S" : "N");\r
- latitude = Math.abs(latitude);\r
-\r
- gpsDir.removeField(GpsTagConstants.GPS_TAG_GPS_LONGITUDE_REF);\r
- gpsDir.add(GpsTagConstants.GPS_TAG_GPS_LONGITUDE_REF, longitudeRef);\r
- gpsDir.removeField(GpsTagConstants.GPS_TAG_GPS_LATITUDE_REF);\r
- gpsDir.add(GpsTagConstants.GPS_TAG_GPS_LATITUDE_REF, latitudeRef);\r
- {\r
- double value = longitude;\r
- final double longitudeDegrees = (long) value;\r
- value %= 1;\r
- value *= 60.0;\r
- final double longitudeMinutes = (long) value;\r
- value %= 1;\r
- value *= 60.0;\r
- final double longitudeSeconds = value;\r
- gpsDir.removeField(GpsTagConstants.GPS_TAG_GPS_LONGITUDE);\r
- gpsDir.add(GpsTagConstants.GPS_TAG_GPS_LONGITUDE,\r
- RationalNumber.valueOf(longitudeDegrees),\r
- RationalNumber.valueOf(longitudeMinutes),\r
- RationalNumber.valueOf(longitudeSeconds));\r
- }\r
- {\r
- double value = latitude;\r
- final double latitudeDegrees = (long) value;\r
- value %= 1;\r
- value *= 60.0;\r
- final double latitudeMinutes = (long) value;\r
- value %= 1;\r
- value *= 60.0;\r
- final double latitudeSeconds = value;\r
- gpsDir.removeField(GpsTagConstants.GPS_TAG_GPS_LATITUDE);\r
- gpsDir.add(GpsTagConstants.GPS_TAG_GPS_LATITUDE,\r
- RationalNumber.valueOf(latitudeDegrees),\r
- RationalNumber.valueOf(latitudeMinutes),\r
- RationalNumber.valueOf(latitudeSeconds));\r
+ if (trkptE != null) {\r
+ //---- EXIF GPS elevation/ALTITUDE ----\r
+ if (eleStr.equals("-") == false) {\r
+ final double altitude = Double.parseDouble(eleStr);\r
+ gpsDir.removeField(GpsTagConstants.GPS_TAG_GPS_ALTITUDE);\r
+ gpsDir.add(GpsTagConstants.GPS_TAG_GPS_ALTITUDE, RationalNumber.valueOf(altitude));\r
+ }\r
+ \r
+ //---- EXIF GPS magvar/IMG_DIRECTION ----\r
+ if (magvarStr.equals("-") == false) {\r
+ final double magvar = Double.parseDouble(magvarStr);\r
+ gpsDir.removeField(GpsTagConstants.GPS_TAG_GPS_IMG_DIRECTION);\r
+ gpsDir.add(GpsTagConstants.GPS_TAG_GPS_IMG_DIRECTION, RationalNumber.valueOf(magvar));\r
+ }\r
+ \r
+ //---- EXIF GPS_ ----\r
+ final String longitudeRef = (longitude < 0 ? "W" : "E");\r
+ longitude = Math.abs(longitude);\r
+ final String latitudeRef = (latitude < 0 ? "S" : "N");\r
+ latitude = Math.abs(latitude);\r
+\r
+ gpsDir.removeField(GpsTagConstants.GPS_TAG_GPS_LONGITUDE_REF);\r
+ gpsDir.add(GpsTagConstants.GPS_TAG_GPS_LONGITUDE_REF, longitudeRef);\r
+ gpsDir.removeField(GpsTagConstants.GPS_TAG_GPS_LATITUDE_REF);\r
+ gpsDir.add(GpsTagConstants.GPS_TAG_GPS_LATITUDE_REF, latitudeRef);\r
+ {\r
+ double value = longitude;\r
+ final double longitudeDegrees = (long) value;\r
+ value %= 1;\r
+ value *= 60.0;\r
+ final double longitudeMinutes = (long) value;\r
+ value %= 1;\r
+ value *= 60.0;\r
+ final double longitudeSeconds = value;\r
+ gpsDir.removeField(GpsTagConstants.GPS_TAG_GPS_LONGITUDE);\r
+ gpsDir.add(GpsTagConstants.GPS_TAG_GPS_LONGITUDE,\r
+ RationalNumber.valueOf(longitudeDegrees),\r
+ RationalNumber.valueOf(longitudeMinutes),\r
+ RationalNumber.valueOf(longitudeSeconds));\r
+ }\r
+ {\r
+ double value = latitude;\r
+ final double latitudeDegrees = (long) value;\r
+ value %= 1;\r
+ value *= 60.0;\r
+ final double latitudeMinutes = (long) value;\r
+ value %= 1;\r
+ value *= 60.0;\r
+ final double latitudeSeconds = value;\r
+ gpsDir.removeField(GpsTagConstants.GPS_TAG_GPS_LATITUDE);\r
+ gpsDir.add(GpsTagConstants.GPS_TAG_GPS_LATITUDE,\r
+ RationalNumber.valueOf(latitudeDegrees),\r
+ RationalNumber.valueOf(latitudeMinutes),\r
+ RationalNumber.valueOf(latitudeSeconds));\r
+ }\r
}\r
\r
- outDir.mkdir();\r
ExifRewriter rewriter = new ExifRewriter();\r
try {\r
fos = new FileOutputStream(new File(outDir, imageName));\r
fos.close();\r
}\r
}\r
- }\r
\r
- if (Boolean.parseBoolean(params.getProperty(AppParameters.GPX_OUTPUT_WPT))) {\r
- Element temp = createWptTag(image, itime.getTime(), trkptT.trkpt);\r
- gpx.appendChild(temp);\r
+ if (Boolean.parseBoolean(params.getProperty(AppParameters.GPX_OUTPUT_WPT))) {\r
+ if (trkptT != null) {\r
+ Element temp = createWptTag(image, itime.getTime(), trkptT.trkpt);\r
+ gpx.appendChild(temp);\r
+ }\r
+ }\r
+ }\r
+ else {\r
+ if (this.param_ImgOutputAll) {\r
+ // EXIFの変換を伴わない単純なファイルコピー\r
+ FileInputStream sStream = new FileInputStream(image);\r
+ FileInputStream dStream = new FileInputStream(new File(outDir, imageName));\r
+ FileChannel srcChannel = sStream.getChannel();\r
+ FileChannel destChannel = dStream.getChannel();\r
+ try {\r
+ srcChannel.transferTo(0, srcChannel.size(), destChannel);\r
+ }\r
+ finally {\r
+ srcChannel.close();\r
+ destChannel.close();\r
+ sStream.close();\r
+ dStream.close();\r
+ }\r
+ }\r
}\r
}\r
return ret;\r
\r
static Document document;\r
\r
+\r
/**\r
* 2012-06-10T05:09:46Z (日本時間の'2012-06-10T14:09:46')\r
*/\r
public class AdjustTime extends JFrame
{
public static final String PROGRAM_NAME = "AdjustTime for JOSM";
- public static final String PROGRAM_VARSION = "3.0";
- public static final String PROGRAM_UPDATE = "2016/10/04";
+ public static final String PROGRAM_VARSION = "3.1";
+ public static final String PROGRAM_UPDATE = "2017/05/15";
// Used for addNotify check.
boolean fComponentsAdjusted = false;
ParameterPanelImageFile arg2_baseTimeImg;
ParameterPanel arg3_basetiome;
JCheckBox outputIMG; // IMGの変換 する/しない
+ JCheckBox outputIMG_all; // 'out of GPX time'でもIMGの変換をする {ON | OFF}
JCheckBox exifON; // EXIF 書き出しモード / !(EXIFの書き換えはしない)
JCheckBox gpxOutputWpt; // GPXに<WPT>を書き出す
JCheckBox gpxOverwriteMagvar; // ソースGPXの<MAGVAR>を無視する
else if (object == outputIMG) {
outputIMG_Action(event);
}
+ else if (object == outputIMG_all) {
+ outputIMGall_Action(event);
+ }
else if (object == exifON) {
exifON_Action(event);
}
outputIMG = new JCheckBox("IMGの変換をする", Boolean.parseBoolean(params.getProperty(AppParameters.IMG_OUTPUT)));
tmpPanel5.add(outputIMG);
+ outputIMG_all = new JCheckBox("GPXファイル時間外のファイルもコピーする", Boolean.parseBoolean(params.getProperty(AppParameters.IMG_OUTPUT_ALL)));
+ tmpPanel5.add(outputIMG_all);
+
arg5_outputFolder = new ParameterPanelFolder("出力フォルダ: ", params.getProperty(AppParameters.IMG_OUTPUT_FOLDER));
tmpPanel5.add(arg5_outputFolder);
arg2_baseTimeImg.argField.addActionListener(lSymAction);
arg2_baseTimeImg.openButton.addActionListener(lSymAction);
doButton.addActionListener(lSymAction);
+ outputIMG_all.addActionListener(lSymAction);
exifON.addActionListener(lSymAction);
gpxOutputSpeed.addActionListener(lSymAction);
noFirstNode.addActionListener(lSymAction);
arg5_outputFolder.setEnabled(outputIMG.isEnabled());
}
+ void outputIMGall_Action (ActionEvent event) {
+ }
+
/**
* checkbox[EXIF書き出し]を変更した場合のアクション
* @param event
this.params.setProperty(AppParameters.IMG_TIME, arg3_basetiome.getText());
this.params.setProperty(AppParameters.IMG_OUTPUT, String.valueOf(outputIMG.isSelected()));
this.params.setProperty(AppParameters.IMG_OUTPUT_FOLDER, arg5_outputFolder.getText());
+ this.params.setProperty(AppParameters.IMG_OUTPUT_ALL, String.valueOf(exifON.isSelected()));
this.params.setProperty(AppParameters.IMG_OUTPUT_EXIF, String.valueOf(exifON.isSelected()));
this.params.setProperty(AppParameters.GPX_OVERWRITE_MAGVAR, String.valueOf(gpxOverwriteMagvar.isSelected()));
this.params.setProperty(AppParameters.GPX_OUTPUT_SPEED, String.valueOf(gpxOutputSpeed.isSelected()));