为什么planet_osm_ways表中tags列的数据类型不是JSON格式?

为什么planet_osm_ways表中tags列的数据类型不是JSON格式?,json,postgresql,openstreetmap,Json,Postgresql,Openstreetmap,我一直在处理OSM数据,我使用它导入到postgresql数据库。这在我的postgre数据库中生成了几个表,其中包含一个表planet\u osm\u ways。可以研究行星osm。planet_osm_ways具有以下数据样本: 问题: 上表中的tags列不是JSON格式。将此数据设置为JSON格式是否有用 我相信它在访问标记时会非常有用,例如,如果数据是JSON格式的,“name”键的内容可以非常容易地访问。在当前状态下,除了解析tags列的每个实例中的所有标记之外,没有其他解决方案 期

我一直在处理OSM数据,我使用它导入到postgresql数据库。这在我的postgre数据库中生成了几个表,其中包含一个表planet\u osm\u ways。可以研究行星osm。planet_osm_ways具有以下数据样本:

问题: 上表中的tags列不是JSON格式。将此数据设置为JSON格式是否有用

我相信它在访问标记时会非常有用,例如,如果数据是JSON格式的,“name”键的内容可以非常容易地访问。在当前状态下,除了解析tags列的每个实例中的所有标记之外,没有其他解决方案

期待有趣的建议,并了解是否有任何特殊原因不保留JSON格式的标记数据。非常感谢您的时间。

osm2psql使用了一种“接近JSON”的旧格式。。。您可以与一些“很少使用的标记”(as)一起使用,
osm2pgsql
将其转换为

对于其他更相关的数据,您引用了“标签列”。。。根据

  • planet_osm_nodes.tags
  • planet_osm_rels.tags
  • planet_osm_ways.tags
它们是表示“标记和值”的数据类型(字符串数组),格式为:{tag1,value1,tag2,value2,…}。。。因此,转换为JSON的格式(或
jsonb_object
转换为jsonb)


笔记 为什么不使用PostGreSQL JSON(B)列类型?我不是osm2pgsql的作者,但很容易理解作者的决定

osm2pgsql软件是2006年的一个项目,是一个。。。请看下面

PostgreSQL v9.2(2012-09)提供了不稳定的JSON支持,并于2016年以PostgreSQL v9.5和内部格式作为真正的专业支持(!)完成

因此,我们看到了基本原因:

  • 好的和可靠的开源软件(如PostgreSQL和osm2psql)需要时间,发展缓慢

  • 专业JSON对于PostgreSQL社区来说是“新的”



  • 我也对OSM JSON模型感兴趣,但它不是那么简单,是一个新的数据模型。。。那么,让我们看看是什么。

    数据是JSON格式的——您的意思是问为什么它不使用PostGreSQL JSON列类型?只有osm2pgsql作者才能回答这个问题。是的,osm2pgsql不提供JSON格式的数据。我想知道为什么!