您的位置:首页 > 其它

百度地图API+ArcGIS软件—城市出行时空数据可视化

2017-04-23 17:36 411 查看
作者:WenWu_Both

出处:http://blog.csdn.net/wenwu_both/article/

版权:本文版权归作者和CSDN博客共有

转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文链接;否则必究法律责任

本篇博文主要介绍如何通过百度地图API+ArcGIS软件来完成城市出行时空数据的可视化。

(1)ArcGIS软件中创建点、线、面要素

1、创建点要素

准备好点要素的表格数据(xlsx,csv等),包括点的编号(ID)、位置属性(经纬度等)、其他点的属性等。

比如:我们需要将杭州市的行政边界点要素做成.shp文件,过程如下:

a.获取杭州市行政边界的点数据,百度地图API提供了相关的接口,这里我们参考博客 批量获取百度地图中的县级以上行政区域的边界数据,代码稍作修改:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>获取地区轮廓线</title>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=9GB8F942zukgBhDY4L2iSzRriZpoRFh5"></script>
<style type="text/css">
body, html{width:100%;height:100%;margin:0;font-family:'微软雅黑';}
#container{height:500px;width:90%;margin-left:50px}
#Div1{width:100%}
</style>
</head>
<body>
<div id="container"></div>
<br />
输入省、直辖市或县名称:<input type="text" id="districtName" style="width:80px" value="重庆市">
<input type="button" onclick="getBoundary()" value="获取轮廓线">
<textarea id="Div1" style="width:100%;height:200px"></textarea>

<script type="text/javascript">
var map = new BMap.Map('container');
map.centerAndZoom(new BMap.Point(116.403765, 39.914850), 5);
map.addControl(new BMap.MapTypeControl());   //添加地图类型控件
map.setCurrentCity("重庆市");          // 设置地图显示的城市 此项是必须设置的
map.enableScrollWheelZoom(true);     //开启鼠标滚轮缩放

function getBoundary(){
var bdary = new BMap.Boundary();
var name = document.getElementById("districtName").value;
bdary.get(name, function(rs){       //获取行政区域
map.clearOverlays();        //清除地图覆盖物

document.getElementById('Div1').innerText = rs.boundaries;
var count = rs.boundaries.length; //行政区域的点有多少个
for(var i = 0; i < count; i++){
var ply = new BMap.Polygon(rs.boundaries[i], {strokeWeight: 2, strokeColor: "#ff0000"}); //建立多边形覆盖物
map.addOverlay(ply);  //添加覆盖物
map.setViewport(ply.getPath());    //调整视野
}
});
}
</script>
</body>
</html>


运行得到杭州市的行政边界点位数据,如下图所示:



将经纬度转成相应坐标系后,整理成表格文件,如下图:



b.点击

符号导入数据,右键“显示XY数据”-设置好字段属性和相应坐标系,确定。导入后如下图:



将该图层导出为.shp文件:“数据”-“导出数据”,自此,点的.shp文件制作完成。

2、创建线要素

仍旧以上面为例,我们将上面的点连接成线,具体步骤如下:

a.添加线字段及排序字段

线字段表示该点属于哪条线;排序字段代表点在线中的位置。创建杭州市的行政边界线,我们只需要将点按顺序连接形成闭合线即可。

b.实际操作

添加上线字段及排序字段,重新建立点图层,打开”ArcTollbox”,“数据管理工具”-“要素”-“点集转线”:



其中“输入要素”即为我们的点要素文件,设置好线字段和排序字段,点击“闭合线”,确定即得到闭合线的.shp文件,如下图:



3、创建面要素

直接在上述线的基础上生成面,打开”ArcTollbox”,“数据管理工具”-“要素”-“要素转面”:



输入要素为线图层,设置好XY容差,确定即可得到杭州市行政区的面.shp文件:



(2)创建城中心交通时空圈

创建的思路及基本步骤可参见博客:利用百度地图API制作城中心交通时空圈

该文章最后创建栅栏图的过程没有介绍,这里补上,数据还是用杭州市行政区图。

1、“数据管理工具”-“要素类”-“创建渔网”:



模板范围选择面图层,设置行数和列数,几何类型选择“POLYGON”,确定,创建好的渔网如下图所示:



2、执行图层取交集的命令

“分析工具”-“提取分析”-“裁剪”,设置相关参数:



输入要素为需要裁剪的要素,裁剪要素为裁剪的模板,裁剪完成后如下图:



点击图层“打开属性表”-“连接和关联”-“连接”上相应的xlsx文件,为每个网格附上相应的属性值(人口密度、距离市中心的距离等),我这里只是演示,所以均取的随机值;然后点击图层“属性”-“符号系统”-“数量”-“分级色彩”,设置好“值”和“类”,确定即得到时空分布图,如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: