add json export

This commit is contained in:
afischerdev 2020-06-29 10:02:27 +02:00
parent b4dd0edd44
commit 98b7b7312c
2 changed files with 49 additions and 5 deletions

View file

@ -708,6 +708,15 @@ public final class OsmTrack
public List<String> iternity; public List<String> iternity;
public void writeJson( String filename ) throws Exception
{
BufferedWriter bw = new BufferedWriter( new FileWriter( filename ) );
bw.write( formatAsGeoJson() );
bw.close();
}
public String formatAsGeoJson() public String formatAsGeoJson()
{ {
StringBuilder sb = new StringBuilder( 8192 ); StringBuilder sb = new StringBuilder( 8192 );

View file

@ -5,7 +5,9 @@ import java.io.BufferedWriter;
import java.io.File; import java.io.File;
import java.io.FileWriter; import java.io.FileWriter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.StringTokenizer;
import android.os.Bundle; import android.os.Bundle;
import btools.router.OsmNodeNamed; import btools.router.OsmNodeNamed;
@ -16,6 +18,10 @@ import btools.router.RoutingEngine;
public class BRouterWorker public class BRouterWorker
{ {
private static final int OUTPUT_FORMAT_GPX = 0;
private static final int OUTPUT_FORMAT_KML = 1;
private static final int OUTPUT_FORMAT_JSON = 2;
public String baseDir; public String baseDir;
public String segmentDir; public String segmentDir;
public String profileName; public String profileName;
@ -65,6 +71,22 @@ public class BRouterWorker
{ {
rc.startDirection = Integer.valueOf( params.getInt( "direction" ) ); rc.startDirection = Integer.valueOf( params.getInt( "direction" ) );
} }
if (params.containsKey( "extraParams" )) { // add user params
String extraParams = params.getString("extraParams");
if (rc.keyValues == null) rc.keyValues = new HashMap<String,String>();
StringTokenizer tk = new StringTokenizer( extraParams, "?&" );
while( tk.hasMoreTokens() ) {
String t = tk.nextToken();
StringTokenizer tk2 = new StringTokenizer( t, "=" );
if ( tk2.hasMoreTokens() ) {
String key = tk2.nextToken();
if ( tk2.hasMoreTokens() ) {
String value = tk2.nextToken();
rc.keyValues.put( key, value );
}
}
}
}
readNogos( params ); // add interface provided nogos readNogos( params ); // add interface provided nogos
RoutingContext.prepareNogoPoints( nogoList ); RoutingContext.prepareNogoPoints( nogoList );
@ -99,20 +121,33 @@ public class BRouterWorker
} }
String format = params.getString("trackFormat"); String format = params.getString("trackFormat");
boolean writeKml = format != null && "kml".equals( format ); int writeFromat = OUTPUT_FORMAT_GPX;
if (format != null) {
if ("kml".equals(format)) writeFromat = OUTPUT_FORMAT_KML;
if ("json".equals(format)) writeFromat = OUTPUT_FORMAT_JSON;
}
OsmTrack track = cr.getFoundTrack(); OsmTrack track = cr.getFoundTrack();
if ( track != null ) if ( track != null )
{ {
if ( pathToFileResult == null ) if ( pathToFileResult == null )
{ {
if ( writeKml ) return track.formatAsKml(); switch ( writeFromat ) {
return track.formatAsGpx(); case OUTPUT_FORMAT_GPX: return track.formatAsGpx();
case OUTPUT_FORMAT_KML: return track.formatAsKml();
case OUTPUT_FORMAT_JSON: return track.formatAsGeoJson();
default: return track.formatAsGpx();
}
} }
try try
{ {
if ( writeKml ) track.writeKml(pathToFileResult); switch ( writeFromat ) {
else track.writeGpx(pathToFileResult); case OUTPUT_FORMAT_GPX: track.writeGpx(pathToFileResult); break;
case OUTPUT_FORMAT_KML: track.writeKml(pathToFileResult); break;
case OUTPUT_FORMAT_JSON: track.writeJson(pathToFileResult); break;
default: track.writeGpx(pathToFileResult); break;
}
} }
catch( Exception e ) catch( Exception e )
{ {