今天费了半天劲,才一点点从GIS数据中把中国各省市的多边形“抠”出来。问题缘起于COS论坛上的这个帖子:http://cos.name/bbs/read.php?tid=785,其实我后面的回复基本都跑题了,跑着跑着突然想起上学期上课的时候Prof. Peng, F曾经提到他当年是如何辛辛苦苦用作图软件去搞定地图图示的,我当时听着觉得不应该太困难,于是下课之后去告诉他用R可以很容易做出地图来,他当时问我是不是S-Plus(看来在他们脑子里还是S-Plus的名气大一点),我说类似但不完全一样,云云,最后他问能否作出重庆市的地图,我当时也没仔细注意这个问题,回来一看,map("china")还真没有重庆市。
之后我又花了很长时间找地理数据,其间联系过Victoria University of Wellington的Ray Brownrigg(maps和mapdata等包的作者),他说没有他也没有数据,告诉我要是我能搞到数据他也许可以给我一点Hints,不过我后来死活也没找到;于是开始打另一个注意,就是活生生去读一幅空白中国地图,从中获得线条(实际上是点)的坐标,然后再用坐标结合plot()把图形还原出来,后来发现这种方法做出来的地图太粗糙,而且面临最大的困难是很不容易把各省的坐标数据分开,这样对于地理信息展示是没有意义的。
今天再次找数据的时候,却鬼使神差地发现了国家基础地理信息中心的网站:http://nfgis.nsdi.gov.cn/,里面可以免费下载GIS数据,我今天一眼就看见了国界与省界数据,各种数据都是一个zip压缩包,里面是*.dbf、*.shp和*.shx文件,这是shapefile的通用格式,R里面有maptools包可以读取(read.shape()函数),事实上作图的时候作出来是925个多边形(polygon),我到现在也没明白为什么会有那么多,不过顺利的是我已经知道哪34个多边形是我想要的了。下面这个PDF文件是我的一个示例:
下面的PNG文件当然就不如PDF清晰了:

每个省中间的圆圈是什么东西?肯定不是省会…
不是省会,只是经纬度的平均中心而已。
多谢你的线索,最近想要在报告中加入一些结合统计数据的地理图片,弄了个arcgis,结果会了一点基本操作,发现却没有想要的数据,朋友介绍到了你这里,多谢了。
客气:)
这样的图使用GIS应该可以做啊
是,但是如果自己有经纬度数据,对于统计建模来说,灵活性就大大增加了
没必要吧,现在GIS的开源软件那么多。
一物有一物的用处,干嘛搞得那么复杂。
主要是地理数据的问题,不是软件问题,并不复杂,我用R做的,刚才搜"Open Source GIS"的时候发现R也被列在其中了。
你好,请问你能不能分享数据和程序?国家基础地理信息中心的数据好像不能下载了。我正在写博士论文,需要用R做一张中国分省地图。 期待你的回复。 我的邮箱是 fin_zhang2000@yahoo.com.
非常感谢!
博
请参考:http://cos.name/2009/07/drawing-china-map-using-r/
谢谢你!但我导入GIS数据后,发现省名在R里显示是乱码,请问应该如何解决? 再次感谢!
编码问题吧,请报告
sessionInfo()。我用中文Windows系统是没问题的。我是英文系统,但把language for non-unicode program改成中文了,系统可以显示中文菜单。下面R的sessionInfo. 谢谢。
编码问题我不太熟悉,我的系统是:
> Sys.getlocale()[1] "LC_COLLATE=Chinese_People's Republic of China.936;LC_CTYPE=Chinese_People's Republic of China.936;LC_MONETARY=Chinese_People's Republic of China.936;LC_NUMERIC=C;LC_TIME=Chinese_People's Republic of China.936"
你可以用
Sys.setlocale()试试看。再请教一个问题,请问怎么把GIS数据里的省名改成拼音?谢谢了!
仍然参照我前面提到的那篇文章,对
x$att.data$NAME重新赋值即可,但在乱码的情况下,你可能不知道每一行分别是哪个省份,所以最好还是先把编码问题解决了再说,或者找一台中文的计算机试试。编码问题已经解决,用你提示的Sys.setlocale()。 非常感谢!
再问一个问题,请问如何在地图下加legend,象你的例子中展示的那样?
你可以用legend()函数,参见?legend
您好,大师!请问如何输出贵州省某地区的地图,并在这个地区的各县境上标出某种现象出现的位置?
还有另外一个问题:当我在输入如下命令时:
library(maptools);x=read.shape(’bou2_4p.shp’);#
为什么会出现如下问题:
错误于install.packages(NULL, .libPaths()[1L], dependencies = NA, type = type) :
没有设定程序包
> library(maptools);x=read.shape(’bou2_4p.DBF’);#
错误于getinfo.shape(filen) : Error opening SHP file
此外: 警告信息:
很高兴搜索到您的文章,但我是新人,请帮我分析与解决,谢谢了!
第一个问题是你没有安装包:
install.packages('maptools'),后面你装了包似乎又没有给对文件的位置。自己看getwd()底下有没有bou2_4p.DBF这个文件,如果没有你要把完整的路径写上。请问:我怎么安装包:install.packages(‘maptools’),是不是通过工具栏里的程序包的安装程序包,来安装mapstools呢?
用代码和菜单都可以装。
大师,您有QQ其他联系的方式吗?我qq:493896682.
参见留言页面。
大师,对不起!我是新人,以前没学过这软件,现在做论文,需要用此软件标明一现象在某地域上的分布图。请您详细为我写出安装install.packages(‘maptools’)的步骤?还有,如何把完整的路径写上??麻烦您了,谢谢!
install.packages('maptools')就是把这句话贴到R里面打回车。为了避免下一个问题,你还是贴install.packages('maptools', repos="http://cran.r-project.org")吧。完整路径就是完整的磁盘路径
"C:/abc/def/xxx.yyy"。这样我说清楚了么?谢谢您的真诚回复。
我已按您给的操作方式,已把maptools程序包装好了(因为电脑显示如下:
程序包’maptools’打开成功,MD5和检查也通过
下载的程序包在
C:\Documents and Settings\Administrator\Local Settings\Temp\RtmpDLAkh5\downloaded_packages里)
同时我也按我理解的bou2_4p.shp的完整路径,进行输入操作,结果还是不行。电脑显示如下:
> library(maptools);x=read.shape(“E:/中国地理/bou2_4p.shp”)
Shapefile type: Polygon, (5), # of Shapes: 925
警告信息:
use readShapeSpatial:
objects other than Spatial objects defined in the sp package are deprecated
请问:如何解决?
…
use readShapeSpatial:…一共两个单词,我不知道R的警告信息怎么这么难懂。
呵呵,英语不好。
另外,用spss来画统计地图,我想是不是比用R更简单些??
但是如果spss画 的话,spss有没自带中国地理信息集。并且spss里面都是用.tab的格式,而到国家基础地理信息中心下载的都是dbf或shp或shx文件格式。我在网上找了,但貌似又不能转换?
另外,我从国家基础地理信息中心下载的文件解压后,貌似都不能打开。是不是要另外下载阅读浏览dbf,shp.shx等文件格式的软件??
软件问题参见留言页面FAQ2。
dbf, shp, shx都是地理信息专用文件,如果你愿意找,可以去试试GIS相关软件。
关于R画地图问题,这篇文章比我介绍得更详细:http://cos.name/2009/07/drawing-china-map-using-r/
谢谢您的回复哦!今天仔细看了您的简历,知道您是人大在读博士,祝福您,愿您事业有成,为中国崛起而奋斗!
谢谢,谢谢。
为什么我操作时,总会出现问题?有没有专门介绍用r画统计地图的书籍?如果没有,建议您可以开拓这片荒漠。
再问一个问题哦:我操作如下,有出现问题了,呵呵,请看:
> library(maptools);x=readshapespatial(E:/中国地理/bou2_4p.shp)
载入需要的程辑包:foreign
载入需要的程辑包:sp
错误: 意外的’/'在”x=readshapespatial(E:/”里
请问:如何载入需要的这连个程序包?
我知道了 如何载入了。呵呵,不好意思。发现自己还是没入门。
溢辉大哥,我去了国家基础地理信息中心的网站,想找边界数据,可是没有找到您在文中所提到的包含三种格式的文件包,只找到了后缀名为 .e00的文件。莫非我没找对地方?还是网站修改了内容?对于寻找地级地界数据,您还有没有什么好的办法?谢谢!
有这么难找么?进了网站,点下载,不就是了么
http://nfgis.nsdi.gov.cn/nfgis/chinese/c_xz.htm
疯掉了,这个网页我打开过不下10遍,瞪俩眼看了半天死活没看见下载连接,结果今天大眼一看就看见了,真是邪门了…
刚下了ArcGIS软件,正在一点一点学~杯具啊~这个软件我一点都不清楚,要学到猴年马月了~我的paper啊~