以 CSV 格式创建 Geojson 多边形字符串 u200f

问题描述 投票:0回答:1

我正在尝试在 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 版本。

这是我希望收到的示例: enter image description here

这是带有有线字符串的代码输出:

enter image description here

geolocation gis polygon geojson qgis
1个回答
0
投票

你的人工智能似乎混淆了嵌套函数中的变量。

x(point_n(geometry_n($geometry, @element), @element))
中,第一个
@element
应指几何索引,第二个
@element
指点索引。

我不太了解QGis语法的细节,也许你可以先用

@element
重命名lambda开头的
with_variable

© www.soinside.com 2019 - 2024. All rights reserved.