Skip to content

Commit 3d3bfac

Browse files
author
wangtantan
committed
feature: add sporttrack demo
1 parent b298a8a commit 3d3bfac

30 files changed

+1045
-0
lines changed

README.md

+2
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
```
2626
├── README.md
2727
├── demos #场景样例
28+
│   ├── SportTrack #运动轨迹
2829
│   ├── insurance-policy-management #保险单管理系统
2930
│   ├── TraceMedicine #药品监管(溯源)系统
3031
│   ├── TableStore-Grid #气象格点数据解决方案
@@ -66,6 +67,7 @@
6667
## [demos(场景样例)](/demos)
6768
样例 | 语言 | 项目名
6869
--- | --- | ---
70+
[运动轨迹管理](https://yq.aliyun.com/articles/702482) | java | [SportTrack](/demos/SportTrack)
6971
[保险单管理系统](https://yq.aliyun.com/articles/699669) | java | [insurance-policy-management](/demos/insurance-policy-management)
7072
[药品监管(溯源)系统](https://yq.aliyun.com/articles/699636) | java | [TraceMedicine](/demos/TraceMedicine)
7173
[气象格点数据解决方案](https://yq.aliyun.com/articles/698313) | java | [TableStore-Grid](/demos/TableStore-Grid)

README_EN.md

+2
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
```
2626
├── README.md
2727
├── demos #samples
28+
│   ├── SportTrack
2829
│   ├── insurance-policy-management
2930
│   ├── TraceMedicine
3031
│   ├── TableStore-Grid
@@ -66,6 +67,7 @@ Create the file tablestoreCong.json in the home path, and config the parameters.
6667
## [demos(samples)](/demos)
6768
Sample Name | Language | Title
6869
--- | --- | ---
70+
[Sport track management](https://yq.aliyun.com/articles/702482) | java | [SportTrack](/demos/SportTrack)
6971
[Insurance policy management](https://yq.aliyun.com/articles/699669) | java | [insurance-policy-management](/demos/insurance-policy-management)
7072
[Medicine track management](https://yq.aliyun.com/articles/699636) | java | [TraceMedicine](/demos/TraceMedicine)
7173
[Store and query gridded data](https://yq.aliyun.com/articles/698313) | java | [TableStore-Grid](/demos/TableStore-Grid)

demos/SportTrack/README.md

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
## Sport Track
2+
Store and query sport track、targetNearby by Tablestore.
3+
4+
## SampleCode
5+
### 1. Create TableStore timestream db
6+
7+
[CreateStoreExample.java](src/main/java/com/aliyun/tablestore/example/CreateStoreExample.java)
8+
9+
### 2. Upload sport track
10+
11+
[UploadSportTrackExample.java](src/main/java/com/aliyun/tablestore/example/UploadSportTrackExample.java)
12+
13+
### 3. Sport track qeury example
14+
15+
[SportTrackQeuryExample.java](src/main/java/com/aliyun/tablestore/example/SportTrackQeuryExample.java)
16+
17+
### 4. targetNearby example
18+
19+
[TargetNearbyExample.java](src/main/java/com/aliyun/tablestore/example/TargetNearbyExample.java)

demos/SportTrack/pom.xml

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<modelVersion>4.0.0</modelVersion>
6+
7+
<groupId>com.aliyun.tablestore</groupId>
8+
<artifactId>SportTrack</artifactId>
9+
<version>1.0-SNAPSHOT</version>
10+
11+
<properties>
12+
<maven.compiler.source>1.8</maven.compiler.source>
13+
<maven.compiler.target>1.8</maven.compiler.target>
14+
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
15+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
16+
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
17+
18+
</properties>
19+
20+
<dependencies>
21+
<dependency>
22+
<groupId>com.aliyun.openservices</groupId>
23+
<artifactId>tablestore</artifactId>
24+
<version>4.11.0</version>
25+
</dependency>
26+
<dependency>
27+
<groupId>commons-io</groupId>
28+
<artifactId>commons-io</artifactId>
29+
<version>2.4</version>
30+
</dependency>
31+
32+
</dependencies>
33+
34+
35+
</project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.aliyun.tablestore.example;
2+
3+
import com.aliyun.tablestore.example.common.SportTrackExample;
4+
5+
public class CreateStoreExample extends SportTrackExample {
6+
/**
7+
* we must create store before we can use it.
8+
*
9+
* @throws Exception
10+
*/
11+
public void createStore() {
12+
sportTrack.createTable();
13+
}
14+
15+
public static void main(String[] args) {
16+
CreateStoreExample example = new CreateStoreExample();
17+
example.createStore();
18+
}
19+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package com.aliyun.tablestore.example;
2+
3+
import com.aliyun.tablestore.sporttrack.TablestoreTrackReader;
4+
import com.aliyun.tablestore.sporttrack.model.SportObject;
5+
import com.aliyun.tablestore.sporttrack.model.SportObjectType;
6+
import com.aliyun.tablestore.example.common.SportTrackExample;
7+
8+
9+
public class SportTrackQeuryExample extends SportTrackExample {
10+
private TablestoreTrackReader reader;
11+
12+
public SportTrackQeuryExample() {
13+
reader = new TablestoreTrackReader(sportTrack);
14+
}
15+
16+
public static void main(String[] args) {
17+
SportTrackQeuryExample example = new SportTrackQeuryExample();
18+
19+
example.listTrackMeta();
20+
example.getTrackData();
21+
}
22+
23+
public void listTrackMeta() {
24+
SportObject object = mockSportObject(SportObjectType.trackOrder);
25+
reader.listTrackMeta(object);
26+
}
27+
28+
public void getTrackData() {
29+
SportObject object = mockSportObject(SportObjectType.trackOrder);
30+
reader.getTrackData(object);
31+
}
32+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
package com.aliyun.tablestore.example;
2+
3+
import com.aliyun.tablestore.sporttrack.TablestoreTrackReader;
4+
import com.aliyun.tablestore.sporttrack.TablestoreTrackWriter;
5+
import com.aliyun.tablestore.sporttrack.model.*;
6+
import com.aliyun.tablestore.example.common.SportTrackExample;
7+
8+
import java.util.UUID;
9+
10+
public class TargetNearbyExample extends SportTrackExample {
11+
12+
private TablestoreTrackWriter writer;
13+
private TablestoreTrackReader reader;
14+
15+
public TargetNearbyExample() {
16+
writer = new TablestoreTrackWriter(sportTrack);
17+
reader = new TablestoreTrackReader(sportTrack);
18+
}
19+
20+
public static void main(String[] args) {
21+
TargetNearbyExample example = new TargetNearbyExample();
22+
example.writeCenterPoint();
23+
example.writeRandomPoint();
24+
25+
example.listTargetNearbyOrderbyDistance();
26+
}
27+
28+
29+
private SportObject centerSportObject() {
30+
SportObject object = new SportObject();
31+
object.setObjectName("user_center");
32+
object.setObjectId("user_center_id");
33+
object.setSportObjectType(SportObjectType.device);
34+
35+
return object;
36+
}
37+
38+
private int getRandomId() {
39+
int x = (int) (Math.random() * 20);
40+
return x;
41+
}
42+
43+
private SportObject randomSportObject() {
44+
SportObject object = new SportObject();
45+
46+
object.setObjectName("user_" + getRandomId());
47+
object.setObjectId(UUID.randomUUID().toString());
48+
object.setSportObjectType(SportObjectType.device);
49+
50+
return object;
51+
}
52+
53+
private Position centerPosition() {
54+
Position position = new Position();
55+
Coords coords = new Coords();
56+
coords.setLatitude(30.12883);
57+
coords.setLongitude(120.08545);
58+
59+
position.setTimestamp(System.currentTimeMillis());
60+
position.setCoords(coords);
61+
62+
return position;
63+
}
64+
65+
public void writeCenterPoint() {
66+
SportObject object = centerSportObject();
67+
Position centerPosition = centerPosition();
68+
69+
SportTrackMeta sportTrackMeta = new SportTrackMeta();
70+
sportTrackMeta.setTargetNearbyType(TargetNearbyType.PEOPLE);
71+
Coords coords = centerPosition.getCoords();
72+
String location = String.format("%f,%f", coords.getLatitude(), coords.getLongitude());
73+
sportTrackMeta.setLocation(location);
74+
sportTrackMeta.setTimestamp(centerPosition.getTimestamp());
75+
76+
writer.writeTrackMeta(object, sportTrackMeta);
77+
}
78+
79+
public void writeRandomPoint() {
80+
for (int i = 0; i < 100; i++) {
81+
SportObject object = randomSportObject();
82+
SportTrackMeta sportTrackMeta = new SportTrackMeta();
83+
sportTrackMeta.setTargetNearbyType(TargetNearbyType.PEOPLE);
84+
85+
double lat = 30.12883 + getRandomId() * 0.01;
86+
double lon = 120.08545 + getRandomId() * 0.01;
87+
String location = String.format("%f,%f", lat, lon);
88+
sportTrackMeta.setLocation(location);
89+
sportTrackMeta.setTimestamp(System.currentTimeMillis());
90+
91+
writer.writeTrackMeta(object, sportTrackMeta);
92+
}
93+
}
94+
95+
public void listTargetNearbyOrderbyDistance() {
96+
reader.listTargetNearbyOrderbyDistance(TargetNearbyType.PEOPLE, centerPosition(), 10000);
97+
}
98+
99+
100+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
package com.aliyun.tablestore.example;
2+
3+
import com.aliyun.tablestore.sporttrack.TablestoreTrackWriter;
4+
import com.aliyun.tablestore.sporttrack.model.*;
5+
import com.aliyun.tablestore.example.common.SportTrackExample;
6+
7+
import java.util.ArrayList;
8+
import java.util.List;
9+
10+
public class UploadSportTrackExample extends SportTrackExample {
11+
private TablestoreTrackWriter writer;
12+
13+
public UploadSportTrackExample() {
14+
writer = new TablestoreTrackWriter(sportTrack);
15+
}
16+
17+
public static void main(String[] args) {
18+
UploadSportTrackExample example = new UploadSportTrackExample();
19+
try {
20+
example.uploadSportTrackOrder();
21+
example.uploadSportTrack();
22+
} catch (InterruptedException ex) {
23+
System.out.println(ex.toString());
24+
}
25+
}
26+
27+
public void uploadSportTrackOrder() {
28+
SportObject object = mockSportObject(SportObjectType.trackOrder);
29+
object.setObjectName("4月17日晚上骑行");
30+
SportTrackOrder order = new SportTrackOrder();
31+
order.setSportTrackType(SportType.RIDING);
32+
order.setDistance(3000);
33+
order.setStartTime(1557316433L);
34+
order.setEndTime(1557317753L);
35+
writer.writeTrackOrderMeta(object, order);
36+
}
37+
38+
39+
public void uploadSportTrack() throws InterruptedException {
40+
SportObject object = mockSportObject(SportObjectType.device);
41+
42+
List<TrackPosition> positions = new ArrayList<TrackPosition>();
43+
for (int i = 0; i < 1000; i++) {
44+
Coords coords = new Coords();
45+
coords.setLatitude(30.1288339742);
46+
coords.setLongitude(120.0854587555 + 0.0001 * i);
47+
48+
TrackPosition position = new TrackPosition();
49+
position.setAccuracy(10);
50+
position.setAltitude(2);
51+
position.setAltitudeAccuracy(1);
52+
position.setSpeed(5);
53+
position.setTimestamp(System.currentTimeMillis());
54+
Thread.sleep(10);
55+
position.setCoords(coords);
56+
57+
positions.add(position);
58+
}
59+
60+
writer.writeTrackPosition(object, positions);
61+
}
62+
63+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package com.aliyun.tablestore.example.common;
2+
3+
import com.aliyun.tablestore.sporttrack.TablestoreSportTrackConfig;
4+
import com.aliyun.tablestore.sporttrack.TablestoreTrack;
5+
import com.aliyun.tablestore.sporttrack.model.*;
6+
7+
public class SportTrackExample {
8+
private String pathSeperator = "/";
9+
private TablestoreConf conf;
10+
final String metaTableName = "sporttrack_meta";
11+
final String dataTableName = "sporttrack_data";
12+
13+
protected TablestoreTrack sportTrack;
14+
15+
public SportTrackExample() {
16+
String os = System.getProperty("os.name");
17+
if (os.toLowerCase().startsWith("win")) {
18+
pathSeperator = "\\";
19+
}
20+
conf = TablestoreConf.newInstance(System.getProperty("user.home") + pathSeperator + "tablestoreConf.json");
21+
22+
String endPoint = conf.getEndpoint();
23+
String accessId = conf.getAccessId();
24+
String accessKey = conf.getAccessKey();
25+
String instanceName = conf.getInstanceName();
26+
27+
TablestoreSportTrackConfig config = new TablestoreSportTrackConfig(endPoint, accessId, accessKey, instanceName, metaTableName, dataTableName);
28+
sportTrack = new TablestoreTrack(config);
29+
}
30+
31+
32+
protected SportObject mockSportObject(String sportObjectType) {
33+
SportObject object = new SportObject();
34+
object.setObjectName("mock_app_uid");
35+
object.setObjectId("mock_device_id");
36+
object.setSportObjectType(sportObjectType);
37+
38+
return object;
39+
}
40+
}

0 commit comments

Comments
 (0)