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

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

这里写图片描述

  • 7
    点赞
  • 99
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值