Я настраиваю файл geoJson динамически, принимая координаты pologon и создавая результирующий файл geoJson, который я затем добавляю в «основной» файл geoJson или читаю его непосредственно на карте.
Я былвозможность генерировать файл geoJson, но он печатает в неправильном формате. Что мне нужно сделать, чтобы получить правильный формат вывода?
Я пытался использовать: filecontent = [line.rstrip () для строки в недавнем файле]
Для устранения "\ n"символов, но он по-прежнему выводит в файл нечетные символы.
У меня есть эти неформатированные выходные данные (Начало) Это новая строка до и после каждого значения в каждой строке
{
"type": "FeatureCollection",
"features": [
"{\n \"type\": \"Feature\",\n \"geometry\": {\n \"type\": \"Polygon\",\n \"coordinates\": [\n [\n [\n -96.00362,\n 30.09309,\n 0.0\n ],\n [\n -96.00095,\n 30.09731,\n 0.0\n ],\n [\n -95.99735,\n 30.09713,\n 0.0\n ],\n [\n -95.99848,\n 30.09348,\n 0.0\n ],\n [\n -96.00362,\n 30.09309,\n 0.0\n ]\n ]\n ]\n },\n \"properties\": {\n \"name\": \"Pasture 7\",\n \"styleUrl\": \"#poly-4F2682-3000-128\",\n \"styleHash\": \"-50cd947a\",\n \"styleMapHash\": {\n \"normal\": \"#poly-4F2682-3000-128-normal\",\n \"highlight\": \"#poly-4F2682-3000-128-highlight\"\n },\n \"description\": \"Future site for\\u00a0\\u201cComprehensive Hi-Tech Agricultural Complex\\u201d\",\n \"stroke\": \"#4f2682\",\n \"stroke-opacity\": 1,\n \"stroke-width\": 3,\n \"fill\": \"#4f2682\",\n \"fill-opacity\": 0.5019607843137255\n }\n}{\n \"type\": \"Feature\",\n \"geometry\": {\n \"type\": \"Polygon\",\n \"coordinates\": [\n [\n [\n -96.02551,\n 30.09428,\n 0.0\n ],\n [\n -96.02524,\n 30.09953,\n 0.0\n ],\n [\n -96.0188,\n 30.09913,\n 0.0\n ],\n [\n -96.01874,\n 30.0937,\n 0.0\n ],\n [\n -96.02551,\n 30.09428,\n 0.0\n ]\n ]\n ]\n },\n \"properties\": {\n \"name\": \"Pasture 7\",\n \"styleUrl\": \"#poly-4F2682-3000-128\",\n \"styleHash\": \"-50cd947a\",\n \"styleMapHash\": {\n \"normal\": \"#poly-4F2682-3000-128-normal\",\n \"highlight\": \"#poly-4F2682-3000-128-highlight\"\n },\n \"description\": \"Future site for\\u00a0\\u201cComprehensive Hi-Tech Agricultural Complex\\u201d\",\n \"stroke\": \"#4f2682\",\n \"stroke-opacity\": 1,\n \"stroke-width\": 3,\n \"fill\": \"#4f2682\",\n \"fill-opacity\": 0.5019607843137255\n }\n}\n"
]
}
Конец неверного формата вывода
Вот мой код для чтения файлов geoJson и добавления новой переменной перед записью в файл.
import os
import json
from pathlib import Path
import shutil
files = [os.path.join(sourceoffiles, x) for x in
os.listdir(destinationfiles) if x.endswith(".json")]
newest = max(files , key = os.path.getctime)
recentfile = open(newest)
recentfilecontent = recentfile.read()
#print(recentfilecontent)
geojson_file = {
"type": "FeatureCollection",
"features": [
]
};
geojson_file['features'].append(recentfilecontent)
with open("newarea.js" , "w") as newarea:
json.dump(geojson_file, newarea, indent=4)
Это мой ожидаемый результат:
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
-95.97203,
30.094557,
0
],
[
-95.970563,
30.094285,
0
],
[
-95.969004,
30.094035,
0
],
[
-95.967678,
30.093836,
0
],
[
-95.967681,
30.095099,
0
],
[
-95.967687,
30.096482,
0
],
[
-95.967699,
30.097665,
0
],
[
-95.970578,
30.097908,
0
],
[
-95.97203,
30.094557,
0
]
]
]
},
"properties": {
"name": "Area 1",
"styleUrl": "#poly-FF0004-3000-128-nodesc",
"styleHash": "-188cd7bd",
"styleMapHash": {
"normal": "#poly-FF0004-3000-128-nodesc-normal",
"highlight": "#poly-FF0004-3000-128-nodesc-highlight"
},
"stroke": "#ff0004",
"stroke-opacity": 1,
"stroke-width": 3,
"fill": "#ff0004",
"fill-opacity": 0.5019607843137255
}
},
{
"type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
-95.979281,
30.0946,
0
],
[
-95.979115,
30.095331,
0
],
[
-95.980096,
30.095487,
0
],
[
-95.980258,
30.094751,
0
],
[
-95.979281,
30.0946,
0
]
]
]
},
"properties": {
"name": "Area 2",
"styleUrl": "#poly-0000FF-3000-128-nodesc",
"styleHash": "-6fb6f6b9",
"styleMapHash": {
"normal": "#poly-0000FF-3000-128-nodesc-normal",
"highlight": "#poly-0000FF-3000-128-nodesc-highlight"
},
"stroke": "#0000ff",
"stroke-opacity": 1,
"stroke-width": 3,
"fill": "#0000ff",
"fill-opacity": 0.5019607843137255
}
}
]
};