You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Apache NiFi的Jolt表达式转换坐标数组为PostGIS多边形字符串

用Apache NiFi的Jolt将坐标数组转换为PostgreSQL Geometry多边形字符串

我有一组地理坐标数据,需要转换成可插入PostgreSQL的geometry类型多边形字符串,使用Apache NiFi工具处理。

输入数据

[
  [
    13,
    52
  ],
  [
    13,
    55
  ],
  [
    14,
    15
  ]
]

期望输出

POLYGON((13 52, 13 55, 14 15))

正确的Jolt转换规则

之前尝试的Jolt表达式未达到预期,以下是可行的转换规则:

[
  // 把每个坐标对转为空格分隔的字符串
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "*": "=join(' ',@(1,&))"
    }
  },
  // 将所有坐标字符串用逗号+空格连接
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "*": "&",
      "coords": "=join(', ',@(1))"
    }
  },
  // 拼接成PostgreSQL需要的POLYGON格式
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "result": "=concat('POLYGON((',@(1,coords),'))')"
    }
  },
  // 只保留最终结果字段
  {
    "operation": "shift",
    "spec": {
      "result": "POLYGON"
    }
  }
]

步骤说明

  • 第一步:遍历每个坐标子数组,用空格拼接经度和纬度,将[13,52]转为"13 52"。
  • 第二步:把所有处理后的坐标字符串用, 连接,生成coords字段,值为"13 52, 13 55, 14 15"。
  • 第三步:通过concat函数将前缀、坐标串和后缀拼接成目标格式。
  • 第四步:通过shift操作过滤掉中间字段,只保留最终结果。

如果需要直接输出纯字符串而非带键的JSON,可以在NiFi中搭配EvaluateJsonPath处理器,提取$.POLYGON的值即可。

内容的提问来源于stack exchange,提问作者dd619

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 11:04:55