twoway 系列命令绘制地图

在谈到用stata绘制地图时,很多人首先想到的是spmap命令。其实,最常见的twoway系列命令就可以完成我们的大多数绘图需求。

对于spmap命令的使用,在线资源已经有很多了,这主要介绍使用最常用的twoway系列命令如何进行地图可视化。spmap命令的使用只做简单介绍。(后台回复「20200412」获取相关数据)

首先,使用shp2dta命令将 shp 文件转为 stata 能够识别的 .dta 文件。shp2dta语法格式如下:

 shp2dta using shpfilename, database(filename) coordinates(filename) [options]

    options                    Description
-----------------------------------------------------------------------------------------------------------------------------------------
Main
database(filename) Specifies filename of new dBase dataset
coordinates(filename) Specifies filename of new coordinates dataset
replace Overwrites existing database and coordinates filenames
genid(newvarname) Creates unique id variable for database.dta
gencentroids(stub) Creates centroid variables
-----------------------------------------------------------------------------------------------------------------------------------------

database(filename)用于将shp文件的属性表导出为 .dta 格式,名称为 filename;
coordinates(filename)则用于导出地理边界坐标点信息,是绘制底图所用的关键数据。
gencentroids(stub)用与生成中心点坐标值

下面是具体演示案例:

导出数据

cd E:/微信/stata地图可视化
* 导入面状文件
shp2dta using 14sheng_matchWGS.shp, database(data_shp) coor(coor0) genid(id) genc(centroid) replace
* 导入线状文件
shp2dta using 三级分界线WGS.shp, database(data_shp3) coor(coor3) genid(id) genc(centroid) replace

绘图

# 调用数据
use coor0, clear
rename _Y lan
rename _X lon
# 将面和线状文件的边界坐标数据进行合并
merge using coor3
drop _merge
merge using data_shp
# 绘制图形
twoway area lan lon, cmiss(n) col(gray) || scatter y_centroid x_centroid, mcolor(dark) msymbol("0") msize(vsmall) || line _Y _X, legend(off)
 

区域上色

如果想要分级显示,则需要分别进行绘制,这是这样方式绘图的不足之处。但是优点在于,对于各个图层的处理有很大的自由度。演示如下:

# 导入属性表
use data_shp, clear
# 与我们的其他经济变量数据进行合并
merge : xian_code using data2008
rename id _ID
drop _merge
save shuxingbiao.dta, replace
# 代开地理边界数据
use coor0.dta, clear
# 与以及合并的属性表再次合并
merge m: _ID using shuxingbiao.dta
# 重命名变量,放置与后面所有合并的表冲突
rename _Y lan
rename _X lon
drop _merge
# 合并分界线的地理边界数据
merge using coor3
# 正式绘图
twoway area lan lon, cmiss(n) col(gray) || area lan lon if crank3 == , cmiss(n) col(khaki) || scatter y_centroid x_centroid, mcolor(dark) msymbol(circle_hollow) msize(vtiny) || line _Y _X, legend(off)
 

spmap 绘图

* 使用 shp2dta 转换数据格式
shp2dta using nycwrpczb_201601, database(nydb) coordinates(nycd) genid(id) genc(centroid) replace //行政边界 底图
shp2dta using nycwrpsnwa_201601, database(wadb) coordinates(wacd) genid(id) genc(centroid) replace //面状图
shp2dta using nycwrprec_201601, database(recdb) coordinates(reccd) genid(id) genc(centroid) replace //点图
* 地图绘制
use "reccd", clear
spmap using "nycd.dta", id(_ID) fcolor(purple) ocolor(gray) mosize(medium) osize(medium) ///
polygon(data("wacd.dta") fcolor(orange%) legenda(on) leglabel(special areas)) ///
point(data("reccd.dta") x(_X) y(_Y) size(*1.2) fcolor(red) ocolor(black) osize(*0.5) ///
legenda(on) leglabel(event pints)) ///
title("Mapping with Stata", size(*0.8)) ///
legend(region(lcolor(gray%) fcolor(white)) ///
title("Legend", size(*0.4) bexpand justification(center)) position ())
 

不知是否为本人个人问题,发现spmap只允许每种类型的子图叠加一次,希望后面有所改进。

往期回顾

  1. 如何使用R、matlab、arcgis进行趋势面分析
  2. 使用R进行空间自相关检验
  3. 空间权重矩阵的那些事(八)-球面距离权重矩阵
  4. R中空间权重矩阵的处理
  5. 使用R进行地图可视化
  6. 使用QGIS进行地图可视化
  7. 南海九段线可以这样处理
  8. Stata 绘图也可以很好看


关注微信公众号,获取更多精彩内容

twoway 系列命令绘制地图的更多相关文章

  1. Android高效率编码-第三方SDK详解系列(一)——百度地图,绘制,覆盖物,导航,定位,细腻分解!

    Android高效率编码-第三方SDK详解系列(一)--百度地图,绘制,覆盖物,导航,定位,细腻分解! 这是一个系列,但是我也不确定具体会更新多少期,最近很忙,主要还是效率的问题,所以一些有效的东西还 ...

  2. 地图 SDK 系列教程-在地图上展示指定区域(转载)

    腾讯位置服务地图SDK是一套提供多种地理位置服务的应用程序接口.通过调用该接口,开发者可以在自己的应用中加入地图相关的功能(如地图展示.标注.绘制图形等),轻松访问腾讯地图服务和数据,构建功能丰富.交 ...

  3. 玩转Windows服务系列——命令行管理Windows服务

    说到Windows服务的管理就不得不说通过命令行的方式管理Windows服务,因为无论是系统管理员,还是通过编程的方式调用cmd命令,命令行都是非常方便以及强大的工具. 接下来就看一下如何通过cmd命 ...

  4. 玩转Windows服务系列——命令行管理Windows服务

    原文:玩转Windows服务系列——命令行管理Windows服务 说到Windows服务的管理就不得不说通过命令行的方式管理Windows服务,因为无论是系统管理员,还是通过编程的方式调用cmd命令, ...

  5. 使用ArcGIS API for Silverlight + Visifire绘制地图统计图

    原文:使用ArcGIS API for Silverlight + Visifire绘制地图统计图 最近把很久之前做的统计图又拿出来重新做了一遍,感觉很多时候不复习,不记录就真的忘了,时间是最好的稀释 ...

  6. Ansible--配置文件及系列命令

    Ansible目录结构 安装完成ansible后要知道ansible主要安装的了什么,安装的目录结构是什么,每个目录做什么的 可以使用:rpm -ql ansible | less 来查看ansibl ...

  7. [转]玩转Windows服务系列——命令行管理Windows服务

    本文转自:http://www.cnblogs.com/hbccdf/p/managewindowsservicewithcmd.html 说到Windows服务的管理就不得不说通过命令行的方式管理W ...

  8. 使用EXCEL绘制三维地图(超简单的五分钟绘制地图方法,妈妈再也不用担心我不会画地图啦~)

    博主为从区域规划转行地图学的小学渣一枚,最近处理数据希望对结果进行三维可视化,意外发现从小用到大的EXCEL可以绘制地图且功能非常强大,在这里做一下简单介绍,希望可以给看官提供些许帮助.那下面就开始吧 ...

  9. 使用Adobe Illustrator + ArcGIS绘制地图 | Map Design Using ArcGIS + Adobe Illustrator

    国内GIS/Cartography同行大部分使用CorelDraw绘制地图.相比之下,国外同行则更多使用Adobe Illustrator绘制地图.CorelDraw和Illustrator两个软件均 ...

随机推荐

  1. SpringBoot2整合Shiro报错 UnavailableSecurityManagerException: No SecurityManager accessible to the calling code 【已解决】

    SpringBoot集成Shiro报错 UnavailableSecurityManagerException: No SecurityManager accessible to the callin ...

  2. 3.后台配置、环境变量、日志、异常处理、二次封装Response、路由组件

    目录 环境变量 封装logger 封装项目异常处理 二次封装Response模块 路由组件配置 环境变量 dev.py # 环境变量操作:小luffyapiBASE_DIR与apps文件夹都要添加到环 ...

  3. 1分钟,带你上手“Markdown”语法

    前言 Markdown 是一种轻量级的标记语言,有 John Gruber 以及Aaron Hillel Swartz 一起编写.Aaron Hillel Swartz 是一个极富传奇的黑客,有兴趣可 ...

  4. Python习题集(三)

    每天一习题,提升Python不是问题!!有更简洁的写法请评论告知我! https://www.cnblogs.com/poloyy/category/1676599.html 题目 写一个小程序:控制 ...

  5. rabbitmq系列(四)死信队列

    一.什么是死信队列 当消息在一个队列中变成一个死信之后,它将被重新publish到另一个交换机上,这个交换机我们就叫做死信交换机,私信交换机将死信投递到一个队列上就是死信队列.具体原理如下图: 消息变 ...

  6. 学习笔记----C语言的面向对象

    2020-03-26    21:27:17 面向对象的编程语言都有一个类的概念,像Java.python等.类是对特定数据的特定操作的集合体.它包含两个范畴:数据和操作.C语言是没有类的概念的,但是 ...

  7. Linux 基础篇

    本文使用系统为 :CentOS 7 1.文件操作 增: touch a.txt   #增加文件 mkdir test  # 增加目录   参数:-p 创建多级目录   ; 删: rm a.txt  # ...

  8. vue 2

    目录 复习 今日 指令 条件指令 循环指令 评论案例 解决插值表达式符号冲突 总结 组件 局部组件 全局组件 组件间的交互:父传子 组件间的交互:子传父 复习 """ 1 ...

  9. 新手版超详细LoadRunner12完整安装+汉化过程

      01下载 首先从百度网盘获取到这几个文件(网盘地址会附在文末,过期请联系): 我安装的是社区版+中文汉化过的,使用我只下载了第一个和第三个文件,下面我将讲一下如何安装. 02安装社区版 1.选择“ ...

  10. hdu1253胜利大逃亡(城堡的怪物太狠,主角难免天天逃亡)

    题目链接:http://icpc.njust.edu.cn/Problem/Hdu/1253/ 其实就是二维扩展到三维了,增加了搜索方向,其他的没什么不同. 代码如下: #include<bit ...