#csv #geocoding #column #file #bulk #smarty #city

app geocode-csv

使用 Smarty API 或 libpostal 批量地理编码 CSV 数据的 CLI 工具

23 个版本 (稳定)

1.4.0 2024 年 3 月 26 日
1.3.12 2023 年 8 月 26 日
1.3.7 2023 年 5 月 22 日
1.3.0 2022 年 6 月 29 日
0.2.0 2019 年 11 月 19 日

#23 in 地理空间

Download history 68/week @ 2024-07-22

每月 68 次下载

Apache-2.0 OR MIT

160KB
3.5K SLoC

geocode-csv: 使用 libpostal 或 Smarty API 地理编码 CSV 文件

(本项目与 Smarty 无关。)

警告:此项目每秒可以地理编码数千行的 CSV 文件,这可能会迅速消耗您的 Smarty 配额。 这可能需要您支付费用。

如果您有一个如下所示的 CSV 文件

name,street1,street2,city,state,zip
Resident,1600 Pennsylvania Avenue NW,,Washington DC,20500

一个 address_spec.json 文件,其内容如下

{
  "geocoded": {
    "street": ["street1", "street2"],
    "city": "city",
    "state": "state",
    "zipcode": "zip"
  }
}

...则可以使用以下命令进行地理编码

# Set up credentials.
export SMARTY_AUTH_ID=...
export SMARTY_AUTH_TOKEN=...

# Geocode the CSV.
geocode-csv --spec address_spec.json < in.csv > out.csv

这将添加一系列以 geocoded_ 开头的列,这些列将包含各种邮政投递信息,以及估计的经纬度。如果地理编码成功,geocode-csv 将返回 0。如果失败,它将返回一个非零错误代码并将可读的错误信息打印到标准错误。

您可以在每行中地理编码多个地址,如下所示

{
  "geocoded_shipping": {
    /* ... */
  },
  "geocoded_billing": {
    /* ... */
  }
}

这将插入两套列,一套以 geocoded_shipping_ 开头,另一套以 geocoded_billing_ 开头。

构建

您需要运行

git submodule update --init

...以拉取 libpostal 的 C++ 源代码。

您还需要安装 protoc

# Linux.
sudo apt install protobuf-compiler

# Mac.
brew install protobuf

关于 Mac 的说明

我们为基于 Intel 和 M1 的 Mac 提供预构建的二进制文件。这些二进制文件使用 "ad-hoc" 签名,因此您可能需要设置适当的安全设置或运行

xattr -d com.apple.quarantine geocode-csv

依赖关系

~92MB
~1.5M SLoC