这次暗淡(打开数据包管理器)我想介绍一个随 v1.0 发布而开发的工具。
 
据说开放数据应该像npm install xxxxx这样的包管理器(apt、npm、gem、pip等)一样安装和管理。

  • 以前的版本见下文
    【个人开发】一个转包管理器思路做开放数据管理工具的故事

  • 如果您阅读了上一篇文章并想了解从 v1.0 开始的更改
    暗淡 v1.0 变化

我想停止以混乱的方式管理开放数据

正在建立各种系统化的方法来管理软件和库。对于软件,有 apt 和 brew,对于库,每种语言都有 npm 和 gems。但是,据我所知,数据似乎不存在。

如果您被分配使用某种开放数据在地图上进行可视化的任务,您将如何准备数据?

以下流程是一个常见示例。

  1. 从谷歌搜索你想要的数据
  2. 找到所需数据后,从浏览器下载
  3. 检查数据是否不完整或不是您想要的数据1还给
  4. 处理开放数据以供使用(字符代码转换、格式转换)
  5. 将打开的数据存储在项目目录或数据库中

    如果你只是暂时使用它,这可能就足够了,但是在以下项目的情况下保留与开放数据相关的规范(与数据本身相关的信息等)我想要

    • 多人开发的项目
    • 中长期维护项目
    • 多功能项目(作为 OSS 等发布在 GitHub 上)
      这样的

    使用开放数据时认为必要的规范(有关数据本身的信息等)

    从各种站点获取开放数据并进行处理等时,数据从何而来是吗做了什么样的处理我们认为保留此类规范会更方便,因为有些情况不清楚。

    • 从中检索数据的 URL
    • 上次修改的数据
    • 数据版本
    • 使用数据所需的后处理(字符代码转换等处理时)
    • 数据哈希值
      这样的

    此外,如果您与多人一起开发,系统地管理和共享规范它被认为是必要的。

    解决方法

    也开放数据包管理器(apt、npm、gem、pip 等)
    npm install xxxxx
    您可以以如下形式安装开放数据
    package.json
    package-lock.json
    我想这样管理已安装数据的规格信息会很方便,所以我开发了一个开放数据包管理器。

    发布的工具

    它可以在命令行上执行。
    そろそろオープンデータを無秩序に管理するのは卒業したいので?データを管理するパッケージマネージャを開発した【ツール開発】
    * gif 视频为低于 v1.0 的版本,显示等可能会有所不同。

    特征

    (1) 支持一系列数据搜索/采集/处理/记录流程

    dim 支持数据检索/采集/处理/记录功能。它还支持使用交互式命令通过单个命令执行一系列操作的能力。

    そろそろオープンデータを無秩序に管理するのは卒業したいので?データを管理するパッケージマネージャを開発した【ツール開発】

    (2) 配备方便的数据处理,便于数据利用

    dim 配备了处理开放数据时常用的处理。
    执行的处理可以链接到目标数据,进行记录和再现。此外,还可以将自己创建的脚本注册为暗淡的录制目标。
    そろそろオープンデータを無秩序に管理するのは卒業したいので?データを管理するパッケージマネージャを開発した【ツール開発】

    (3) 从现有的数据规范文件中一步准备好数据

    通过使用已记录的数据规范文件,可以一步准备数据。
    基于数据规范文件,可以自动下载必要的文件并执行相应的处理。
    作为一种用途,您可以通过在 GitHub 上发布数据规范文件来共享必要的信息,而无需在存储库中包含开放的数据主体。
    (这与将 package.json 等发布到 GitHub 相同)
    そろそろオープンデータを無秩序に管理するのは卒業したいので?データを管理するパッケージマネージャを開発した【ツール開発】

    关于开发环境

    • 语言:打字稿
    • 执行环境:Deno
    • 主 Deno 库
      • Cliffy - 用于构建命令行工具的库
    • CI/CD:GitHub 操作
      • CI:测试、棉绒、类型检查、覆盖率
      • CD:通过剪切标签自动发布版本,创建和上传昏暗二进制文件

    有望替代 Node.js使用。 Deno 版本升级很快,规格也会发生剧烈变化。此外,Deno 本身及其外围库还不够成熟,因此有很多东西卡在了细节上。

    但是,这一次,我们评估了以下内容并采用了 Deno。

    • 简单的设置和易于启动的项目
    • Lint 和格式化程序作为标准功能提供
    • TypeScript 可以按原样执行
      这样的

    安装昏暗

    为每个操作系统提供二进制文件。你可以用 curl 下载它。
    请相应地更改保存目的地。

    aarch64-苹果-达尔文

    curl -L https://github.com/c-3lab/dim/releases/latest/download/aarch64-apple-darwin-dim -o /usr/local/bin/dim
    

    x86_64-苹果-达尔文

    curl -L https://github.com/c-3lab/dim/releases/latest/download/x86_64-apple-darwin-dim -o /usr/local/bin/dim
    

    x86_64-pc-windows-msvc

    curl https://github.com/c-3lab/dim/releases/latest/download/x86_64-pc-windows-msvc-dim.exe -o C:Usersuser-namedim.exe
    

    x86_64-unknown-linux-gnu

    curl -L https://github.com/c-3lab/dim/releases/latest/download/x86_64-unknown-linux-gnu-dim -o /usr/local/bin/dim
    

    如何使用暗淡

    初始化项目

    初始化项目以使用 dim 时会生成必要的文件。

    dim init
    

    生成的文件有:

    • dim.json(相当于package.json)
    • dim-lock.json(相当于 package-lock.json)
    • data_files(相当于node_modules)

    数据安装

    安装后会记录到dim.jsondim-lock.json

    $ dim install [open data url] -n [name]
    

    下载后解压安装

    $ dim install https://example.com -n "example" -p unzip
    

    下载后对字符代码进行编码的安装

    指定编码后要编码的字符代码

    $ dim install https://example.com -n "example" -p "encode utf-8"
    

    下载后安装以从 xlsx 转换为 csv

    $ dim install https://example.com -n "example" -p xlsx-to-csv
    

    从 dim.json 安装所有必需的数据

    $ dim install
    

    如果存在现有的 dim.json,则根据其内容,它将下载必要的数据并执行包括预处理在内的所有操作。因此,如果您将 dim.json 与其他成员共享,则可以一击准备数据。
    そろそろオープンデータを無秩序に管理するのは卒業したいので?データを管理するパッケージマネージャを開発した【ツール開発】
    * gif 视频为低于 v1.0 的版本,显示等可能会有所不同。

    其他命令

    之前的文章和最新的资料都在仓库的使用中列出来了。

    v1.0 的变化

    1.搜索功能

    我们基于我们希望从搜索数据的第一阶段支持的想法实现了搜索功能。打开数据搜索数据目录交叉检索系统它是通过API实现的
    通过将搜索关键字作为参数传递,您可以在列表中获取搜索结果数据中的元数据。

    $ dim search 避難所
    

    2.执行交互命令search-get-process-record

    实现了一个命令,允许您以交互方式输入一系列搜索-获取-过程-记录过程执行。

    $ dim search -i "東京 避難所"
    

    运行它时,您可以获得如下所示的开放数据搜索结果列表。然后会以交互方式提示您输入信息,如下所示:

    132098_東京都_町田市_公園・スポーツ施設
      - Catalog URL        : https://www.geospatial.jp/ckan/dataset/13209-014
      - Catalog Description: ####公園・スポーツ施設のデータです。...
      - Catalog License    : クリエイティブ・コモンズ 表示
        1. スポーツ施設
          * Resource URL        : https://www.geospatial.jp/ckan/dataset/c6ff6e51-e213-4a55-8b19-c363fe7ead5d/resource/fd2e2728-c9ad-4139-ab9b-44020e690fe4/download/13209sportshisetsu.csv
          * Resource Description: ####スポーツ施設...
          * Created             : 2018-02-01T09:53:23.816309
          * Format              : CSV
        2. 公園・レクリエーション施設
          * Resource URL        : https://www.geospatial.jp/ckan/dataset/c6ff6e51-e213-4a55-8b19-c363fe7ead5d/resource/9bfc87de-1ff4-4d1a-92b5-12fd4b759336/download/13209kouen.csv
          * Resource Description: ####公園・レクリエーション施設...
          * Created             : 2018-02-01T09:53:25.679611
          * Format              : CSV
    
    131091_東京都_品川区_文化・スポーツ施設・公園
      - Catalog URL        : https://www.geospatial.jp/ckan/dataset/13109-104
      - Catalog Description: ####東京都品川区のオープンデータです。...
      - Catalog License    : クリエイティブ・コモンズ 表示
        3. 文化・スポーツ施設・公園
          * Resource URL        : https://www.geospatial.jp/ckan/dataset/f05a8fce-3a3d-4c2e-8e1d-1a66211219e5/resource/55619dbb-5c8a-4bbd-92a3-4ee28547b928/download/culturesportspark.csv
          * Resource Description: ####更新日:2017/7/31
          * Created             : 2018-03-15T08:54:40.133147
          * Format              : CSV
        4. 文化・スポーツ施設・公園
          * Resource URL        : https://www.geospatial.jp/ckan/dataset/f05a8fce-3a3d-4c2e-8e1d-1a66211219e5/resource/c494eb2f-be74-49ba-afc5-0c2760afa1a5/download/culturesportspark.rdf
          * Resource Description: ####更新日:2017/7/31
          * Created             : 2018-03-15T08:54:41.909045
          * Format              : RDF
    

    (1) 输入您要下载的数据的搜索结果中写的数字

    ? Enter the number of data to install > 1
    

    (2)输入数据名称进行录制(默认输入从搜索结果中获取的资源名称)

    ? Enter the name. Enter blank if want to use CKAN resource name. > 
    

    (3) 进入后处理

    ? Enter the post-processing you wish to add. Enter blank if not required. > xlsx-to-csv
    

    (4)如果要添加后处理输入Y,否则输入n

    ? Is there a post-processing you would like to add next? (Y/n) > No
    

    根据您的输入检索、后处理和记录数据。

    Convert xlsx to csv.
    Installed to .......
    

    3.通过指定存在于另一个目录中的dim.json来安装

    使用 install 命令一次性安装数据时,默认引用当前目录中的dim.json。如果要在其他目录中引用dim.json进行安装,可以用-f指定。

    $ dim install -f ./path/dim.json
    

    4.通过指定互联网上存在的dim.json的URL进行安装

    还添加了通过指定 Internet 上存在的dim.json 来执行批量安装的功能。如果有人在 GitHub 等上以dim.json 发布了一组开放数据,则可以通过 URL 引用它。

    $ dim install -f https://raw.githubusercontent.com/xxxx/xxxx/main/dim.json
    

    5. 安装头

    现在可以在安装期间指定 HTTP 标头。还可以支持对由标头进行身份验证的基础设施的访问。标头中指定的内容也记录在dim.jsondim-lock.json中。

    $ dim install https://example.com -n "example" -H "Authorization: 1234567890abc" -H "Fiware-Service: example"
    

    6.禁止同URL安装和强制安装功能

    基本上,一旦安装,对于dim.json中描述的开放数据(相同的URL),禁止再次安装。这是因为我们认为在未通知提供者的情况下更改开放数据时,应用程序等中可能会出现意外错误。未来,我们计划实现一个功能,通过比较数据哈希值和电子标签来检测变化。
    但是,在某些情况下您想要有意更新数据,因此我们准备了一种方法来避免此限制,即使用-F。或者,您可以使用 update 命令更新数据。

    $ dim install https://example.com -n "example" -F
    

    7.异步安装

    在默认安装中,它们是按照 dim.json 中写的顺序执行的。可以使用-A 异步安装数据。它是由 Deno 的 async(单线程异步处理)实现的。

    dim install -A
    

    概括

    我们已经发布了开放数据包管理器 dim v1.0 版本,它像包管理器一样管理开放数据。支持搜索功能和从互联网上的管理文件(dim.json)中获取数据。
    还有很多我想添加的功能。问题只是在堆积。如果有人能体谅问题,一起解决问题,我们将非常欢迎。


原创声明:本文系作者授权爱码网发表,未经许可,不得转载;

原文地址:https://www.likecs.com/show-308627933.html

相关文章:

  • 2021-10-10
  • 2021-11-11
  • 2021-12-10
  • 2021-11-30
猜你喜欢
  • 2021-10-26
  • 2021-11-26
  • 2021-11-04
  • 2020-04-09
  • 2021-12-09
  • 2021-10-12
  • 2021-11-05
相关资源
相似解决方案