一、鹰眼实体的基本使用
1.1在web轨迹管理台中创建服务
1.2 鹰眼Web Api服务
鹰眼轨迹服务 | 百度地图API SDK (baidu.com)
1.2.1 add 添加实体操作
注意:add是post请求
请记得加上ak和service_id
public class TestBaiduWebApi {
private String ak ="您的密钥";
private int service_id = 您的鹰眼服务ID;
@Test
public void test(){
String url = "https://yingyan.baidu.com/api/v3/entity/add";
String body = HttpRequest.post(url)
.form("ak",ak)
.form("service_id",service_id)
.form("entity_name","route_1_1001")
.form("entity_desc","用户1创建的1001的路线")
.form("routeName","北京站到天安门广场")
.execute().body();
System.out.println(body);
}
}
在web轨迹管理台中进入服务可以查看轨迹监控和终端管理
1.2.2 Entity自定义字段
在web轨迹管理台中进入设置可以进行 Entity自定义字段
1.2.3 update 更新Entity
注意:update 是post请求
@Test
public void test(){
String url = "https://yingyan.baidu.com/api/v3/entity/update";
String body = HttpRequest.post(url)
.form("ak",ak)
.form("service_id",service_id)
.form("entity_name","route_1_1001")
.form("entity_desc","用户1创建的1001的路线")
.form("routeName","上海到北京")
.execute().body();
System.out.println(body);
}
1.2.4 delete实体对象
注意:delete是post请求
@Test
public void test(){
String url = "https://yingyan.baidu.com/api/v3/entity/delete";
String body = HttpRequest.post(url)
.form("ak",ak)
.form("service_id",service_id)
.form("entity_name","route_1_1001")
.execute().body();
System.out.println(body);
}
1.2.5 list 查询实体对象
注意:list是get请求
@Test
public void test(){
String url = "https://yingyan.baidu.com/api/v3/entity/list";
String body = HttpRequest.get(url)
.form("ak",ak)
.form("service_id",service_id)
.form("filter","entity_names:route_1_1001")
.form("coord_type_output","gcj02")
.execute().body();
System.out.println(body);
}
二、轨迹上传
鹰眼轨迹服务 | 百度地图API SDK (baidu.com)
添加2个位置就可以看到两点之间的路径
2.1 单点轨迹上传
@Test
public void test(){
String url = "https://yingyan.baidu.com/api/v3/track/addpoint";
String body = HttpRequest.post(url)
.form("ak",ak)
.form("service_id",service_id)
.form("entity_name","route_1_1001")
.form("latitude",39.921797)
.form("longitude",116.412605)
.form("loc_time",System.currentTimeMillis()/1000)
.form("coord_type_input","gcj02")
.form("speed",10.3)
.form("direction",15)
.execute().body();
System.out.println(body);
}
2.2 addpoints——批量添加轨迹点
@Test
public void test(){
String url = "https://yingyan.baidu.com/api/v3/track/addpoints";
List<Object> pointList = new ArrayList<>();
pointList.add(MapUtil.builder()
.put("entity_name","route_1_1002")
.put("latitude",39.921797)
.put("longitude",116.412605)
.put("loc_time",System.currentTimeMillis()/1000)
.put("coord_type_input","gcj02")
.put("speed",10.3)
.put("direction",15)
.build());
pointList.add(MapUtil.builder()
.put("entity_name","route_1_1001")
.put("latitude",39.924896)
.put("longitude",116.410737)
.put("loc_time",System.currentTimeMillis()/1000)
.put("coord_type_input","gcj02")
.put("speed",10.3)
.put("direction",15)
.build());
String body = HttpRequest.post(url)
.form("ak",ak)
.form("service_id",service_id)
.form("point_list", JSONUtil.toJsonStr(pointList))
.execute().body();
System.out.println(body);
}
2.3 模拟骑行过程,每隔一段时间上传一次轨迹点
@Test
public void test(){
String url = "https://yingyan.baidu.com/api/v3/track/addpoint";
String point = "116.425972,39.927441|116.424103,39.919251|116.429853,39.922682";
StrUtil.splitTrim(point,"|").forEach(pointStr->{
String[] splitStr = StrUtil.splitToArray(pointStr,',');
String body = HttpRequest.post(url)
.form("ak",ak)
.form("service_id",service_id)
.form("entity_name","route_1_1003")
.form("latitude", Convert.toDouble(splitStr[1]))
.form("longitude",Convert.toDouble(splitStr[0]))
.form("loc_time",System.currentTimeMillis()/1000)
.form("coord_type_input","gcj02")
.form("speed",10.3)
.form("direction",15)
.execute().body();
System.out.println(body);
});
try {
Thread.sleep(RandomUtil.randomInt(5,30)*1000);
}catch (Exception e){
e.printStackTrace();
}
}
三、 轨迹查询和轨迹纠缠
gettrack——轨迹查询与纠偏
简介:查询一个时间段内一个entity的连续轨迹信息,并进行纠偏。
支持功能:支持对一段轨迹进行纠偏、绑路、补偿中断区间道路、分析起终点、计算总里程和收费里程。其中每一个轨迹点的信息包括:坐标、速度、方向、高度、定位精度、定位模式、交通方式等。
适用场景:适用于查询一段时间的轨迹并进行纠偏,解决轨迹缺失与漂移问题,这也是开发者最常使用、最依赖鹰眼的一个场景。
3.1 轨迹查询
@Test
public void test(){
String url = "https://yingyan.baidu.com/api/v3/track/gettrack";
Long start_time = DateUtil.parse("2024-05-10 00:00:00").getTime() / 1000;
Long end_time = DateUtil.parse("2024-05-10 23:59:59").getTime() / 1000;
String body = HttpRequest.get(url)
.form("ak",ak)
.form("service_id",service_id)
.form("entity_name","route_1_1003")
.form("start_time",start_time)
.form("end_time",end_time)
.form("is_processed","1")
.execute().body();
System.out.println(body);
}