2011-08-16 19 views
5

Me pregunto, si existe cualquier biblioteca de Java, lo que podría generar poi-datos para dispositivos de navegación TomTom (normalmente el archivo tiene .ov2 extensión).biblioteca de Java para generar datos de TomTom GPS POI

que utilizar TomTom makeov2.exe util de TomTom, pero no es estable y parece que no más compatible.

Respuesta

3

yo no era capaz de encontrar una biblioteca que acabe de escribir, aunque sí encontré esta clase para leer archivos .ov2:

package readers; 

import java.io.FileInputStream; 
import java.io.IOException; 

public class OV2RecordReader { 

    public static String[] readOV2Record(FileInputStream inputStream){ 
     String[] record = null; 
     int b = -1; 
     try{ 
      if ((b = inputStream.read())> -1) { 
       // if it is a simple POI record 
       if (b == 2) { 
        record = new String[3]; 
        long total = readLong(inputStream); 

        double longitude = (double) readLong(inputStream)/100000.0; 
        double latitude = (double) readLong(inputStream)/100000.0; 

        byte[] r = new byte[(int) total - 13]; 
        inputStream.read(r); 

        record[0] = new String(r); 
        record[0] = record[0].substring(0,record[0].length()-1); 
        record[1] = Double.toString(latitude); 
        record[2] = Double.toString(longitude); 
       } 
       //if it is a deleted record 
       else if(b == 0){ 
        byte[] r = new byte[9]; 
        inputStream.read(r); 
       } 
       //if it is a skipper record 
       else if(b == 1){ 
        byte[] r = new byte[20]; 
        inputStream.read(r); 
       } 
       else{ 
        throw new IOException("wrong record type"); 
       } 
      } 
      else{ 
       return null; 
      } 
     } 
     catch(IOException e){ 
      e.printStackTrace(); 
     } 
     return record; 
    } 

    private static long readLong(FileInputStream is){ 
     long res = 0; 
     try{ 
      res = is.read(); 
      res += is.read() <<8; 
      res += is.read() <<16; 
      res += is.read() <<24; 
     } 
     catch(IOException e){ 
      e.printStackTrace(); 
     } 
     return res; 
    } 
} 

También encontré este código PHP para escribir el archivo:

<?php 
$csv = file("File.csv"); 
$nbcsv = count($csv); 
$file = "POI.ov2"; 
$fp = fopen($file, "w"); 
for ($i = 0; $i < $nbcsv; $i++) { 
    $table = split(",", chop($csv[$i])); 
    $lon = $table[0]; 
    $lat = $table[1]; 
    $des = $table[2]; 
    $TT = chr(0x02).pack("V",strlen($des)+14).pack("V",round($lon*100000)).pack("V",round($lat*100000)).$des.chr(0x00); 
    @fwrite($fp, "$TT"); 
} 
fclose($fp); 

no estoy seguro de cómo te gustaría ir acerca de cómo escribir una clase Java (o la ampliación de la de arriba) para escribir el archivo como la función de PHP hace, pero usted puede ser capaz de obtener una idea de cómo el archivo está codificado de eso.

+0

gracias por la respuesta. Pero a decir verdad, preferiría una biblioteca lista para usar, probada y compatible, y no escribir una nueva desde cero. – never

Cuestiones relacionadas