将加拿大邮政编码转换为经度和纬度

时间:2021-03-05 03:24:51

标签: r geolocation geospatial geocoding latitude-longitude

我有一个包含 100 个加拿大邮政编码的列表(例如 M4B 1C7)。无论如何将这些邮政编码转换为近似的经度和纬度值?目前,我正在使用以下网站手动执行此操作:https://geocoder.ca/

在 R 中有没有更快的方法来做到这一点?我遇到了 the tidygeocoder package ,但我不确定这是否适用于加拿大邮政编码。

1 个答案:

答案 0 :(得分:0)

正如上面@Dave2e 所指出的,数据可以下载 here,但您必须注册并同意使用条款(基本上,您不能重新分发数据或违反任何其他法律:为了方便起见,我在下面引用了它们)。邮政编码数据无法更方便地获取似乎很奇怪,但显然其知识产权状态存在争议 - 加拿大邮政出售对数据库的访问权限。

此解决方案在未来可能不可靠:我之前曾使用其他来源获取此数据,但后来这些数据从网络上消失了。这些文件截至 2021 年 4 月 18 日可用。

下载并解压 CSV 文件后,操作非常简单。

library(tidyverse)
cc <- (read_csv("CanadianPostalCodes202104.csv")
 ## if all you want is lat/long: file also includes city, province abbreviation,
 ## time zone - maybe useful for troubleshooting/proofreading
   %>% select(POSTAL_CODE, LATITUDE, LONGITUDE)
   %>% rename(postcode="POSTAL_CODE", lat="LATITUDE", lon="LONGITUDE")
)
mydata <- tibble(postcode=c("M4B 1C7","L8P 2V7"))
mydata_aug <- left_join(mydata, cc, by="postcode")
##   postcode   lat   lon
## 1 M4B 1C7   43.7 -79.3
## 2 L8P 2V7   43.2 -79.9

位置的图片(如果我费心将其放入具有省份边界等的适当空间背景中,这会更漂亮):我不确定显然位于省界以南的十几个位置是怎么回事加美边境。例如,这个数据库显然认为 Stouffville ON 位于 44.8°N 93.3°W,根据谷歌地图,它位于美国明尼苏达州西布卢明顿的中部:它实际上位于 43°58'N 79°15'W 根据到维基百科...

map of Canadian postcodes

使用条款(部分):

<块引用>

您不得(也不允许任何第三方)转售、将 Zip 文件合并到任何产品或服务中、复制、分发、出售、披露、出借、转让、传送、修改、反编译、反汇编或反向工程 Zip为任何目的归档。

<块引用>

在任何情况下,您都不得:(i) 使用 Zip File 中的信息构建数据库以供转售或供与服务对象直接竞争的第三方访问; (ii) 允许以任何方式使用来自 Zip File 的信息来验证来自与服务对象直接竞争的转售数据的第三方的信息; (iii) 将 Zip File 的访问权限或信息提供给与服务对象直接竞争的转售数据的第三方或计划转售给其他第三方的第三方访问 Zip File 或从 Zip File 获得的信息。

<块引用>

您同意严格遵守与您使用 Zip 文件有关的所有适用法律和法规。