【问题标题】:Parse geojson files with C用 C 解析 geojson 文件
【发布时间】:2021-10-30 07:16:33
【问题描述】:

我找不到任何简单的 C 源文件或库来解析 geojson 文件(实现 rfc7946 标准)。

也许这样的解析器存在于像 GRASS 或 GDAL 这样的项目中?但是我在 C 库的世界中导航仍然有点麻烦。

一些曲目?

【问题讨论】:

  • 你总是可以编写自己的解析器
  • 您所指的 JSON 似乎没有什么特别之处。为什么需要特殊的解析器?
  • @h0r53 我同意这一点,我也问这个问题,知道我是否会重新发明轮子。但是这样做会很酷
  • @AndrewHenle 需要一些键,区分大小写和其他东西。我猜 JSON 解析器没有实现这些检查。
  • @ce.teuf 如果 GeoJSON 是 JSON 的严格子集,那么任何 JSON 解析器都可以解析它。您只需添加对 GeoJSON 规范之外的对象的检查。这比从零开始创建 JSON 解析器要容易得多。

标签: c gis geojson gdal grass


【解决方案1】:

我终于开始了。

我正在写一个基于json-parsersmall library,它可以说明解析的json 是否是有效的geojson。 (根据标准 7946)。

这显然是初稿,还有很多工作。

我是 C 的初学者,所以如果您有任何建议或 cmet,我显然很感兴趣。

【讨论】:

    【解决方案2】:

    GeoJSON 是 JSON 格式,因此您可以使用 JSON 解析器。有几个:

    https://github.com/search?l=C&q=json+parser&type=Repositories

    你应该自己添加支票和其他东西。

    如果你需要某种数据的表示,你可以自己写。 Mapbox 写了一个C++ version of GeoJSON parser 用于将GeoJSON 转换为基于RapidJSON 的geometry.hpp 表示,代码不到1k 行。

    可以在inside SpatiaLite 找到用 C 语言实现 GeoJSON 的 standard-compliant (RFC 7946),但使用典型的 JSON 解析器可能更容易。如果你想使用这个库,你可以看看virtualgeojson.c

    【讨论】:

      【解决方案3】:

      如果您想做基本的几何操作,Ho1 的答案是完美的。对于高级的东西(你不想重新发明),你可以考虑使用geos的CAPI。

      请注意,CAPI GeoJSON 编写器是相当新的,不幸的是文档不是最新的。这是包含这些更改的头文件:https://github.com/libgeos/geos/blob/main/capi/geos_c.h.in

      【讨论】:

      • 谢谢!我将通过尝试实施标准制定的限制来练习。但我把你建议的包裹放在手边。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-28
      • 2016-08-25
      • 2017-08-02
      • 1970-01-01
      • 2013-11-28
      • 1970-01-01
      • 2021-03-27
      相关资源
      最近更新 更多