Как сгенерировать JSON на основании списка значений (list)?
У меня есть список значений. Вот его пример:
[[[0.0002700000000000001, 90.00026999999932],
[0.0005400000000000066, 90.00026999999932],
[0.0002700000000000001, 90.00053999999865],
[0.0005400000000000066, 90.00053999999865]],
[[0.0002700000000000001, 90.00053999999865],
[0.0005400000000000066, 90.00053999999865],
[0.0002700000000000001, 90.00080999999795],
[0.0005400000000000066, 90.00080999999795]],
[[0.0002700000000000001, 90.00080999999795],
[0.0005400000000000066, 90.00080999999795],
[0.0002700000000000001, 90.00107999999727],
[0.0005400000000000066, 90.00107999999727]],
[[0.0002700000000000001, 90.00107999999727],
[0.0005400000000000066, 90.00107999999727],
[0.0002700000000000001, 90.00134999999659],
[0.0005400000000000066, 90.00134999999659]]]
Т. е. в общем списке, у меня есть списки из 4-элементов, в каждом из которых по 2 значения. С этого списка я хочу автоматически сгенерировать вот такой JSON:
{
"type": "Feature",
"properties": {
"area": 1
},
"geometry": {
"type": "Polygon",
"coordinates": [
[
[0.0002700000000000001, 90.00026999999932],
[0.0005400000000000066, 90.00026999999932],
[0.0002700000000000001, 90.00053999999865],
[0.0005400000000000066, 90.00053999999865]
]
]
}
}
{
"type": "Feature",
"properties": {
"area": 2
},
"geometry": {
"type": "Polygon",
"coordinates": [
[
[0.0002700000000000001, 90.00053999999865],
[0.0005400000000000066, 90.00053999999865],
[0.0002700000000000001, 90.00080999999795],
[0.0005400000000000066, 90.00080999999795]
]
]
}
}
Как видите, каждый элемент списка - в новом блоке "coordinates"
Кроме того, поле "area" генерится автоматически на основании номера элемента в списке. Если элемент имеет номер 1 в списке, то "area" == 1, и т. д...
Как это сделать?
Спасибо
Ответы (2 шт):
Автор решения: Denis640Kb
→ Ссылка
import json
list = [[[0.0002700000000000001, 90.00026999999932],
[0.0005400000000000066, 90.00026999999932],
[0.0002700000000000001, 90.00053999999865],
[0.0005400000000000066, 90.00053999999865]],
[[0.0002700000000000001, 90.00053999999865],
[0.0005400000000000066, 90.00053999999865],
[0.0002700000000000001, 90.00080999999795],
[0.0005400000000000066, 90.00080999999795]],
[[0.0002700000000000001, 90.00080999999795],
[0.0005400000000000066, 90.00080999999795],
[0.0002700000000000001, 90.00107999999727],
[0.0005400000000000066, 90.00107999999727]],
[[0.0002700000000000001, 90.00107999999727],
[0.0005400000000000066, 90.00107999999727],
[0.0002700000000000001, 90.00134999999659],
[0.0005400000000000066, 90.00134999999659]]]
z = 0
for key in list:
zc = z+1
string = '{"type": "Feature", "properties": {"area": '+str(zc)+'}, "geometry": {"type": "Polygon", "coordinates": [[['+str(list[z][0])+'],['+str(list[z][1])+'],['+str(list[z][2])+'],['+str(list[z][3])+']]]}}'
z += 1
json_str = json.dumps(string)
print(json_str)
Автор решения: Михаил Муругов
→ Ссылка
Пусть исходный список значений находится в переменной coordinates. Тогда решение для Вас:
result = [
{
"type": "Feature",
"properties": {
"area": index
},
"geometry": {
"type": "Polygon",
"coordinates": [coords]
}
}
for index, coords in enumerate(coordinates, start=1)
]