Studenten Projekt [GSM u. 3G Abdeckung auf Deutschlandkarte]

d.h. UTM lässt sich nicht in OSM einbinden, ich muss es vorher Umwandeln und dann einbeinden?

Ich denke dass ich die Daten öfter brauchen werde, von daher müsste ich vll ein kleines Programm schreiben, könntet ihr mir hierzu ein paar Tipps geben?

Werde mich dann erstmal wieder in Java einlesen müssen…

Sonst kennt ihr kein Programm was das schon kann? Eine CSV datei mit UTM Umwandeln kann? Danke für eure Tipps.

Vielleicht hilft das:
http://www.mail-archive.com/talk-de@openstreetmap.org/msg64226.html

in dem dortigen Link auf
http://www.uwgb.edu/dutchs/UsefulData/UTMFormulas.htm
ist auch ein entsprechendes Excel Blatt verlinkt.

Chris

Also wie gesagt Pro4j hat so ein Kommandozeilen Tool, da würde ich nicht unbedingt was selber bauen, es sei denn es passt in deinen Workflow. Ich weiß grade nicht ob die freien GIS Systeme das Einlesen von .CSV unterstützen, denke es aber mal http://www.qgis.org.
Ansonsten gibt es auch noch andere z.B. http://earth-info.nga.mil/GandG/geotrans/

Irgendwie will sourceforge da aber nichts zum Download anbieten, oder übersehe ich was?

Gruß,
ajoessen

Ja komisch aber nehm doch einfach die vom Orginalautor http://www.jhlabs.com/java/maps/proj/javaproj-1.0.9.zip

Hi Leute,

ich habe die Daten jetzt konvertiert. Es waren WGS84 Koordinaten in Grad Minuten und Sekunden schreibweise, allerdings ohne Trennung durch Punkt oder Komma…

Jetzt muss ich anhand der konvertierten Daten eine *.gpx erzeugen. Mit dem GPS Visualizer gestaltet sich das schwierig, denn das reverse Geocoding beherrcht dieses Online Tool nicht.

Jetzt bräuchte ich allerdings eine alternative. Sie kann auch kostenpflichtig sein. Wichtig ist nur das ich meine Daten verwenden muss. Das Format der Daten sieht wie folgt aus:

NODE_ID NE_TYP STANDORTNAME USERLABEL Pos_B Pos_L
43000043 BTSSM Berlin/GüterBhf-Schönholz 315 GBhf_Schoenholz_1C 52,571111 13,383056

Gruß Dennis

hi dennis,
nur noch mal zu technischen klarstellung:
a) sind das deine rohdaten? – hab ich gerade gecheckt. sieht gut aus (da ist ne hütte auf dem bhf-gelände)
b) die willst du - mit irgendwas - nach gpx konvertieren?
c) warum gerade gpx? – auch klar: damit deine ol-anwendung das verarbeiten kann.

lg
walter
bleibt noch b übrig. gpx ist nicht “meine baustelle” aber die kollegen helfen dir sicher weiter.

Hi Dennis, ja so richtig verstehe ich das auch noch nicht.

Also die zu GPX zu konvertieren ist nicht schwer, da nimmst du dir einen Skript, der die beiden POS Spalten in das GPX Format quetscht.
Ich verstehe allerdings nicht wieso du da reverse Geocoding brauchst (Lat, Lon → Ort, Straße, Hausnummer, PLZ)?

Hi,

GPSBabel hat ein “Universal-CSV” als “input-Format”, damit geht z. B.

No,Description,Comment,Name,Latitude,Longitude
1,BTSSM,Berlin/GueterBhf-Schoenholz 315,GBhf_Schoenholz_1C,52.571111,13.383056

nach gpx.
Oder so ähnlich :wink:

Ciao,
Frank

Super Danke für dein Hinweis, den werde ich mal ausprobieren :wink:

Hoffe mal es klappt :slight_smile:

Hi Jungs,

also habe mir ein kleines Java Tool geschrieben, welches mir die Verarbeitung der Daten erledigt.

Habe jetzt nur noch ne Frage zu dem Marker Object, dass ich verwende. Kann man die Box die beim Klick auf den Marker erscheint anpassen? Sprich Größe und Zeilenumbrüche etc. ?

ja dies ist definitiv möglich. Zeilenumbrüche kannst du beispielsweise als html code einfügen

Bei dem anderen habe ich noch keine Erfahrungen, aber das Beispiel bei Netzwolfs Öffnungszeiten zeigt eindrucksvoll das es geht. Wahrscheinlich musst du dafür an die Klasse Popup noch Parameter übergeben.

es gibt hier auch Mädels :wink:

na klar,
allerdings wieder verschiedene Wege - aber sonst würd die ganze Sache ja auch keinen Spass machen :wink:


 popup = new OpenLayers.Popup.FramedCloud(                    // Constructor !!
        "featurePopup",                                      // div des popups
    feature.geometry.getBounds().getCenterLonLat(),          // lonlat
    null,                                                    // content size  
    buildPopupHTML(osm_type, id, feature.attributes),        // HTML 
    null,                                                    // anchor
    true                            
   );
  
   popup.minSize = new OpenLayers.Size(150,0);
   popup.Autosize = true;

   map.addPopup(popup);                                      // execute popup

es gibt auch noch maxSize …
ich wollte hier nen popup haben mit Mindestbreite, der sich an die aktuellen Daten anpasst.

gruss
walter

Hallo Dennis, wie wäre es wenn du uns dein Java-Tool präsentieren würdest? Bin für solche Helferlein immer offen :wink:
Georg

So dann hier mal der Java Code:

Ok, Danke… werd mal schauen ob ich damit klarkomme.
Georg

Hi Walter,

iwie komme ich damit noch nicht ganz klar…
Wo sollte ich das denn einfügen? Als Grundlage meiner Entwicklung dient das Projekt von AB-Finnentrop aus einem der ersten Beiträge.
Kannst du mir das anhand dessen nochmal genauer erklären?

Gruß Dennis

PS: Habe eine GUI für den GPX Konverter gebaut: Hier der Code aus beiden Klassen:

Klasse Translator


import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.sax.SAXTransformerFactory;
import javax.xml.transform.sax.TransformerHandler;
import javax.xml.transform.stream.StreamResult;

import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;


public class Translator {
    private String Inputfile;
    private String Outputfile;
    private StreamResult out;
    private TransformerHandler th;
    private AttributesImpl atts;
    private List<String> list;

    public Translator(){
        
    }
    public void setInputFilename(String s){
        Inputfile = s;
        
    }
    public String getInputFilename(){
        return Inputfile;
    }
    
    public void setOutputFilename(String s){
        Outputfile = s;
        
    }
    public String getOutputFilename(){
        return Outputfile;
    }
    
    public List<String> einlesen() {
        
        // Einlesen des Files und spliten
        FileReader myFile = null;
        BufferedReader buff = null;
        final List<String> lines = new ArrayList<String>();
     
        try {
            myFile = new FileReader(Inputfile);
            buff = new BufferedReader(myFile);
            String line;
            while ((line = buff.readLine()) != null) {
               // System.out.println(line); // kontrolle was eingelesen
     
                lines.add(line);
            }
        } catch (IOException e) {
            System.err.println("Error2 :" + e);
        } finally {
            try {
                buff.close();
                myFile.close();
            } catch (IOException e) {
                System.err.println("Error2 :" + e);
            }
        }
     
        final String[][] valuesArray = new String[lines.size()][];
        int cnt = 0;
        for (final String line : lines) {
            valuesArray[cnt++] = line.split(",");
        }
        return lines;
    }
        

    //Umwandeln der Liste in GPX(XML) Code
     
        public void translate() {
            list = einlesen();
            try {
                out = new StreamResult(Outputfile);
                initXML();
                for (String str : list) {
                    process(str);
                }
                closeXML();
            } catch (TransformerConfigurationException ex) {
                Logger.getLogger(Translator.class.getName()).log(Level.SEVERE, null, ex);
            } catch (SAXException ex) {
                Logger.getLogger(Translator.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
     
        private void initXML() throws TransformerConfigurationException, SAXException {
            SAXTransformerFactory tf = (SAXTransformerFactory) SAXTransformerFactory.newInstance();
            th = tf.newTransformerHandler();
            Transformer serializer = th.getTransformer();
            serializer.setOutputProperty(OutputKeys.ENCODING, "ISO-8859-1");
            serializer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
            serializer.setOutputProperty(OutputKeys.INDENT, "yes");
            th.setResult(out);
            th.startDocument();
            atts = new AttributesImpl();
            th.startElement("", "", "gpx", atts);

        }
     
        private void process(final String s) throws SAXException {
            String[] elements = s.split(";");
            atts.clear();
            atts.addAttribute("", "", "lat", "", "" + elements[3]);
            atts.addAttribute("", "", "lon", "", "" + elements[4]);
            th.startElement("", "", "wpt", atts);
            atts.clear();
            th.startElement("", "", "name", atts);
            String name = "Cell-ID: " + elements[2];
            th.characters(name.toCharArray(), 0, name.length());
            th.endElement("", "", "name");
            th.startElement("", "", "cmt", atts);
            th.characters(elements[0].toCharArray(), 0, elements[0].length());
            th.endElement("", "", "cmt");
            th.startElement("", "", "desc", atts);
            String desc = "Standortname: " + elements[1] + "\r\n"+ "Netztyp: " + elements[0] + "\r\n" + "Releasecause: " + elements[5] + " Anzahl: " + elements[6];
            th.characters(desc.toCharArray(), 0, desc.length());
            th.endElement("", "", "desc");
            th.endElement("", "", "wpt");
        }
     
        private void closeXML() throws SAXException {
            th.endElement("", "", "gpx");
            th.endDocument();
        }
        
        public boolean start() {
            
        try{
            translate();
            }catch (ArrayIndexOutOfBoundsException ex){
            return false;
        }//    catch ( ex){
//            return false;
//        }
            return true;
          
            
        }
}


Klasse FileChooserTest


import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.Dimension;
import javax.swing.JTextField;
import java.awt.Rectangle;
import javax.swing.JButton;
import java.io.*;
import javax.swing.*;

public class FileChooserTest extends JFrame {

    private static final long serialVersionUID = 1L;
    private JPanel jContentPane = null;
    private JTextField InputFileTextfield = null;
    private JTextField OutputFileTextfield = null;
    private JButton jButton = null;
    private JButton jButton1 = null;
    private JButton Generate = null;
    Translator t = new Translator();  //  @jve:decl-index=0:
    

    /**
     * This is the default constructor
     */
    public FileChooserTest() {
        super();
        initialize();
        
    }

    /**
     * This method initializes this
     * 
     * @return void
     */
    private void initialize() {
        fc.setSize(new Dimension(557, 336));
        this.setSize(661, 248);
        this.setContentPane(getJContentPane());
        this.setTitle("GPS Translator");
        this.setVisible(true);
        
    }

    /**
     * This method initializes jContentPane
     * 
     * @return javax.swing.JPanel
     */
    private JPanel getJContentPane() {
        if (jContentPane == null) {
            jContentPane = new JPanel();
            jContentPane.setLayout(null);
            jContentPane.add(getInputFileTextfield(), null);
            jContentPane.add(getOutputFileTextfield(), null);
            jContentPane.add(getJButton(), null);
            jContentPane.add(getJButton1(), null);
            jContentPane.add(getGenerate(), null);
        }
        return jContentPane;
    }

    /**
     * This method initializes InputFilenameTextfield    
     *     
     * @return javax.swing.JTextField    
     */
    private JTextField getInputFileTextfield() {
        if (InputFileTextfield == null) {
            InputFileTextfield = new JTextField();
            InputFileTextfield.setBounds(new Rectangle(115, 32, 515, 35));
            InputFileTextfield.setText("Bitte wählen sie eine csv Datei aus");
        }
        return InputFileTextfield;
    }

    /**
     * This method initializes OutputFileTextfield    
     *     
     * @return javax.swing.JTextField    
     */
    private JTextField getOutputFileTextfield() {
        if (OutputFileTextfield == null) {
            OutputFileTextfield = new JTextField();
            OutputFileTextfield.setBounds(new Rectangle(117, 106, 512, 36));
            OutputFileTextfield.setText("Bitte wählen sie als Dateiformat .gpx");
        }
        return OutputFileTextfield;
    }

    /**
     * This method initializes jButton    
     *     
     * @return javax.swing.JButton    
     */
    JFileChooser fc = new JFileChooser();  //  @jve:decl-index=0:visual-constraint="90,288"

    private JButton getJButton() {
        if (jButton == null) {
            jButton = new JButton("Input File");
            jButton.setBounds(new Rectangle(8, 27, 100, 39));
            jButton.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                     if (e.getSource() == jButton) {
                            int returnVal = fc.showOpenDialog(FileChooserTest.this);

                            if (returnVal == JFileChooser.APPROVE_OPTION) {
                                File file = fc.getSelectedFile();
                                InputFileTextfield.setText(file.getAbsolutePath());
                                                            
                            }
                     }
                }
            });
        }
        return jButton;
    }

    /**
     * This method initializes jButton1    
     *     
     * @return javax.swing.JButton    
     */
    private JButton getJButton1() {
        if (jButton1 == null) {
            jButton1 = new JButton("Output File");
            jButton1.setBounds(new Rectangle(6, 105, 102, 36));
            jButton1.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                         if (e.getSource() == jButton1) {
                                int returnVal = fc.showOpenDialog(FileChooserTest.this);

                                if (returnVal == JFileChooser.APPROVE_OPTION) {
                                    File file = fc.getSelectedFile();
                                    OutputFileTextfield.setText(file.getAbsolutePath());
                                    
                                }
                         }
                    }
            });
        }
        return jButton1;
    }
    
    public String getInputTextField(){
        return InputFileTextfield.getText();
    }
    
    public String getOutputTextField(){
        return OutputFileTextfield.getText();
    }
    

    /**
     * This method initializes Generate    
     *     
     * @return javax.swing.JButton    
     */
    private JButton getGenerate() {
        if (Generate == null) {
            Generate = new JButton("Generate");
            Generate.setBounds(new Rectangle(494, 167, 129, 38));
            Generate.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                    t.setInputFilename(getInputTextField());
                    t.setOutputFilename(getOutputTextField());
                    if (t.getInputFilename().endsWith("csv") || t.getOutputFilename().endsWith("gpx")|| t.getOutputFilename().endsWith("xml")){
                        t.start();    
                        JOptionPane.showMessageDialog(null, "Umwandlung erfolgreich abgeschlossen!", "GPS Translator", JOptionPane.OK_CANCEL_OPTION);
                    }else{
                        JOptionPane.showMessageDialog(null, "Bitte Eingaben kontrollieren und auf Dateiendung achten", "GPS Translator", JOptionPane.OK_CANCEL_OPTION);
                    }
                }
            });
            
        }
        return Generate;
    }

}  //  @jve:decl-index=0:visual-constraint="40,17"


Und wo genau muss ich das anpassen?

Wo genau kann ich einstellen, dass mein marker eine bestimmt Größe hat und Zeilenumbrüche darstellen?

Hi will mein Projekt jetzt abschließen, einen Punkt muss ich noch machen:
Aktuell ist es so, dass wenn ein Pop-Up geschloßen wird, es nicht wieder geöffnet werden kann. Wie kann ich das ändern?

Also ich hatte da auch mal Probleme und bin seither bei diesem Select Control geblieben, schau mal hier in den Quellcode http://usergroups.openstreetmap.de