R实例:根据经纬度坐标批量返回行政区域信息

library(RCurl)
data<-list()
site<-read.table("C:/Users/steph/Desktop/visual/site.csv",sep=",",header=TRUE)
len<-nrow(site)
head(site)
       lon      lat
1 113.1135 23.02531
2 112.5148 22.80004
3 113.0218 22.95940
4 113.1344 23.01153
5 112.8725 23.04658
6 113.0884 22.96158
for(n in 1:len)
	{
	lon<-site$lon[n]
	lat<-site$lat[n]
	out<-getURL(paste("https://geoindex.amap.com/geoIndex/area?callback=siptea_200823435167697&adGrade=4&region=",lon,"%2C",lat,sep=""))
	res<-strsplit(out,'\"data\"')[[1]][2]
	res<-strsplit(res,'\",\"')[[1]][c(3,5,7,9)]
	res<-gsub('\":\"',"",gsub("[a-z]","",res))
	region<-data.frame(t(res))
	data[[n]]<-region
	next
	}
mydata<-do.call(rbind,data)
names(mydata)<-c("province","city","district","town")
print(mydata)
   province   city district       town
1    广东省 佛山市   禅城区   祖庙街道
2    广东省 佛山市   高明区     更合镇
3    广东省 佛山市   禅城区     南庄镇
4    广东省 佛山市   禅城区 石湾镇街道
5    广东省 佛山市   三水区     白坭镇
6    广东省 佛山市   顺德区     乐从镇
7    广东省 佛山市   高明区   荷城街道
8    广东省 佛山市   南海区   桂城街道
9    广东省 佛山市   顺德区     乐从镇
10   广东省 佛山市   南海区     大沥镇
11   广东省 佛山市   禅城区 石湾镇街道
12   广东省 佛山市   顺德区   容桂街道
13   广东省 佛山市   南海区     狮山镇
14   广东省 佛山市   南海区     大沥镇
15   广东省 佛山市   顺德区   大良街道
16   广东省 佛山市   顺德区   大良街道
17   广东省 佛山市   顺德区     乐从镇
18   广东省 佛山市   三水区     乐平镇
19   广东省 佛山市   禅城区   祖庙街道
20   广东省 广州市   南沙区   南沙街道
21   广东省 广州市   天河区   五山街道
22   广东省 广州市   南沙区     东涌镇
23   广东省 广州市   番禺区   桥南街道
24   广东省 广州市   海珠区   凤阳街道
25   广东省 广州市   天河区   石牌街道
26   广东省 广州市   天河区   猎德街道

转载于:https://my.oschina.net/u/3093769/blog/1142709

### 使用R语言调用高德API根据经纬度获取行政区域信息 为了在R语言中实现这一功能,可以利用`httr`包发送HTTP请求并处理返回的数据。下面展示了一个具体的例子,该实例说明了如何构建URL、设置参数以及解析JSON响应。 #### 安装必要的库 如果尚未安装所需的软件包,则需先执行如下命令: ```r install.packages("httr") install.packages("jsonlite") ``` #### 构建函数查询行政区划名称 创建一个名为`getDistrictByLocation`的函数用于接收经度(`longitude`)和纬度(`latitude`)作为输入参数,并返回相应的区县级别的地理编码结果。 ```r library(httr) library(jsonlite) getDistrictByLocation <- function(longitude, latitude){ apiKey <- "your_api_key_here" # 用户自己的key替换此处 url <- paste0('https://restapi.amap.com/v3/geocode/regeo?output=json&location=', longitude, ',', latitude,'&key=',apiKey) response <- GET(url) content <- fromJSON(content(response,type="text"), simplifyVector=TRUE)$regeocode.addressComponent.district return(content) } ``` 此代码片段定义了一个接受两个浮点数(表示地理位置坐标)作为参数的方法,并通过GET方法向指定端点发起网络请求[^1]。注意这里的URL路径使用的是反向地理编码服务接口 `/v3/geocode/regeo` 而不是正向地理编码接口 `v3/geocode/geo` ,因为后者主要用于地址到坐标的转换而前者正好相反[^2]。 #### 测试函数 现在可以用实际的位置数据测试上述编写的函数: ```r districtInfo <- getDistrictByLocation(116.481499, 39.990475) print(districtInfo) ``` 这段脚本将会打印出给定位置所处的具体区县名。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值