以三亚市为例获取各区的经纬度信息
#从excel中读取地址并生成经纬度信息
# 安装并加载必要的包
if (!requireNamespace("readxl", quietly = TRUE)) {
install.packages("readxl")
}
if (!requireNamespace("httr", quietly = TRUE)) {
install.packages("httr")
}
if (!requireNamespace("dplyr", quietly = TRUE)) {
install.packages("dplyr")
}
library(readxl)
library(httr)
library(dplyr)
# 你的高德地图API密钥
API_KEY <- "自己在高德中可以申请API" #文章结尾有介绍如何获取API
# 读取Excel文件中的地址信息
# Excel文件名为 "XXXXX.xlsx",地址信息在第一个工作表的第一列
addresses <- read_excel("三亚地址示例.xlsx", sheet = 1)[[1]]
# 存储结果的列表
geocoding_results <- list()
# 发送请求并获取经纬度信息
for (address in addresses) {
encoded_address <- URLencode(address)
url <- paste0("https://restapi.amap.com/v3/geocode/geo?address=", encoded_address, "&key=", API_KEY)
response <- GET(url)
if (status_code(response) == 200) {
result <- content(response, "parsed")
if (result$status == "1" && as.numeric(result$count) > 0) {
location <- result$geocodes[[1]]$location
latitude <- as.numeric(strsplit(location, ",")[[1]][1])
longitude <- as.numeric(strsplit(location, ",")[[1]][2])
geocoding_results <- append(geocoding_results, list(data.frame(address = address, latitude = latitude, longitude = longitude)))
} else {
geocoding_results <- append(geocoding_results, list(data.frame(address = address, latitude = NA, longitude = NA)))
}
} else {
geocoding_results <- append(geocoding_results, list(data.frame(address = address, latitude = NA, longitude = NA)))
}
}
# 合并结果
geocodes_df <- bind_rows(geocoding_results)
# 打印结果
print(geocodes_df)
结果如下:
API获取方法:
-
注册或登录高德地图开发者账号:
-
访问高德地图开放平台官网:高德开放平台 | 高德地图API (https://lbs.amap.com/)
-
如果你还没有账号,点击注册并按照提示完成注册流程。如果已有账号,直接登录。
-
-
创建新应用:
-
登录后,进入控制台页面。
-
在左侧导航栏中找到“应用管理”,然后点击“我的应用”。
-
点击“创建新应用”,填写应用名称和应用类型等信息,然后点击“提交”。
-
-
添加新 Key:
-
在“我的应用”页面中,找到你刚刚创建的应用,点击“添加新Key”。
-
填写 Key 名称,选择服务平台(如 Web 服务),然后点击“提交”。
-
-
获取 API 密钥:
-
创建成功后,你会在应用列表中看到新生成的 API 密钥。
-
复制这个密钥,用于你的代码中。
-