我正在尝试在 Qgis 项目的新几何属性表字段中接收以 geojson 格式输出的图层。
我使用 Chatgpt 尝试在 Qgis 中找到一种工具或方法来在特定图层的属性表中添加一列,该列显示图层中每个实体的多边形的 Geojson 字符串,实际上创建一个包含类似于以下字符串的新列示例模板:
{"类型": "多多边形", "坐标": [[[[-105.031425, 39.616609], [-105.034665, 39.61662], [-105.034641, 39.617029], [-105.031402, 39.617033], [-105.031425, 39.616609 ]]]]}
我在字段计算器中使用了 Chatgpt 给我的代码,新字段在输出字段类型中设置为“字符串”。
IF (
num_rings($geometry) > 0,
'{"type": "Polygon", "coordinates": [' ||
array_to_string(
array_foreach(
generate_series(1, num_rings($geometry)),
'[' ||
array_to_string(
array_foreach(
generate_series(1, num_points(geometry_n($geometry, @element))),
'[' ||
x(point_n(geometry_n($geometry, @element), @element)) || ',' ||
y(point_n(geometry_n($geometry, @element), @element)) ||
']'
)
) ||
']'
)
) ||
']'
) || ']}',
'')
问题是,这段代码为我提供了一个输出,其中包含所有多边形的一些缺失信息,这是它的外观示例:
{"类型": "多边形", "坐标": [[[-105.029136,39.611863],[-105.029136,39.611863],,,,,,,,,,,,,,,,,,,,,, ,,,,],[[-105.029136,39.611863],[-105.029136,39.611863],,]}
{"类型": "多边形", "坐标": [[[-105.037676,39.624338],,,,,,,,,,,,,]}
当我在字段计算器中使用 -“geom_to_wkt($geometry)”函数时,完整的 WKT 字符串出现在新列中,没有任何问题。
有没有办法解决这个问题,以便它可以在 Geojson 中正确显示完整的字符串?我使用的是 Qgis 3/28/5 Firenze 版本。
这是带有有线字符串的代码输出:
你的人工智能似乎混淆了嵌套函数中的变量。
在
x(point_n(geometry_n($geometry, @element), @element))
中,第一个@element
应指几何索引,第二个@element
指点索引。
我不太了解QGis语法的细节,也许你可以先用
@element
重命名lambda开头的with_variable
。