楼主: 求证1加1
7023 38

[学习分享] 【版块活动】一月一包主题讨论 [推广有奖]

11
jmpamao 发表于 2014-4-15 21:22:18
我现在就想 怎么把 钓鱼岛的 坐标 放进  那个 structure(list(x=...y=......), 大家帮忙看看, 估计要看代码
map了,并不长, 但理解不易。

12
xingzhaoh 发表于 2014-4-16 07:54:34
jmpamao 发表于 2014-4-15 21:22
我现在就想 怎么把 钓鱼岛的 坐标 放进  那个 structure(list(x=...y=......), 大家帮忙看看, 估计要看代 ...
期待高手指点

13
jmpamao 发表于 2014-4-16 09:36:33
知道怎么添加钓鱼岛坐标了,今天 早上 灵光一想, 为什么坐标中, structure 中有那么多的 NA,这没事做吗?
所以把  structure  变为 data.frame 看。
  1. 4049          NA          NA
  2. 4050   112.44239    5.316195
  3. 4051   112.43666    5.346023
  4. 4052   112.42864    5.342843
  5. 4053   112.44239    5.316195
  6. 4054          NA          NA
  7. 4055   112.57360    5.177665
  8. 4056   112.56042    5.218391
  9. 4057   112.55240    5.214976
  10. 4058   112.57360    5.177665
  11. 4059          NA          NA
  12. 4060   112.29858    4.250258
  13. 4061   112.29228    4.261734
  14. 4062   112.28712    4.255352
  15. 4063   112.29858    4.250258
复制代码


觉得 这些数据 有可能 是通过 NA 来组成一个闭环,  这也是为什么之前想当然的以为,只要把 钓鱼岛的 坐标放进  x, y  就ok,变为线段, 而没有断截。   所以添加 NA 后, 发现 wow, works~
#红圈内的小黑点 为钓鱼岛坐标, 添加NA 组成闭环,看来是MAP 的处理了,还得看代码






钓鱼岛.jpg (19.38 KB)

钓鱼岛.jpg

不加NA为线段.jpg (26.13 KB)

不加NA为线段.jpg

已有 1 人评分学术水平 热心指数 信用等级 收起 理由
ywh19860616 + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

14
jmpamao 发表于 2014-4-16 10:38:28
下一步, 我们看看能否 把四川 和 重庆边界的坐标  找出来, 捣鼓一下,看看能否把  mapdata 中 china 的数据进行 完善~~~  structure(......)


cos 中也有大牛,提到 四川和重庆边界的问题,是提出来了,但没有去把数据进行完善。
而我们可以趁这个讨论 地图主题的机会, 集合大家的力量,看看能否完善其数据。
再进行分享,觉得是有意义~


##晚上要消化下  1+1版主 给的资料。。。。

15
jmpamao 发表于 2014-4-16 19:21:37
重庆的边界也初步解决~

1+1版主 提供的http://cos.name/2009/07/drawing-china-map-using-r/ 中》有这里下载中国地图的GIS数据,这是一个压缩包,完全解压后包含三个文件(bou2_4p.dbf、bou2_4p.shp和bou2_4p.shx)

  1. ######################################
  2. require(maptools)
  3. require(mapdata)
  4. require(maps)
  5. x= readShapePoly("bou2_4p.shp")# 从cos 中下载的链接
  6. #shp的数据结构是够复杂的,下面都是在搞数据
  7. summary(x)
  8. class(x)
  9. SpatialPolygonsDataFrame#从summary 中看到这个对象,查看下
  10. #第一次遇到 @ 符号。。。此代码中有@。。。?slot
  11. slotNames(x)
  12. attributes(x@data)
  13. x@data
  14. plot(x)


  15. #####要重上述数据中怎么提取 重庆的坐标呢?########
  16. x@data[x@data$NAME=="重庆市",]#在第207位置,看看面积


  17. slotNames(x@polygons[[925]])#还是为了查看数据结构

  18. slot(x@polygons[[208]],"area")#尝试207,208后比较面积,得出208估计为重庆

  19. chongqing=slot(x@polygons[[208]],"Polygons")[[1]]@coords##尝试再尝试怎么提取 坐标
  20. plot(chongqing)#看看是不是重庆地图

  21. ###确定是重庆坐标后。提取经纬度,生成文件。
  22. write.table(chongqing[,1],"chongqing_jing.txt",sep=",",row.names=F,col.names=F,eol=",")
  23. write.table(chongqing[,2],"chongqing_wei.txt",sep=",",row.names=F,col.names=F,eol=",")

  24. ###把重庆的,经纬度 修改到 mapdata 中的 china 中。
  25. ###map("china",fill=F,plot=T,interior=T)
  26. ###ch=map("china")
  27. ###fix(ch)
  28. ###chinaCQ.r的 数据为structure(list(x=c(重庆东经坐标,NA,钓鱼岛东经坐标,NA,....),y=c(重庆北纬坐标,NA,钓鱼岛北纬坐标,NA,....)),。。。)

  29. chi <-source("chinaCQ.r")
  30. str(chi$value)
  31. map(chi$value,fill=F,plot=T,interior=T,myborder = 0.001)

  32. ###可以看到重庆和四川分开了, 其中重庆的地图数据精度要高的多(比R自带的),如果觉得线太重, 可以
  33. ###稀释一些点,让它看上去和周围平缓些。

  34. ###其实可以直接那个shp文件, 画图, 但为了数据结构的简单性, 觉得mapdata的数据形式更简单,直观些
  35. ###而进行的修补。
复制代码

把 chinaCQ.txt 也上传下, 改chinaCQ.r
大家都来参与讨论啊~~~

















重庆边界.jpg (38.68 KB)

重庆边界.jpg

chinaCQ.txt
下载链接: https://bbs.pinggu.org/a-1531030.html

154.7 KB

已有 1 人评分学术水平 热心指数 信用等级 收起 理由
kk22boy + 2 + 2 + 2 精彩帖子

总评分: 学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

16
xingzhaoh 发表于 2014-4-17 08:39:35
jmpamao 发表于 2014-4-16 19:21
重庆的边界也初步解决~

1+1版主 提供的http://cos.name/2009/07/drawing-china-map-using-r/ 中》有从这 ...

library(maptools)

axx<-readShapePoly("bou2_4p.shp", proj4string=CRS("+proj=longlat +ellps=clrk66"))

x=axx

getColor=function(mapdata,provname,provcol,othercol)

{

f=function(x,y) ifelse(x %in% y,which(y==x),0);

colIndex=sapply(mapdata$NAME,f,provname);

col=c(othercol,provcol)[colIndex+1];

return(col);

}

provname=c("湖北省","甘肃省","河北省","辽宁省","黑龙江省","内蒙古自治区");

provcol=c("green","green","green","green","green","green","green");

plot(x,col=getColor(x,provname,provcol,"white"))


中国.png

怎么在各个省加上省的名字上去


已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
求证1加1 + 20 + 1 + 1 + 1 鼓励积极发帖讨论

总评分: 论坛币 + 20  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

17
jmpamao 发表于 2014-4-17 09:28:58
xingzhaoh 发表于 2014-4-17 08:39
library(maptools)axx
我之前画的图,标注省会城市的
是从百度下的 坐标。
你去找下 有没有 省的标注坐标(就是在每个区域内,摆放的那个点 比较居中就ok)

在 shp 的数据也可以调出一个省的边界坐标,如果你愿意的话,自己查看range, 然后, 大体可以定一个位置(上面有怎么找重庆市, 就其边界坐标,但还是麻烦些)
。。。
你有了这些数据后, 就可以 text 了, 请查看 mapproj 包,
####
其他,哪个包,可以直接 通过参数来调用, 我也想知道
已有 1 人评分学术水平 热心指数 收起 理由
耕耘使者 + 1 + 1 热心帮助其他会员

总评分: 学术水平 + 1  热心指数 + 1   查看全部评分

18
jmpamao 发表于 2014-4-17 09:45:41
jmpamao 发表于 2014-4-16 19:21
重庆的边界也初步解决~

1+1版主 提供的http://cos.name/2009/07/drawing-china-map-using-r/ 中》有从这 ...
大家帮忙 看看着个重庆边界的问题

1、四川可能要重新画, 现在的方式 还是包含重庆。
2、想请教,边界的点,比如 四川 和重庆的 ,  这些点 到底是属于 四川  还是 重庆, 还是两者公用,来组成一个块。 请指教

19
wfldragon 发表于 2014-4-17 11:04:58
其实核心的问题还是分组。只是边界还比较容易,如果涉及面积就还需要把重庆从四川里面减去,否则面积不对
已有 2 人评分学术水平 热心指数 收起 理由
求证1加1 + 1 + 1 鼓励积极发帖讨论
耕耘使者 + 1 + 1 鼓励积极发帖讨论

总评分: 学术水平 + 2  热心指数 + 2   查看全部评分

研究需要我们共同努力!

20
jmpamao 发表于 2014-4-17 11:57:40
wfldragon 发表于 2014-4-17 11:04
其实核心的问题还是分组。只是边界还比较容易,如果涉及面积就还需要把重庆从四川里面减去,否则面积不对
查看  mapdata china 数据
  1. List of 4
  2. $ x    : num [1:4508] 123 124 124 124 NA ...
  3. $ y    : num [1:4508] 46.3 46.3 46 45.9 NA ...
  4. $ range: num [1:4] 73.44 135.1 4.25 53.57
  5. $ names: chr [1:712] "1" "2" "3" "4" ...
  6. - attr(*, "class")= chr "map"
复制代码


是利用了 711个NA 来分 712个 块,现在的names 是用 “1”,“2”,“3,”来表示。
也跟 1+1版主提了,看看大家有没有兴趣, 添加一项names_cn : "重庆“,”北京“。。。。。这类的。以后数据调用的时候,估计有帮助

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-30 21:18