cover image
< 主页
Web

使用 GraphQL 查询世界概况

美国政府出版的《世界概况》包含了世界上所有国家的大量事实。到目前为止,要查询和可视化其中包含的数据并不容易。开源项目 "chi-country-facts "是世界概况手册的 GraphQL API 和图形用户界面。我想在本文中介绍一下它。

世界概况

世界概况是关于世界上所有国家的数据集合。它由美国政府出版,因此带有以美国为中心的偏见。但它包含了大量同质化的数据,便于对全球各国进行比较。因此,它被用作 "Chi-country-facts" 项目的数据基础。

Chi-country-facts

"Chi-country-facts" 依赖于 Gerald Bauer 的 "factbook.json" 项目,该项目解析了《世界概况》的发布网站,并以 JSON 格式提供了易于使用的数据。

chi-country-facts 的堆栈

"Chi-country-facts" 由一个将 JSON 国家数据导入 Mongo 数据库的加载器组成。 它集成了 Apollo GraphQL 服务器,还包含一个用于发送 GraphQL 查询(Apollo Sandbox)的简易图形界面,如下截图所示:

截图 chi-country-facts

使用 "chi-country-facts "的其他可能性是在其基础上构建自定义应用程序,并通过 GraphQL API 查询数据。您也可以直接查询 Mongo 数据库。有许多编程语言的驱动程序可供使用。 但如何在自己的系统上安装应用程序并使用它呢?

安装

要轻松安装 chi-country-facts 的先决条件是你的系统上有 Docker。 由于 chi-country-facts 在 Docker Hub 上发布了一个镜像,你可以使用下面的 docker compose 文件将它与 Mongo 数据库一起运行:

docker-compose.yml

version: '3'
services:
  app:
    image: tderflinger/chi-country-facts:0.3.0
    ports:
      - "4000:4000"
    depends_on:
      - db
    environment:
      - MONGO_URL=mongodb://db:27017/CountryFacts
  db:
    image: mongo:latest
    volumes:
      - mongodb_data:/data/db

volumes:
  mongodb_data: 

注意,请将映像版本号调整为最新版本。你可以在 Docker Hub 上找到这些信息。一旦你在文件系统中安装了 docker-compose.yml,运行它:

docker compose up

然后,你可以浏览到 http://localhost:4000 并在一个易于使用的界面中指定 GraphQL 查询。

GraphQL 查询

一旦你进入 Apollo GraphQL 沙箱,你就可以在主编辑器中指定 GraphQL 查询。如果不想手动输入查询,可以轻松点击左侧要查询的项目。完成查询后,点击 "运行 "按钮,右侧会显示结果。如果出现错误,沙箱会告诉您需要修改的地方。 例如,可以输入以下有效查询:

query WorldFactsQuery {
  country {
    name
    economy {
      agriculturalProducts
      budgetRevenues
    }
    geography {
      areaLand
      mapReferences
    }
  }
}

属性 "mapReferences" 是大洲(如非洲、欧洲等)。其他属性通常是标准化的,例如,"budgetRevenues" 属性是以美元为单位的金额。 运行查询后,您应该会在屏幕右侧看到响应。您可以在 JSON 和表格视图之间切换。

下一步是导出结果,以便进一步处理。

导出结果

在 "Response" 面板顶部,你可以选择以 CSV 或 JSON 格式导出结果数据。这两种格式都非常适合进一步处理。在我们的案例中,我们更喜欢 CSV 格式,因为我们最喜欢的数据分析工具可以轻松地支持它。

数据分析

有大量的工具可以分析 CSV 格式的数据。一个流行的开源工具是 Pandas。你可以在大多数系统上安装它,并与 Python 编程语言一起使用。

数据可视化

使用 Pandas,你还可以做一些数据可视化,例如在 Matplotlib 中。网上有很多关于 Pandas 和 Matplotlib 的教程。 在网上进行交互式可视化的一个好方法是使用 D3.js 创建图表。D3.js是一个JavaScript库,可以更方便地创建高级交互式图表,如条形图、饼图、树状图和许多其他类型的图表。 Visual World Facts页面上的图表就是用D3.js创建的。Visual World Facts是一个从 "chi-country-facts "发展而来的网站。在那里,我使用所查询的数据制作了交互式树状图,展示了世界各国之间有趣的关系。 如果你感兴趣,可以去看看。

结论

在当今的互联网上,存在着许多有关世界的巨大开放数据源。保持好奇心非常重要。通过我开发的工具,我希望你能更轻松地从丰富的数据中获得新的见解。

参考资料

已出版

8 6月 2024

Thomas Derflinger

作者:托马斯-德弗林格

我是一名富有远见的企业家和软件开发人员。在这个博客中,我主要写网络编程和物联网等相关主题