]> git.argeo.org Git - gpl/argeo-slc.git/blob - GpsBabelPositionProvider.java
83aca1d845dc770348765a22c4761309604367fb
[gpl/argeo-slc.git] / GpsBabelPositionProvider.java
1 package org.argeo.slc.gpsbabel;
2
3 import java.util.StringTokenizer;
4
5 import org.argeo.slc.gis.model.Position;
6 import org.argeo.slc.jts.PositionProvider;
7
8 import com.vividsolutions.jts.geom.Coordinate;
9 import com.vividsolutions.jts.geom.GeometryFactory;
10 import com.vividsolutions.jts.geom.Point;
11
12 public class GpsBabelPositionProvider implements PositionProvider {
13 private GpsBabelCall gpsBabelCall;
14
15 private GeometryFactory geometryFactory = new GeometryFactory();
16
17 private String inputFormat = "garmin,get_posn";
18 private String inputFile = "usb:";
19
20 public void init() {
21 gpsBabelCall = new GpsBabelCall(inputFormat, inputFile, "csv", "-");
22 }
23
24 public Position currentPosition() {
25 // lazy init
26 if (gpsBabelCall == null)
27 init();
28
29 String output = gpsBabelCall.function();
30 StringTokenizer st = new StringTokenizer(output, ",");
31 Double latitude = Double.parseDouble(st.nextToken());
32 Double longitude = Double.parseDouble(st.nextToken());
33 Point position = geometryFactory.createPoint(new Coordinate(longitude,
34 latitude));
35 return new Position(position);
36 }
37
38 public void setInputFormat(String inputFormat) {
39 this.inputFormat = inputFormat;
40 }
41
42 public void setInputFile(String inputFile) {
43 this.inputFile = inputFile;
44 }
45
46 }