楼主: 陈超123
11360 11

[问答] R语言实现根据经纬度得出地理位置 [推广有奖]

  • 1关注
  • 1粉丝

博士生

44%

还不是VIP/贵宾

-

威望
0
论坛币
828 个
通用积分
3.8700
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
2334 点
帖子
82
精华
0
在线时间
395 小时
注册时间
2015-4-6
最后登录
2024-4-22

10论坛币
有没有大神能用R语言根据经纬度,得出每个经纬度对应的地理位置?(数据集有上万条观测)
跪求分享代码,要求能切实可运行的。

最佳答案

radar000 查看完整内容

这样就行了
关键词:R语言 经纬度 有没有 数据集 地理位置 经纬度 转换 R语言

回帖推荐

radar000 发表于5楼  查看完整内容

这样就行了
沙发
radar000 发表于 2017-3-22 21:01:31 |只看作者 |坛友微信交流群
  1. AK <- "你自己的AK"
  2. lng <- "116.32212329"
  3. lat <- "39.997986202"

  4. location <- paste(lat,",",lng,sep="")
  5. url <- paste("http://api.map.baidu.com/geocoder/v2/?callback=renderReverse&location=",location,"&output=json&pois=1&ak=",AK, sep = "")
  6. url_string <- URLencode(url)
  7. connect <- url(url_string)
  8. temp_geo <- fromJSON(substr(paste(readLines(connect,encoding = "UTF-8",warn = F),collapse = ""),
  9.                             30,nchar(paste(readLines(connect,encoding = "UTF-8",warn = F),collapse = ""))-1))
  10. temp_geo
复制代码
这样就行了

使用道具

藤椅
小朝 发表于 2017-3-22 22:15:12 |只看作者 |坛友微信交流群
http://www.ppvke.com/Blog/archives/37944

使用道具

板凳
陈超123 学生认证  发表于 2017-3-23 15:08:53 |只看作者 |坛友微信交流群
这段代码是不可行的,请问你还有更好的方法吗?或者修改一下这个代码?
很感激你的回复!

QQ截图20170323150648.png (10.7 KB)

QQ截图20170323150648.png

使用道具

报纸
radar000 发表于 2017-3-23 16:58:20 |只看作者 |坛友微信交流群
  1. AK <- "你自己的AK"
  2. lng <- "116.32212329"
  3. lat <- "39.997986202"

  4. location <- paste(lat,",",lng,sep="")
  5. url <- paste("http://api.map.baidu.com/geocoder/v2/?callback=renderReverse&location=",location,"&output=json&pois=1&ak=",AK, sep = "")
  6. url_string <- URLencode(url)
  7. connect <- url(url_string)
  8. temp_geo <- fromJSON(substr(paste(readLines(connect,encoding = "UTF-8",warn = F),collapse = ""),
  9.                             30,nchar(paste(readLines(connect,encoding = "UTF-8",warn = F),collapse = ""))-1))
  10. temp_geo
复制代码

使用道具

地板
陈超123 学生认证  发表于 2017-3-23 21:31:05 |只看作者 |坛友微信交流群
radar000 发表于 2017-3-23 17:00
这样就行了
谢谢,感激不尽!

使用道具

7
陈超123 学生认证  发表于 2017-3-25 11:37:14 |只看作者 |坛友微信交流群
radar000 发表于 2017-3-23 17:00
这样就行了
for (location in lat_lng) {
#生成规则的url地址(具体参数可参考Geocoding API文档)
  url <- paste("http://api.map.baidu.com/geocoder/v2/?callback=renderReverse&location=",location,"&output=json&pois=1&ak=",AK, sep = "")
  url_string <- URLencode(url)
  connect <- url(url_string)
  temp_geo <- fromJSON(substr(paste(readLines(connect,encoding = "UTF-8",warn = F),collapse = ""),
                            30,nchar(paste(readLines(connect,encoding = "UTF-8",warn = F),collapse = ""))-1))
  address<-temp_geo$result$formatted_address
  baidu_address <- c(baidu_address,address)
}
result <- data.frame(lat_lng, baidu_address)

result
                             lat_lng                baidu_address
1  37.8051643371582,112.564300537109 山西省太原市小店区产业路21号
2   37.899299621582,112.557022094727 山西省太原市小店区产业路21号
3  37.8539428710938,112.593185424805 山西省太原市小店区产业路21号
4  37.8113784790039,112.587127685547 山西省太原市小店区产业路21号
5  37.8410720825195,112.540687561035 山西省太原市小店区产业路21号
6  37.8662376403809,112.583618164062 山西省太原市小店区产业路21号
7   37.870849609375,112.631248474121 山西省太原市小店区产业路21号
8  37.8324890136719,112.560577392578 山西省太原市小店区产业路21号
9   37.757740020752,112.574089050293 山西省太原市小店区产业路21号
10 37.7993812561035,112.509735107422 山西省太原市小店区产业路21号

请问我用这样for循环想一下子导出多个经纬度的地址,为什么最后只有一个地址?

使用道具

8
陈超123 学生认证  发表于 2017-3-25 11:38:49 |只看作者 |坛友微信交流群
radar000 发表于 2017-3-23 17:00
这样就行了
for (location in lat_lng) {
#生成规则的url地址(具体参数可参考Geocoding API文档)
  url <- paste("http://api.map.baidu.com/geocoder/v2/?callback=renderReverse&location=",location,"&output=json&pois=1&ak=",AK, sep = "")
  url_string <- URLencode(url)
  connect <- url(url_string)
  temp_geo <- fromJSON(substr(paste(readLines(connect,encoding = "UTF-8",warn = F),collapse = ""),
                            30,nchar(paste(readLines(connect,encoding = "UTF-8",warn = F),collapse = ""))-1))
  address<-temp_geo$result$formatted_address
  baidu_address <- c(baidu_address,address)
}
result <- data.frame(lat_lng, baidu_address)


请问,我想用for 循环导出多个经纬度的具体地址,但是为什么最后只有一个地址?

> result
                             lat_lng                baidu_address
1  37.8051643371582,112.564300537109 山西省太原市小店区产业路21号
2   37.899299621582,112.557022094727 山西省太原市小店区产业路21号
3  37.8539428710938,112.593185424805 山西省太原市小店区产业路21号
4  37.8113784790039,112.587127685547 山西省太原市小店区产业路21号
5  37.8410720825195,112.540687561035 山西省太原市小店区产业路21号
6  37.8662376403809,112.583618164062 山西省太原市小店区产业路21号
7   37.870849609375,112.631248474121 山西省太原市小店区产业路21号
8  37.8324890136719,112.560577392578 山西省太原市小店区产业路21号
9   37.757740020752,112.574089050293 山西省太原市小店区产业路21号
10 37.7993812561035,112.509735107422 山西省太原市小店区产业路21号

使用道具

9
zhouyuanshen 发表于 2017-3-25 18:01:44 |只看作者 |坛友微信交流群
新技能get

使用道具

radar000 发表于 2017-3-22 21:01
这样就行了
可以加你好友吗?求指导。拜托拜托。

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-30 18:34