百度地图-散点图(一)

我们使用数据(以DeSheng Zhang 老师提供的数据为例)中的PhoneData部分数据进行简单的测试,对于这部分数据,我们已经经过数据预处理的阶段。下面是对数据的直接使用。

构造所需要的SQL语句

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public String InsertData(List<String> lie){
String sql = "INSERT INTO "+lie.get(0)+"(";
String valueString = "";
if(lie.size()!=0) {
int len = lie.size();
for(int i=1;i<len-1;i++) {
sql+=(lie.get(i)+",");
valueString+="?,";
}
sql+=(lie.get(len-1)+") value("+valueString+"?);");

}else {
return null;
}
return sql;
}

数据读取

将我们存储好的格式数据,读取到系统空间中。
这个方法中,我们是暂时存储在list集合中的。
这个方法传入的参数是我们自定义的需要统计的数据的名称。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public List<List<String>> getDATA(List<String> lie) {
conn = JdbcUtils.getConnection();
String sql = tool.selectData(lie);
List<List<String>> ls = new ArrayList<List<String>>();
List<String> line = null;
try {
ps = conn.prepareStatement(sql);
rs= ps.executeQuery();
while(rs.next()) {
line = new ArrayList<String>();
line.add(rs.getString(1));
line.add(rs.getString(2));
line.add(rs.getString(3));
ls.add(line);
}
return ls;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}

格式转换与统计

对于每一个图所需要的数据的输入格式可能是不同的,对于小部分数据我们可以使用手动输入的方式,但是对于批量的数据,我们要尽可能的交给程序处理。因此,在接下来的学习中,会针对每一个图形模板提供一个数据格式。下面是将我们的数据处理成适合我们散点图的格式。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public String [] getInput(List<List<String>> ls) {
//这里主要进行两部分的拼接,
String[] data = new String[2];
data[0] = "var data =[";
data[1] ="var geoCoordMap = {";
int value =1;
for(int i=1;i<ls.size();i++) {
String jing =ls.get(i-1).get(1);
String wei = ls.get(i-1).get(2);
if(ls.get(i).get(1).equals(jing)&&ls.get(i).get(2).equals(wei)&&ls.get(i).get(0).equals(ls.get(i-1).get(0))) {
continue;
}
double a = (Math.random()*50)+10;
int b = (int)a;
if(ls.get(i).get(0).equals(ls.get(i-1).get(0))) {
value+=1;
}else {
value =1;
}
data[0]+="{name:'"+ls.get(i-1).get(0)+"_"+value+"', value:"+b+"},";
data[1]+="'"+ls.get(i-1).get(0)+"_"+value+"':["+ls.get(i-1).get(1)+","+ls.get(i-1).get(2)+"],";

}
data[0] +="{name:'"+ls.get(ls.size()-1).get(0)+"f', value:"+0+"}];";
data[1] +="'"+ls.get(ls.size()-1).get(0)+"f':["+ls.get(ls.size()-1).get(1)+","+ls.get(ls.size()-1).get(2)+"]};";
return data;
}

对于上述代码以及数据,因为没有提供要关注的点。因此,每条数据的value值,我们使用随机生成函数,随机生成一些数值作为我们每条数据的value值,用来模拟一个完整的过程。

实现的效果

部分数据的效果展示
在这里插入图片描述

需要优化的地方

  • 现在数据存储的位置是list,还应该继续优化到MAP集合中,这样在获取数据的时候就可以根据键拿值,而不是现在的get(0)没有意义。
  • 还需要编写一些经常用的统计函数。
  • 对于地图的界面展示还需要优化