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 1:1 xian_code using data2008
rename id _ID
drop _merge
save shuxingbiao.dta, replace
# 代开地理边界数据
use coor0.dta, clear
# 与以及合并的属性表再次合并
merge m:1 _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 == 1, 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%40) 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%0) fcolor(white)) ///
 title("Legend", size(*0.4) bexpand justification(center)) position (4))
 

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

往期回顾

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


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

原文地址:https://www.cnblogs.com/xgzhu/p/12658793.html

时间: 2024-10-29 02:48:55

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

【 D3.js 入门系列 --- 10 】 地图的绘制

本人的个人博客为:www.ourd3js.com csdn博客为:blog.csdn.net/lzhlzz 转载请注明出处,谢谢. 地图的制作在 D3 中可以说是最重要的一环.因为在进行数据可视化时,很多情况都会和地图联系在一起,如中国各省的人口多少,GDP多少等,都可以和地图联系在一起. D3 中制作地图所需要的文件问 JSON 文件.JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.关于 JSON 的语法格式,可以在: http://www.w3s

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

原文:使用ArcGIS API for Silverlight + Visifire绘制地图统计图 最近把很久之前做的统计图又拿出来重新做了一遍,感觉很多时候不复习,不记录就真的忘了,时间是最好的稀释剂,真是这样. 恰好有些网友又向我问起,于是稍作记录,以便自己今后复习和参考. 本文示例用的版本为: Silverlight 5+Visifire 3.6.8+ArcGIS API for Silverlight 3.0+Visual Studio 2010 一.ArcGIS API For Sil

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

本文转自:http://www.cnblogs.com/hbccdf/p/managewindowsservicewithcmd.html 说到Windows服务的管理就不得不说通过命令行的方式管理Windows服务,因为无论是系统管理员,还是通过编程的方式调用cmd命令,命令行都是非常方便以及强大的工具. 接下来就看一下如何通过cmd命令管理Windows服务. 管理Windows服务的主要cmd命令 管理Windows服务的命令应该有很多,但是我所了解到的命令主要有两个:sc.net. 说是

百度地图API使用系列3-基本地图1

百度基本地图使用1 关于百度地图申请开发者key 可以参考前面的博客 百度地图API使用系列1-准备工作 关于搭建工程的可以参考前面的博客 百度地图API使用系列2-显示地图 这一篇博客介绍基本地图使用里面的地图类型.显示实时交通图.在地图显示一个Marker. 这里要注意的是关于地图的操作不是有显示地图的控件直接去完成,百度为他添加了一个属性BaiduMap 可以把这个属性理解为是 地图的管理器 我们可以通过对应 的 get 方法 获取这个属性 baiduMap = baiduMapView.

Linux中的who系列命令who/whoami/who am i

在Linux中who系列命令存在who/whoami/who am i. 首先我已普通用户guixian001等了系统.然后执行命令分别执行命令whoami/who am i/who.截图如下: 然后我们使用su命令切换到root用户再执行以上三个命令. 看出区别了吗?使用whoami命令显示的是当前"操作用户"的用户名.而who am i显示的是"登录用户"的用户名.要解释这个现象需要引入linux中的两个概念--实际用户(UID,即user id)和有效用户(E

Ansible系列命令用法详解与使用

Ansible系列命令用法与使用 在上一个文章中已经完成了Ansible的安装,这片文章主要的用来记录Ansible一些命令的用法详解及其使用场景.好了非话不多说,'上菜吧'. Ansible命令行执行方式有Ad-hoc.Ansible-playbook两种方式.Web化执行方式其官方提供了付费产品Tower(10台以内免费),个人的话可以基于API开发类似的Web化产品.此篇文章主要针对于Ad-hoc.Ansible-playbook两种方式做详细介绍. 什么是Ad-hoc.Ansible-p

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

国内GIS/Cartography同行大部分使用CorelDraw绘制地图.相比之下,国外同行则更多使用Adobe Illustrator绘制地图.CorelDraw和Illustrator两个软件均为矢量图形制作软件,可以添加多种效果.两者的差异可以参考这个网页:https://www.admecindia.co.in/blog/differences-between-adobe-illustrator-and-coreldraw 不过对于GISer而言,相比之下illustrator更适合与

使用D3.js绘制地图并打点

本篇简单介绍一下使用D3.js绘制地图,并更具经纬度在地图打点.最后根据点生成voronoi图及其三角网. 下载地图geoJson文件 去网上下载要绘制地图的geoJson文件. 使用d3.json()加载地图文件,这里为了方便加载我把geoJson文件放在了js文件里. 绘制地图 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title>

Ansible之系列命令详解

ansible系列命令有:ansible.ansible-doc.ansible-playbook.ansible-vault.ansible-console.ansible-galaxy.ansible-pull,这些命令每个命令都有它独特的作用和用法,接下来我们一一来了解它的用法. 1.ansible-doc:这个命令主要作用是显示模块的帮助信息,有点类似Linux里的man命令. 命令用法: ansible-doc [options] [module...] 常用选项: -a:显示所有模块