跳转到主要内容

用于与Tilesets API交互和准备数据的命令行界面

项目描述

tilesets-cli

Build Status codecov

用于与Mapbox瓦片服务交互和准备数据的命令行界面。

📚 如果这里没有回答您的问题,请参阅完整的Mapbox瓦片服务文档

贡献

CONTRIBUTING.md 包含有关发布流程和运行测试的信息。 :raised_hands

安装

需求

基本安装

pip install mapbox-tilesets 将安装除 estimate-area 之外的所有内容。

安装可选的 estimate-area 命令

如果您使用的是x86 Mac或Linux机器,请运行: pip install 'mapbox-tilesets[estimate-area]'

否则,您需要安装一些依赖项。

arm64 MacOS

如果您在arm64 Mac(例如,带有M1芯片的Mac)上,您首先需要安装 GDAL。在Mac上,一种简单的方法是使用 Homebrew

$ brew install gdal
...
$ pip install 'mapbox-tilesets[estimate-area]'

Windows

注意,目前不官方支持Windows。

Windows用户需要安装 GDALrasterio。然后 pip install 'mapbox-tilesets[estimate-area]'

Mapbox访问令牌

为了使用瓦片集端点,您需要一个包含tilesets:writetilesets:readtilesets:list权限的Mapbox访问令牌。这是一个秘密令牌,因此请不要公开分享!

您可以通过--token标志将Mapbox访问令牌传递给每个命令,或者将其作为环境变量导出。可接受的值有:

  • MAPBOX_ACCESS_TOKEN
  • MapboxAccessToken

使用export设置环境变量

export MAPBOX_ACCESS_TOKEN=my.token

命令

upload-source

tilesets upload-source <username> <source_id> <file>

将GeoJSON文件上传到源以进行瓦片处理。接受行分隔的GeoJSON或GeoJSON要素集合作为文件或通过stdin。CLI在上传前自动将数据转换为行分隔的GeoJSON。可以使用它向源添加数据或使用--replace标志替换源中的所有数据。

请注意,如果您的源数据是FeatureCollection,则tilesets必须在将其上传到Tilesets API之前将其全部读入内存,并将其拆分为单独的要素。强烈建议您提供行分隔的GeoJSON格式的数据,尤其是如果它很大。

注意:对于上传时间非常长的较大文件,请尝试使用--no-validation标志。

标志

  • --no-validation [可选]: 在上传前不验证源数据
  • --replace [可选]: 删除所有现有源数据并用文件中的数据替换
  • --quiet [可选]: 不显示上传进度条

用法

# single file
tilesets upload-source <username> <source_id> ./file.geojson

# multiple files
tilesets upload-source <username> <source_id> file-1.geojson file-4.geojson

# directory of files
# Reading from a directory will not distinguish between GeoJSON files and non GeoJSON files. All source files will be run through our validator unless you pass the `--no-validation` flag.
tilesets upload-source <username> <source_id> ./path/to/multiple/files/

upload-raster-source

tilesets upload-raster-source <username> <source_id> <file>

将光栅文件上传到源以进行瓦片处理。目前接受GeoTIFF、NetCDF和GRIB格式。可以使用它向源添加数据或使用--replace标志替换源中的所有数据。

有关支持的格式和使用光栅源的信息,请参阅此处

标志

  • --replace [可选]: 删除所有现有源数据并用文件中的数据替换
  • --quiet [可选]: 不显示上传进度条

用法

# single file
tilesets upload-raster-source <username> <source_id> ./file.tif

# multiple files
tilesets upload-raster-source <username> <source_id> file-1.tif file-4.tif

已弃用 add-source

警告:add-source仅用于维护旧版目的。请改用upload-source命令。

tilesets add-source <username> <source_id> <file>

将GeoJSON文件添加到源以进行瓦片处理。接受行分隔的GeoJSON或GeoJSON要素集合作为文件或通过stdin。CLI在上传前自动将数据转换为行分隔的GeoJSON。

请注意,如果您的源数据是FeatureCollection,则tilesets必须在将其上传到Tilesets API之前将其全部读入内存,并将其拆分为单独的要素。强烈建议您提供行分隔的GeoJSON格式的数据,尤其是如果它很大。

标志

  • --no-validation [可选]: 在上传前不验证源数据
  • --quiet [可选]: 不显示上传进度条

用法

# single file
tilesets add-source <username> <source_id> ./file.geojson

# multiple files
tilesets add-source <username> <source_id> file-1.geojson file-4.geojson

# directory of files
# Reading from a directory will not distinguish between GeoJSON files and non GeoJSON files. All source files will be run through our validator unless you pass the `--no-validation` flag.
tilesets add-source <username> <source_id> ./path/to/multiple/files/

validate-source

tilesets validate-source <path>

在本地验证行分隔的GeoJSON源文件。示例错误输出

Invalid line delimited geojson.

view-source

tilesets view-source <username> <source_id>

获取瓦片集来源的信息,例如文件数量、字节数和mapbox://协议格式中的ID。

list-sources

tilesets list-sources <username>

列出特定账户的所有瓦片集来源。响应是来源数组。

delete-source

tilesets delete-source <username> <source_id>

永久删除瓦片集来源及其所有文件。这是一个不可恢复的操作!

标志

  • -f--force:在删除前不要求确认

用法

# to delete mapbox://tileset-source/user/source_id
tilesets delete-source user source_id

estimate-area

tilesets estimate-area <features> -p/--precision <precision>

估计具有指定精度的要素的瓦片面积(平方公里)。接受行分隔的GeoJSON或GeoJSON要素集合作为文件或通过stdin或字符串编码的坐标对列表,格式为"[lng, lat]"、"lng, lat"或"lng lat"。精度必须是10m、1m、30cm或1cm。

标志

  • -p--precision [必需]: 精度级别
  • --no-validation [可选]: 在面积计算之前不本地验证源数据
  • --force-1cm [可选]: --force-1cm标志必须存在才能启用1cm精度面积计算,并且对于大型要素输入或具有全球范围的较大数据可能需要更长的时间。仅通过联系Mapbox支持后才能在瓦片集处理中使用1cm精度。

用法

# GeoJSON feature files
tilesets estimate-area ./file1.geojson ./file2.geojson -p <precision>

# GeoJSON features in stdin redirection 1
tilesets estimate-area -p <precision> < ./file.geojson

# GeoJSON features in stdin redirection 2
cat ./file.geojson | tilesets estimate-area -p <precision>

# GeoJSON features in stdin stream
tilesets estimate-area --precision <precision>
<features>

# coordinate pairs (must be in quotes)
tilesets estimate-area "[lng,lat]" "[lng,lat]" --precision <precision>

view-recipe

将配方JSON打印到标准输出。

tilesets view-recipe <tileset_id>

validate-recipe

验证配方JSON文档。

tilesets validate-recipe /path/to/recipe.json

示例 recipe.json

{
  "version": 1,
  "layers": {
    "trees": {
      "source": "mapbox://tileset-source/{username}/trees-data",
      "minzoom": 4,
      "maxzoom": 8
    }
  }
}

有关配方规范的更多详细信息,请参阅此处。有关配方示例,请参阅此处

示例错误输出

{
  "errors": [
    "Unknown top-level key \"potato\"."
  ],
  "valid": false
}

update-recipe

更新瓦片集的配方JSON。对新文档执行服务器端验证。

此命令仅支持使用Mapbox瓦片服务创建的瓦片集。

tilesets update-recipe <tileset_id> /path/to/recipe.json

create

使用来自本地文件系统的配方创建全新的空瓦片集。

tilesets create <tileset_id> --recipe /path/to/recipe.json --name "My neat tileset"

tileset_id的格式为username.handle - 例如 "mapbox.neat-tileset"。处理符只能包含"-"或"_"特殊字符,且长度不能超过32个字符。

标志

  • --recipe-r [必填项]: 配方JSON文档的路径
  • --name-n [必填项]: 瓦片集的可读名称。(如果你的瓦片集ID是user.my_amazing_tileset,你可能希望name字段是"My Amazing Tileset"。)
  • --description-d: 瓦片集的描述
  • --privacy-p: 设置瓦片集的隐私。允许的值是privatepublic。默认情况下,新瓦片集是私有的。
  • --attribution-a [可选项]: 设置瓦片集归属。必须是JSON字符串,具体是一个具有textlink键的归属对象数组。限制为三个归属对象,所有文本值的总长度不超过80个字符,所有链接值的总长度不超过1000个字符。

publish

使用提供的配方排队瓦片化作业。用于发布新的瓦片集或更新现有的瓦片集。返回作业ID以跟踪进度。

此命令仅支持使用Mapbox瓦片服务创建的瓦片集。

tilesets publish <tileset_id>

update

更新瓦片集信息。

tilesets update <tileset_id>
  --name "Hello World"
  --description "Say hi to the world"
  --privacy=private
  --attribution='[{"text":"© Hola Mundo","link":"http://example.com"}]'

标志

  • --name-n [可选项]: 更新瓦片集名称
  • --description-d [可选项]: 更新瓦片集描述
  • --privacy-p [可选项]: 将瓦片集设置为publicprivate
  • --attribution-a [可选项]: 设置瓦片集归属。必须是JSON字符串,具体是一个具有textlink键的归属对象数组。限制为三个归属对象,所有文本值的总长度不超过80个字符,所有链接值的总长度不超过1000个字符。

delete

删除瓦片集。默认情况下将在删除前提示您进行确认。

tilesets delete <tileset_id>

标志

  • --force-f跳过确认提示。

status

查看瓦片集最近作业的状态。要获取有关瓦片集作业的更多详细信息,包括失败和成功作业的时间戳,请使用tilesets jobs <tileset_id>命令。

tilesets status <tileset_id>

job

检索瓦片集的单个作业。

此命令仅支持使用Mapbox瓦片服务创建的瓦片集。

tilesets job <tileset_id> <job_id>

什么是作业?每次您通过publish命令(无论是新配方还是新源数据)生成或重新生成输出瓦片集时,都会创建一个处理您的数据的单个作业。瓦片集可以有许多作业,每个作业都有一个唯一的标识符。当您发布瓦片集时,HTTP响应包括与最近作业对应的唯一作业标识符。有关HTTP设计的更多信息,请参阅此文档

jobs

检查与瓦片集关联的所有作业。您可以通过特定的阶段(处理、排队、成功或失败)过滤作业。

此命令仅支持使用Mapbox瓦片服务创建的瓦片集。

tilesets jobs <tileset_id> --stage=processing

标志

  • --stage [可选项]: 通过作业的阶段进行过滤
  • --limit [1-500] [可选项]: 返回的最大结果数,从1到500。默认为100。

list

列出帐户的所有瓦片集。默认情况下只列出瓦片集ID。使用--verbose选项获取更多信息。

tilesets list <username>

标志

  • --type [vector|raster|rasterarray] [可选项]: 通过瓦片集类型进行过滤
  • --visibility [public|private] [可选项]: 通过可见性进行过滤
  • --sortby [created|modified] [可选项]: 按其createdmodified时间戳对结果进行排序
  • --limit [1-500] [可选项]: 返回的最大结果数,从1到500。默认为100。
  • --verbose [可选项]: 将列出API的整个响应对象

tilejson

查看瓦片集的TileJSON。 tileset_id 可以是逗号分隔的最多15个瓦片集ID,用于组合请求。

根据 规范,TileJSON文档试图为表示多种基于Web的图层元数据创建一个标准,以帮助客户端进行配置和浏览。

tilesets tilejson <tileset_id>

标志

  • --secure:默认情况下,检索到的TileJSON(如“tiles”数组中的)将使用HTTP方案。在请求中包含此查询参数,以接收HTTPS资源URL。

list-activity

列出过去30天内用户瓦片集的总请求次数。如果有超过返回限制的结果,则返回分页键next,可以作为start参数传递给另一个命令。

tilesets list-activity <account>

标志

  • --sortby [requests|modified] [可选]:排序键(默认:requests)
  • --orderby [asc|desc] [可选]:排序键(默认:desc)
  • --limit [1-500] [可选]:返回的最大结果数(默认:100)
  • --indent [可选]:JSON输出的缩进大小。
  • --start [可选]:从响应中的next值获取的分页键,该响应有超过限制的结果。

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。

源分布

mapbox_tilesets-1.11.1.tar.gz (28.5 kB 查看哈希)

上传时间

构建分布

mapbox_tilesets-1.11.1-py3-none-any.whl (16.8 kB 查看哈希)

上传时间 Python 3

由以下支持