Filter 基于特定键过滤geojson中的对象

Filter 基于特定键过滤geojson中的对象,filter,geojson,jq,Filter,Geojson,Jq,我尝试编辑geojson文件,以仅保留具有键“name”的对象。 过滤器可以工作,但我找不到一种方法来保存其他对象,特别是几何体,并将整个内容重定向到一个新的geojson文件。是否有一种方法可以在过滤一个子对象后显示整个对象 下面是我的数据示例。第一个对象具有“name”属性,而第二个对象没有: { "features": [ { "type": "Feature", "id": "way/24824633", "properties": {

我尝试编辑geojson文件,以仅保留具有键“name”的对象。 过滤器可以工作,但我找不到一种方法来保存其他对象,特别是几何体,并将整个内容重定向到一个新的geojson文件。是否有一种方法可以在过滤一个子对象后显示整个对象

下面是我的数据示例。第一个对象具有“name”属性,而第二个对象没有:

{
  "features": [
    {
      "type": "Feature",
      "id": "way/24824633",
      "properties": {
        "@id": "way/24824633",
        "highway": "tertiary",
        "lit": "yes",
        "maxspeed": "50",
        "name": "Rue de Kleinbettingen",
        "surface": "asphalt"
      },
      "geometry": {
        "type": "LineString",
        "coordinates": [
          [
            5.8997935,
            49.6467825
          ],
          [
            5.8972561,
            49.6467445
          ]
        ]
      }
    },
    {
      "type": "Feature",
      "id": "way/474396855",
      "properties": {
        "@id": "way/474396855",
        "highway": "path"
      },
      "geometry": {
        "type": "LineString",
        "coordinates": [
          [
            5.8020608,
            49.6907648
          ],
          [
            5.8020695,
            49.6906054
          ]
        ]
      }
    }
  ]
}
以下是我使用jq

cat file.geojson | jq '.features[].properties | select(has("name"))'
“几何体”也是“特征”的子对象,但我找不到直接从“特征”级别进行选择的方法。有什么办法吗?还是找到更好的解决办法

因此,所需输出为:

{
  "type": "Feature",
  "id": "way/24824633",
  "properties": {
    "@id": "way/24824633",
    "highway": "tertiary",
    "lit": "yes",
    "maxspeed": "50",
    "name": "Rue de Kleinbettingen",
    "surface": "asphalt"
  },
  "geometry": {
    "type": "LineString",
    "coordinates": [
      [
        5.8997935,
        49.6467825
      ],
      [
        5.8972561,
        49.6467445
      ]
 ]}}
您可以将筛选后的列表返回到
。功能

jq '.features |= map(select(.properties|has("name")))'

确切要求的输出是什么/?每个具有“名称”键(包括其几何体属性)的对象。像这个(对不起,操作不好,所以下面的注释中有示例):{“类型”:“特征”,“id”:“方式/24824633”,“属性”:{“@id”:“方式/24824633”,“公路”:“第三”,“照明”:“是”,“最大速度”:“50”,“名称”:“克莱因贝廷街”,“表面”:“沥青”},“几何”:{“类型”:“线条”,“坐标”:[[5.8997935,49.6467825],[5.8972561,49.6467445],你的
JSON
也有语法问题,一些未终止的
}
我想,请检入你的代码并修复看到的错误,然后你可以在上使用
jq
it@Inian我纠正了报告中的错误“必需的输出”部分。感谢您的注意。我在这里学到了一些重要的东西:不仅要检查jsonlint.com中的全部代码,还要检查发布的摘录。我不会再犯这个错误了。很高兴听到这个消息!