听说你想知道怎么用stata画地图?

2017-01-04 刘贝贝 爬虫俱乐部 爬虫俱乐部

点击上方蓝字关注

2017新年伊始,小编的朋友圈被各地的雾霾刷了屏,还记得上次那篇推文吗“我知道你的城市空气质量”,雾霾这么严重,各位读者可以自己爬取各地区的空气指数,关心自己,也关心你牵挂的人。今天一早,小编爬取了一下武汉市的空气质量,重度污染的空气质量,小编选择狗带。


不过,小编只教你爬取文字形式的空气质量哪里过瘾?看着爬虫酱每日推出的空气质量地图,早已有读者在后台留言要求出一期地图绘制的推文。诸位看官别着急呀,你想要的小编通通满足你,这不,地图绘制的推文噔噔噔噔闪亮登场,学完别忘了给小编赏个鸡腿呀~

在 地图的绘画过程中,所需要地理位置的数据是:主文件(*.shp)和dBASE表文件(*.dbf),因为这两个文件包括了绘制地图时所需要的数据。其 中:主文件(*.shp)是存储地理要素的几何图形的文件;dBASE表文件(*.dbf)是存储要素信息属性的文件。(本文使用的相关数据已上传至爬虫 数据中心网站http://richdata.znufe.edu.cn/App/Index,大家可前往下载)

在地图绘画的时候,我们需要使用到两个命令 shp2dta 和 spmap 

1

shp2dta命令的介绍

shp2dta:这个命令可以把*.shp和*.dbf的数据转化为Stata形式的数据(*.dta),shp2dta命令需要使用如下的语句进行安装。

ssc install shp2dta

(1)比如:我们已经下载好了河南省地图的经纬度的信息,这个地图信息的文件形式如下:

ha_city.dbf

ha_city.sbn

ha_city.sbx

ha_city.shp

ha_city.shx

(2)使用shp2dta把上面的数据格式转化为Stata形式的数据。

shp2dta using ha_city, data(hn_citymapdb) coor(hn_citymapcoord) genid(id)

其 中:hn_city是所下载地图信息数据的后缀名,data(hn_citymapdb) 和coor(hn_citymapcoord)中的hn_citdb、hn_citcoord是最后生成hn_citdb.dta、 hn_citcoord.dta数据的命名,其中hn_citdb.dta包含世界地图的基本信息,hn_citcoord.dta包含世界地图区域的坐 标信息。

2

spmap命令介绍

spmap:这个命令可以实现地图的绘画,首先用下面命令进行安装。

ssc install spmap

地图的绘画

use `"hn_citymapdb"',clear

gen y = uniform()

format y %9.3g

spmap y using `"hn_citymapcoord"',id(id) title ("河南地图") label(label(NAME99) xcoord(CENTROID_X) ycoord(CENTROID_Y) ) fcolor(Greens2) legenda(off)

假如hn_citymapdb.dta中有人口数据,还可以把上面的spmap命令语句中的y改为人口数据的变量,这样就绘制出以人口为比例的地图。


使用同样的方法我们也绘画了四川省的地图。

程序如下:

clear

set more off

cd "G:\stata分享\四川地图"

capture shp2dta using sc_city, data(sc_citymapdb) coor(sc_citymapcoord) genid(id)

use `"sc_citymapdb"',clear

gen y = uniform()

format y %9.3g

spmap y using `"sc_citymapcoord"',id(id) title ("四川地图") label(label(NAME99) xcoord(CENTROID_X) ycoord(CENTROID_Y) ) fcolor(Greens2) legenda(off)


3

编程小技巧

反正小编已经给诸位放了绘图大招,那么为了让大家更好地绘图及今后使用stata,小编再给大家补充几个我们在运用stata编程过程中容易忽略的小技巧。

1、在do文件编写的时候,开始写程序的时候不管写什么样的内容都可以直接写上clearset more off这两句命令。

clear命令的作用是清空Stata内存,避免Stata内存存在一些数据而导致出错,程序不能运行;

set more off的作用是设置Stata屏幕自动翻页。因为有的时候程序运行的结果很多,如果不设置,需要手动点击屏幕翻页。所以在编写do文件的时候,通常会写上clear和set more off。

2、数据读取的小技巧,巧用cdglobal

在编写程序的时候,我们会经常进行数据的读取,有时候数据是在同一个文件夹下面,这时候我们就可以使用cd “具体的路径”,比如 cd “d:\stata数据处理\stata程序\上市公司数据\”,这时候就可以直接使用use读取这个路径下面的数据。

但通常情况下,所需要读取的数据不在同一个路径,这时候我们需要使用global提前进行路径的定义。下面简要介绍global。

global被称为“全局宏”。在程序中,如果一个宏在整个程序中都使用,定义时可以选择global。全局宏在程序的任何地方都可以使用,所包含的内容是不变的,同时这个程序运行之后,只要Stata软件不关闭,在程序外也可以引用这个宏。定义global的格式如下:

这些全局宏定义的使用格式如下:

global 全局宏名 = 表达式

global 全局宏名 : 扩展的函数

global 全局宏名 "字符串"

global 全局宏名 `"字符串"'

在引用global定义的全局宏时,主要使用的符号为“$”、“{}”,比如:

假如我们需要读取这个路径下的数据"E:\stata程序\stata绘画中国地图的数据信息\Chinamap\Chinamapdb.dta"。

主要介绍两种使用方法:

global path "E:\stata程序\stata绘画中国地图的数据信息\Chinamap\"

use `"${path}\ Chinamapdb.dta"' , clear

或者

global path ="E:\stata程序\stata绘画中国地图的数据信息\Chinamap\"

use “$path\ Chinamapdb.dta”,clear

这样当我们移动数据时,只需要修改global中路径的定义就可以了。



以上就是今天分享的推文内容了。此外,小编还要宣布一个好消息:

stata培训哪家强?的搜寻结果

1个回答-

提问时间:2017年1月2日

[最佳回答] 亲爱的stata爱好者,您好。

爬虫俱乐部是一个专注解决stata各种疑难杂症的公众号,深受大家喜爱。该公众号即将举办线下stata培训,技术大牛亲手教你stata,赶紧戳开独家Stata技术培训,千呼万唤始出来报名吧!

EmmaWatson   9999……999条好评


  接下来报告空气质量

全国空气质量如下
在众多雾霾严重的城市中

我们选中了山西



以上就是今天给大家分享的内容了,说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场~,点赞打赏随您心意,么么哒~

应广大粉丝要求,爬虫俱乐部的推文公众号打赏功能可以开发票啦,累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫。第一批发票已经寄到各位小主的手中,大家快来给小爬虫打赏呀~



编辑 by徐苾雯



往期推文推荐:

1.独家Stata技术培训,千呼万唤始出来

2.关于RTF你不知道的命令

3.关于RTF你不知道的命令之番外篇

4.免费事件研究,一片片从邮局寄来

5.免费的股价同步性,一片片从邮局寄来

6.Stata叫你回家听音乐了!

7.一言不合就用stata写邮件(Outlook/Foxmail)

8.玩转stata之调用浏览器

9.I have a Stata, I have a python

10.I have a Stata, I have a Python之二——pdf转word




关于我们

微信公众号“爬虫俱乐部”分享实用的stata命令,欢迎转载、打赏。爬虫俱乐部是由李春涛教授领导下的研究生及本科生组成的大数据分析和数据挖掘团队。


此外,欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。

投稿邮箱:xueyuan19920310@163.com

投稿要求:

1)必须原创,禁止抄袭;

2)必须准确,详细,有例子,有截图;

注意事项:

1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。

2)邮件请注明投稿,邮件名称为“投稿”+“推文名称”。

3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。


欢迎关注爬虫俱乐部

微信扫一扫
关注该公众号