Java百度鹰眼轨迹批量上传

背景

这里,就先讲讲如何批量上传轨迹到鹰眼管理平台。我看****里面很多博客都是使用移动端实时上传轨迹(前提是你有硬件设备),也有的是直接上传CVS文件到数据平台上。
而我这里,是直接使用Java代码批量上传轨迹到平台上。


准备工作

阅读鹰眼Web服务API:这里主要针对轨迹上传,其余自行阅读。
鹰眼轨迹上传文档

代码中记得引入Json包


开始

上传单个轨迹点请参考这篇博客:上传单个轨迹

上传多个轨迹代码:

package BDYingYan;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.apache.http.NameValuePair;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;



import Tools.CoordType;
import Tools.CreatClientHttp;

public class UploadYingyan {
    public static void main(String[] args) throws IOException {
    	
    	
        long time0 = System.currentTimeMillis();
        String nowTimeStamp0 = String.valueOf(time0 / 1000);
        
        JSONArray ja = new JSONArray();
        for(int i=1 ; i<=50 ; i++)
        {
        	JSONObject ob1 = new JSONObject();
            ob1.put("coord_type_input", CoordType.wgs84);
            double latitude = 31.222212 + 2*i / 100.0;
            double longitude = 121.466600 + 2*i / 100.0;
            ob1.put("longitude", String.valueOf(longitude));
            ob1.put("latitude", String.valueOf(latitude));
            String time = String.valueOf(System.currentTimeMillis() / 1000 + 2*i - 86400);
            ob1.put("loc_time", time);
            ob1.put("entity_name", "105");
            ja.add(ob1);
        }
        System.out.println(ja);
        List<NameValuePair> paramList1 = new ArrayList<NameValuePair>();
        paramList1.add(new BasicNameValuePair("ak", "U12mILhtjTORg01kEEfTvHBcurOtnxfw"));//传递的参数
        paramList1.add(new BasicNameValuePair("sn", ""));//传递的参数
        paramList1.add(new BasicNameValuePair("service_id", "209165"));//传递的参数
        paramList1.add(new BasicNameValuePair("point_list", ja.toString()));//传递的参数
    	
    	//批量添加轨迹点接口
    	String url = "http://yingyan.baidu.com/api/v3/track/addpoints";
    	//创建一个HTTPClient
    	CreatClientHttp ct = new CreatClientHttp(url, paramList1);
    	//默认方式创建
    	ct.setClient(HttpClients.createDefault());// 创建默认http连接
    	//开始请求
    	ct.startHttp(ct.getClient());
    	

    }
}

package Tools;

import java.io.IOException;
import java.nio.charset.Charset;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

public class CreatClientHttp {

	HttpClient client = null;
	HttpPost post = null;
	HttpEntity entitya = null;
	HttpResponse response = null;
	HttpEntity entity = null;
	
	/**创建HTTP请求和配置参数
	 * @param url 请求的接口
	 * @param string 数据点集合
	 * @throws ClientProtocolException
	 * @throws IOException
	 */
	public CreatClientHttp(String url, List<NameValuePair> params) throws ClientProtocolException, IOException {
		 post = new HttpPost(url);// 创建一个post请求

		 // 把参转码后放入请求实体中
	     entitya = new UrlEncodedFormEntity(params, "utf-8");
	     post.setEntity(entitya);// 把请求实体放post请求中
	}
	
	
	public HttpClient getClient() {
		return client;
	}


	public void setClient(HttpClient client) {
		this.client = client;
	}


	/**开始HTTP请求
	 * @param client
	 * @throws ClientProtocolException
	 * @throws IOException
	 */
	public void startHttp(HttpClient client) throws ClientProtocolException, IOException
	{
		response = client.execute(post);// 用http连接去执行get请求并且获得http响应
		 entity = response.getEntity();// 从response中取到响实体
	     String html = EntityUtils.toString(entity);// 把响应实体转成文本
	     System.out.println(html);
	}
}

数据格式:
数据格式:
[
	ak=U12mILhtjTORg01kEEfTvHBcurOtnxfw, 
	sn=, 
	service_id=209165, 
	point_list=			 
	[{"coord_type_input":"wgs84","longitude":"121.4866","latitude":"31.242212","loc_time":"1549599739","entity_name":"105"},
	{"coord_type_input":"wgs84","longitude":"121.5066","latitude":"31.262211999999998","loc_time":"1549599741","entity_name":"105"},
	{"coord_type_input":"wgs84","longitude":"121.5266","latitude":"31.282211999999998","loc_time":"1549599743","entity_name":"105"}]
]
	

Java百度鹰眼轨迹批量上传


鹰眼轨迹管理平台

鹰眼轨迹管理平台
点击进入服务,查看对应的轨迹。

Java百度鹰眼轨迹批量上传
你会发现,我刚才不是批量上传轨迹上去了嘛,为啥没有路线显示出来呢?(我也很疑惑,为啥呀?)
不过没关系,轨迹点确实已经上传上去了,我们调用百度的JavaScript的API来获取轨迹点就行了,然后再标点、连线即可。(上一篇博客简单描述过)。

至于图片的车车为什么在海面上,hhhhh~那些数据点我乱造的,所以没有控制在上海片区内。


查询上传轨迹

百度鹰眼提供的文档很齐全,这里为了检验我上面是否已经成功批量上传轨迹,就使用查询的接口,其余接口读者自行尝试。

package BDYingYan;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

public class YingYanQueryTrajectory {
   public static void main(String[] args) throws ClientProtocolException, IOException
   {
	   HttpClient client = HttpClients.createDefault();// 创建默认http连接
	   HttpGet get0 = new HttpGet("http://yingyan.baidu.com/api/v3/entity/list?service_id=209165&ak=U12mILhtjTORg01kEEfTvHBcurOtnxfw");
	   //HttpGet get = new HttpGet("http://yingyan.baidu.com/api/v3/track/gettrack?service_id=209165&entity_name=105&start_time=1549556469&end_time=1549470069&ak=U12mILhtjTORg01kEEfTvHBcurOtnxfw");
	   HttpResponse response = client.execute(get0);
       HttpEntity entity = response.getEntity();
       String result = EntityUtils.toString(entity, "UTF-8");
       System.out.print(result);
   }
}

Java百度鹰眼轨迹批量上传

轨迹查询文档


所有代码

因为写这篇博客的时候,代码还没通过审核。
那么把截图放出来,自己根据截图信息去****找吧。
至于为什么是5分下载,我也不想拿大家的分,提交的时候就定位5分了,没得修改。以前都是可以修改的呀~没办法~

Java百度鹰眼轨迹批量上传


结语

懒得遮挡我的AK和service ID了,在具体操作时候,大家记得换自己的AK和service ID。~~~