ArcGIS制作城市空间经济联系强度图

      这几天有师姐找到我让帮忙画上面的图。看着不是很难,关键在于画线,但搜索网上却没有相关制作方法。偶然在别人的问题上(http://zhihu.esrichina.com.cn/question/19205)看到了XY to lines 这个工具,顺带看到了径向流图的制作方法(见后文链接)。因而,便借鉴径向流图的画法完成了上图的制作。然后,我还发现用这种方法还可以制作很多类似的图,像什么领域图,城市间相互作用等等,只是相关指标需要提前运算,然后赋值给生成的每条曲线,接着进行分层设色符号化等操作。

 这里主要记录一下核心步骤,以备忘。

这个图师姐只给了一个经济联系矩阵:

所以,首先要准备底图数据。

然后利用点图层获取点的坐标数据,并导出,方法见:Arcgis中怎么获取点shape数据的坐标_百度经验  https://jingyan.baidu.com/article/d5c4b52bee0369da560dc509.html。

接着便是繁琐的利用坐标构建线段过程,构建线段主要用到的就是XY to lines 工具,其原理见:ArcGIS中制作流向图(Flow Map)_红黄蓝狗日的_新浪博客http://blog.sina.com.cn/s/blog_673c98be0101ggel.html
这一步里面最难的或者说最繁琐的,就是用excel制作线段的起始坐标的过程,长这样:

      经过一顿操作之后,制成类似这样的: 

   

然后用XY to lines 转成线段就行,注意转的时候要把最后一列的权重选进去,以便后期分层设色。

总的来说,这不是一个很便捷的方法,很多人制作这个图都是用代码实现的,后面附上的就是从大神同学那问来的方法,感兴趣的可以自己研究一下。代码里是根据斑块的几何中心(也可能是质心)来创建邻域曲线的,用的时候注意一下就好。此外,制作交通流量啥的很牛的transCAD,好像也能制作这个图,时间原因,有兴趣的可以继续研究。
最后,贴个很漂亮的径向流图。
      参考:
ArcMap中如何制作径向流图 - CSDN博客  http://blog.csdn.net/arcgis_all/article/details/8216246
ArcGIS制作放射状流向地图(Radial Flow Map) - gisangela - 博客园  http://www.cnblogs.com/gisangela/p/3429276.html
地图慧-在线制作地图,数据地图,专题地图,用地图说话  http://c.dituhui.com/apps/flow
ArcGIS放射状流向地图 - 我也是个傻瓜 - 博客园  https://www.cnblogs.com/liweis/p/4297859.html
Creating radial flow maps with ArcGIS | ArcGIS Blog  https://blogs.esri.com/esri/arcgis/2011/09/06/creating-radial-flow-maps-with-arcgis/
附上R生成邻域线段代码,结果需要在ArcGIS中打开:
#### 读取 shp 文件
library(rgdal)
CSJSHP <- readOGR("./d", "data") # shp
CSJSHP <- CSJSHP[order(as.numeric(CSJSHP$IDs)),] # 需要ID序列标识图斑
CSJSHP$IDs <- factor(CSJSHP$IDs)
IDs <- CSJSHP$IDs
coords <- coordinates(CSJSHP) # 

#### 创建基于距离倒数的空间权重
library(spdep)
CSJ_nb <- dnearneigh(coords, d1 = 0, d2 = 150000, row.names = IDs)
dsts <- nbdists(CSJ_nb, coords)
idw <- lapply(dsts, function(x){1/(x/1000)})
spw <- nb2listw(CSJ_nb, glist = idw, style = "B")
spwmat <- listw2mat(spw)
outspw <- data.frame(spwmat)
write.csv(outspw, "outspw.csv")
write.sn2gwt(listw2sn(spw), "outspw2.GWT", useInd = TRUE)

####创建邻域曲线
CSJ_nb_lines <- listw2lines(spw,coords)
CSJ_nb_lines$j_ID <- NULL
CSJ_nb_lines$i_ID <- NULL
writeOGR(CSJ_nb_lines,".","CSJ_nb_lines4",driver="ESRI Shapefile")

  • 6
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值