From 5c1905d2effa0949a7625bb5ba6a912d1c249f1a Mon Sep 17 00:00:00 2001 From: sigonasr2 Date: Fri, 11 May 2018 19:58:44 -0500 Subject: [PATCH] Added checkbox to flip Latitude/Longitude. Added prompt if Latitude may actually be wrong. Added tags to output file to properly process . --- KMLConverter/KMLConverter.jar | Bin 9401 -> 10238 bytes KMLConverter/input.txt | 2 +- KMLConverter/output.kml | 18 +++++++++++ KMLConverter/src/sig/kml/KMLConverter.java | 33 +++++++++++++++++++-- KMLConverter/src/sig/kml/KMLWindow.java | 29 ++++++++++++++---- 5 files changed, 72 insertions(+), 10 deletions(-) create mode 100644 KMLConverter/output.kml diff --git a/KMLConverter/KMLConverter.jar b/KMLConverter/KMLConverter.jar index a9de4c50c0214ae4535d2dc036904ab5205bf00a..4989e1a6d6fd83443c260746742e057cdd9fd145 100644 GIT binary patch delta 9567 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 delta 8707 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 L69N{^zpnllv79ry diff --git a/KMLConverter/input.txt b/KMLConverter/input.txt index 8127d56..95c0435 100644 --- a/KMLConverter/input.txt +++ b/KMLConverter/input.txt @@ -1,2 +1,2 @@ -97.998046875,31.503629305773032 --96.998046875ABCDEFG31.503629305773032 \ No newline at end of file +-96.998046875,31.503629305773032 \ No newline at end of file diff --git a/KMLConverter/output.kml b/KMLConverter/output.kml new file mode 100644 index 0000000..2864280 --- /dev/null +++ b/KMLConverter/output.kml @@ -0,0 +1,18 @@ + + + + + +-97.998046875,31.503629305773032,0 + + + + + + +-96.998046875,31.503629305773032,0 + + + + + diff --git a/KMLConverter/src/sig/kml/KMLConverter.java b/KMLConverter/src/sig/kml/KMLConverter.java index 090aaa1..3beb29e 100644 --- a/KMLConverter/src/sig/kml/KMLConverter.java +++ b/KMLConverter/src/sig/kml/KMLConverter.java @@ -13,10 +13,14 @@ import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; +import javax.swing.JOptionPane; + public class KMLConverter { final static String TEMPLATE = "\n" + "\n" + + "\n" + "{MARKERS}" + + "\n" + "\n"; final static String MARKER_TEMPLATE = "\n" + "\n" @@ -26,22 +30,41 @@ public class KMLConverter { static KMLWindow window; - KMLConverter(String input_fileloc, String output_fileloc) { + KMLConverter(String input_fileloc, String output_fileloc, boolean flip_vals) { String markers = ""; File f = new File(input_fileloc); Scanner reader; int datapoints = 0; + boolean lastanswer=false; try { reader = new Scanner(f); double numb1,numb2; window.addStatusMessage("Reading file from "+input_fileloc+"..."); + boolean flipped = false; while (reader.hasNextLine()) { String nextLine = reader.nextLine(); try { Point2D.Double vals = SplitLine(nextLine); - numb1 = vals.x; - numb2 = vals.y; + if (flip_vals) { + double tmp = vals.y; + vals.y = vals.x; + vals.x = tmp; + } + if (!flipped && !lastanswer && InvalidLatitudeFound(vals.y)) { + lastanswer=true; + if (JOptionPane.showOptionDialog(window, "We detected Latitude values greater than 90 or less than -90. This is usually because your Longitude and Latitude values are flipped.\n\nWould you like us to flip the values for you?", "Invalid Latitude Values", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, null, JOptionPane.YES_OPTION)==JOptionPane.YES_OPTION) { + window.addStatusMessage("Flipping values..."); + flipped=true; + } + } + if (flipped) { + numb1 = vals.y; + numb2 = vals.x; + } else { + numb1 = vals.x; + numb2 = vals.y; + } window.addStatusMessage("Read coords ("+(datapoints+1)+"): ["+numb1+","+numb2+"]"); markers = ((markers.length()>0)?markers+"\n":"")+MARKER_TEMPLATE.replace("{COORDINATES}", numb1+","+numb2+",0")+"\n"; datapoints++; @@ -68,6 +91,10 @@ public class KMLConverter { } } + private boolean InvalidLatitudeFound(double y) { + return y<-90 || y>90; + } + public static void main(String[] args) { javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { diff --git a/KMLConverter/src/sig/kml/KMLWindow.java b/KMLConverter/src/sig/kml/KMLWindow.java index 4b201ce..81074f2 100644 --- a/KMLConverter/src/sig/kml/KMLWindow.java +++ b/KMLConverter/src/sig/kml/KMLWindow.java @@ -11,25 +11,31 @@ import java.io.IOException; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JButton; +import javax.swing.JCheckBox; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JLabel; +import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JSeparator; import javax.swing.JTextArea; public class KMLWindow extends JFrame{ - JFrame f = new JFrame("KMLConverter 1.0"); - String input_fileloc="./input.txt", output_fileloc="./output.txt"; + JFrame f = new JFrame("KMLConverter 1.1"); + String input_fileloc="./input.txt", output_fileloc="./output.kml"; ButtonLabel input = null,output = null; JTextArea status_window = null; JScrollPane pane; - JPanel panel = new JPanel(); + JPanel panel = new JPanel(),checkboxpanel = new JPanel(); + JCheckBox latlong = new JCheckBox("Latitude values are first? (Lat,Long)"); KMLWindow() { + latlong.setBackground(new Color(170,180,200)); + checkboxpanel.setLayout(new BoxLayout(checkboxpanel,BoxLayout.LINE_AXIS)); + try { - input=new ButtonLabel("Browse...",new File(".").getCanonicalPath(),"Input",this); - output=new ButtonLabel("Browse...",new File(".").getCanonicalPath(),"Output",this); + input=new ButtonLabel("Browse...",new File(input_fileloc).getCanonicalPath(),"Input",this); + output=new ButtonLabel("Browse...",new File(output_fileloc).getCanonicalPath(),"Output",this); } catch (IOException e) { e.printStackTrace(); } @@ -37,7 +43,11 @@ public class KMLWindow extends JFrame{ ActionListener convert_action = new ActionListener(){ @Override public void actionPerformed(ActionEvent arg0) { - new KMLConverter(input_fileloc,output_fileloc); + new KMLConverter(input_fileloc,output_fileloc,latlong.isSelected()); + } + + private boolean InvalidLatitudeFound() { + return true; } }; @@ -54,12 +64,19 @@ public class KMLWindow extends JFrame{ status_window.setBackground(new Color(0,0,96)); status_window.setForeground(new Color(220,220,220)); + checkboxpanel.add(latlong); + //checkboxpanel.add(Box.createHorizontalStrut(latlong.getWidth()/2)); + pane = new JScrollPane(status_window); pane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); pane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); pane.setPreferredSize(new Dimension(320,64)); panel.setLayout(new BoxLayout(panel,BoxLayout.PAGE_AXIS)); input.Initialize(panel); + panel.add(checkboxpanel); + panel.add(Box.createVerticalStrut(6)); + panel.add(new JSeparator()); + panel.add(Box.createVerticalStrut(6)); output.Initialize(panel); panel.add(Box.createVerticalStrut(6)); panel.add(new JSeparator());