JQ中如何翻线改键
How to flip lines and change keys in JQ
我正在创建我校园的交互式地图,想法是复制我在 uMaps 上所做的事情,in this link。 geojson 是从 UMap 下载的,我使用的是它附带的坐标。
我的第一个问题是我在json中的坐标,本来是一个GeoJson,排序错误,我的long在前,然后是lat,因此在解析Google地图时可以'正确阅读。
Json:
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {
"name": "Almoxarifado / Patrimônio"
},
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
-52.163317,
-32.075462
],
[
-52.163884,
-32.075467
],
[
-52.163883,
-32.075336
],
[
-52.163321,
-32.075332
],
[
-52.163317,
-32.075462
]
]
]
}
},
{
...
},
{
...
},
...
]
}
所以,我必须翻转坐标线以正确放入我的 Google 地图 Api。
我的第二个问题是将“类型”键更改为“层”,以便在我的应用程序中实现更好的分离层。
我试过:
.features[] | .["type"] |= .["new value"]
如何改变值并且只接受浮点值
如有任何帮助、建议或指导,我们将不胜感激。
第 1 部分
flip the coordinates lines
为了清晰和便于测试,让我们定义一个辅助函数:
# input: a JSON object with a coordinates array of arrays of pairs
def flip: .coordinates |= map(map(reverse)) ;
甚至更好 - 在调用 reverse
之前,检查数组是否具有预期的长度,例如:
def flip:
.coordinates
|= map(map(if length == 2 then reverse
else error("incorrect length: \(length)")
end)) ;
要翻转坐标,我们现在可以简单地写:
.features[].geometry |= flip
第 2 部分
change the "type" key to "layer"
{layer: .type} + .
| del(.type)
放在一起
{layer:.type} + .
| del(.type)
| .features[].geometry |= flip
我正在创建我校园的交互式地图,想法是复制我在 uMaps 上所做的事情,in this link。 geojson 是从 UMap 下载的,我使用的是它附带的坐标。
我的第一个问题是我在json中的坐标,本来是一个GeoJson,排序错误,我的long在前,然后是lat,因此在解析Google地图时可以'正确阅读。
Json:
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {
"name": "Almoxarifado / Patrimônio"
},
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
-52.163317,
-32.075462
],
[
-52.163884,
-32.075467
],
[
-52.163883,
-32.075336
],
[
-52.163321,
-32.075332
],
[
-52.163317,
-32.075462
]
]
]
}
},
{
...
},
{
...
},
...
]
}
所以,我必须翻转坐标线以正确放入我的 Google 地图 Api。
我的第二个问题是将“类型”键更改为“层”,以便在我的应用程序中实现更好的分离层。
我试过:
.features[] | .["type"] |= .["new value"]
如何改变值并且只接受浮点值
如有任何帮助、建议或指导,我们将不胜感激。
第 1 部分
flip the coordinates lines
为了清晰和便于测试,让我们定义一个辅助函数:
# input: a JSON object with a coordinates array of arrays of pairs
def flip: .coordinates |= map(map(reverse)) ;
甚至更好 - 在调用 reverse
之前,检查数组是否具有预期的长度,例如:
def flip:
.coordinates
|= map(map(if length == 2 then reverse
else error("incorrect length: \(length)")
end)) ;
要翻转坐标,我们现在可以简单地写:
.features[].geometry |= flip
第 2 部分
change the "type" key to "layer"
{layer: .type} + .
| del(.type)
放在一起
{layer:.type} + .
| del(.type)
| .features[].geometry |= flip