使用 Google 地图 API 使用关键字而不是地址对 R 中的点进行地理编码

问题描述 投票:0回答:1

我有一份新西兰公共建筑列表,我想在

R
中对其进行地理编码,但本身没有地址。

我想使用建筑物的名称而不是地址进行地理编码,因为我没有地址。我正在使用 Google Maps API,但即使阅读了文档,我也无法弄清楚如何使用 tidygeocoder 进行

组件过滤

下面是我想出的片段。我只是使用建筑物的名称作为地址,没有其他任何内容。 ID #1 被地理编码为位于英国,尽管它是新西兰的一座建筑。我的目标是在不触及

name
字段的情况下对其进行地理编码。整个数据集包含超过 1,200 座建筑物。

library(tidygeocoder)
library(tidyverse)
library(mapview)
library(sf)
library(leaflet)

id <- c(1, 2, 3)
name <- c("Winchester School (P North) New Zealand", "Whangarei Hospital New Zealand", "Auckland Prison, Paremoremo Road, Paremoremo, Auckland 0632")
type <- c("School","Hospital","Prison")

df <- data.frame(id, name, type)

example_geo <- df %>% 
  geocode(address=name,
          method="google") %>% 
  arrange(desc(lat)) %>% 
  st_as_sf(coords=c("long", "lat"),
           crs=4326)
r google-maps-api-3 geocoding
1个回答
0
投票

使用
googleway
库的
google_places()
方法

地理编码是将地址(如街道地址)转换为地理坐标(纬度和经度)的过程,您可以使用它在地图上放置标记或定位地图。但一般来说,对完整地址进行地理编码时使用地理编码 API(例如“48 Pirrama Rd, Pyrmont, NSW, Australia”)。如果我们想要对不明确的查询进行地理编码(在您的情况下,只是一个关键字),建议您使用地点自动完成或地点 API 的地点搜索。参考:https://developers.google.com/maps/documentation/geocoding/best-practices

注意:在开始使用 Places API 之前,您需要一个具有计费帐户并启用 Places API 的项目。请参阅在 Cloud Console 中设置了解更多信息。

在您的用例中,我相信地点文本搜索API会满足您的预期结果,并且

googleway
库有这个
google_places()
方法,其中您传入
search_string
参数,它将自动使用文本搜索地点 API。

您应该查看图书馆的文档以了解更多信息。

这里有一个代码示例,简单地展示了您只需使用 R 语言的 Places API 的文本搜索的关键字即可获取位置坐标:

# import library
library(googleway)
# Put your API key here
key <- "YOUR_API_KEY"
set_key(key = key)
google_keys()

google_places(
  # I used one of your sample address here
  search_string = "Winchester School (P North) New Zealand",
  key = key
)

它将返回这个结果:

$results
  business_status
1     OPERATIONAL
                                                  formatted_address
1 552 Ruahine Street, Hokowhitu, Palmerston North 4410, New Zealand
  geometry.location.lat geometry.location.lng geometry.viewport.northeast.lat
1              -40.3602               175.643                       -40.35885
  geometry.viewport.northeast.lng geometry.viewport.southwest.lat
1                        175.6444                       -40.36155
  geometry.viewport.southwest.lng
1                        175.6417
                                                                       icon
1 https://maps.gstatic.com/mapfiles/place_api/icons/v1/png_71/school-71.png
  icon_background_color
1               #7B9EB0
                                                  icon_mask_base_uri
1 https://maps.gstatic.com/mapfiles/place_api/icons/v2/school_pinlet
               name
1 Winchester School
                                                                                                                                                                                                                                                                                  photos
1 2448, <a href="https://maps.google.com/maps/contrib/117948596139985487361">Wajahat Ali</a>, AUacShjlzrLJfN5wAFz_m9XqIrnfq0-Hy9repJXZY_ZNnnfWxaF-k5OFX0D5lkChfAPonl8luXrqkoySaXZ3lTbs4l_VKHDOIERs04tukcYOYmgMaJ0zewGObt6IDvy3GG4tYiK4L6IdJnarftUW2C4QVdAES2WkuNUI0m_DumlTz95z88wV, 3264
                     place_id               plus_code.compound_code
1 ChIJ8xuN-veyQW0RKb1aOg-S0Jg JJQV+W5 Palmerston North, New Zealand
  plus_code.global_code rating                   reference
1           4VFQJJQV+W5      4 ChIJ8xuN-veyQW0RKb1aOg-S0Jg
                                                     types user_ratings_total
1 primary_school, school, point_of_interest, establishment                  8

$status
[1] "OK"

如您所见,它返回新西兰的正确位置地址,并且还为您提供地理编码应返回的纬度和经度坐标。

我希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.