def merge_geojson_files(input_files):
for input_file in input_files:
with open(input_file, 'r') as f:
in_features = False
for line in f:
if not in_features:
if "\"features\": [" in line:
in_features = True
continue
yield line
def main():
# 定义要合并的输入文件列表
input_files = ["file1.geojson", "file2.geojson"]
# 定义输出文件
output_file = "merged.geojson"
# 打开输出文件并写入GeoJSON头部
with open(output_file, 'w') as output:
output.write('{\n')
output.write(' "type": "FeatureCollection",\n')
output.write(' "features": [\n')
# 使用生成器逐行处理文件内容
for line in merge_geojson_files(input_files):
output.write(line)
# 写入GeoJSON尾部
output.write(' ]\n')
output.write('}\n')
print("合并完成,结果保存在 " + output_file)
if __name__ == "__main__":
main()
# 定义要合并的输入文件
input_file1 = "file1.geojson"
input_file2 = "file2.geojson"
# 定义输出文件
output_file = "merged.geojson"
# 打开输入文件1和输出文件
with open(input_file1, 'r') as f1, open(output_file, 'w') as output:
# 逐行读取和写入文件1
for line in f1:
output.write(line)
# 打开输入文件2,并继续写入到输出文件
with open(input_file2, 'r') as f2, open(output_file, 'a') as output:
# 跳过GeoJSON文件的开头,避免重复特征集合的头部
in_features = False
for line in f2:
if not in_features:
if "\"features\": [" in line:
in_features = True
continue
output.write(line)
print("合并完成,结果保存在 " + output_file)
import fiona
# 定义要合并的输入文件
input_file1 = "file1.geojson"
input_file2 = "file2.geojson"
# 定义输出文件
output_file = "merged.geojson"
# 打开输入文件1
with fiona.open(input_file1, 'r') as src1:
# 打开输出文件
with fiona.open(output_file, 'w', driver=src1.driver, crs=src1.crs, schema=src1.schema) as dst:
for feature in src1:
dst.write(feature)
# 打开输入文件2,继续写入到输出文件
with fiona.open(input_file2, 'r') as src2:
with fiona.open(output_file, 'a', driver=src2.driver, crs=src2.crs, schema=src2.schema) as dst:
for feature in src2:
dst.write(feature)
print("合并完成,结果保存在 " + output_file)