检查geojson面数据是否为闭合面
作者:互联网
检查geojson面数据文件,是否有未闭合的面数据。
分析思路:geojson面数据文件的面坐标串应该首尾坐标值一致,方为闭合面,如果不一样就是未闭合错误。
代码如下:
1 # -*- coding: utf-8 -*- ## 编码声明放在第一行或者写成:# coding=utf-8 2 import os ## os模块提供了非常丰富的方法用来处理文件和目录 3 import csv ## 读写csv文件的python内置模块 4 import json ## 处理JSON的模块 5 import jsonpath ##用来解析多层嵌套的json数据模块 6 7 path = r'C:\Users\lenovo\Desktop' 8 jsf = r'C:\Users\lenovo\Desktop\bb.geojson' # JSON文件位置 9 with open(jsf, 'r', encoding='utf8') as fjs: # 打开json文件 10 jsfile = json.load(fjs) # load():用于读取json文件 11 coor = jsonpath.jsonpath(jsfile, '$..coordinates') # 取key:coordinates的值 12 num = 1 13 for c in coor: 14 b = [str(i) for i in c] # 使用列表推导式把列表中的单个元素全部转化为str类型 15 str2 = ''.join(b) # 把列表中的元素放在空串中,元素间用空格隔开 16 str3 = str2[3:-3] # 按需求截取字符串 17 li = str3.split("], [") # 字符串转列表,split("], [")括号里按分隔符分割元素 18 if li[0] == li[-1]: # 判断首尾坐标如果相同 19 print(str(num) + ". TURE") # 打印序号和TURE 20 jg = str(num) + ". TURE" # 存结果 21 name = "true.csv" # csv文件的命名 22 csvpath = os.path.join(path, name) # csv文件的存储路径 23 path1 = csvpath 24 with open(csvpath, 'a', newline='') as f: # 创建csv文件,写入内容,newline='' 避免出现隔空行 25 csv_write = csv.writer(f) # 写入对象句柄csv_write 26 csv_write.writerow([li[0] + ";" + li[1]]) # 写入内容,writerow([列表])用列表写入避免出现每个字符后都出现逗号 27 else: 28 print(str(num) + ". ERROR") # 打印序号和ERROR 29 jg = str(num) + ". ERROR" # 存结果 30 name = "ERROR.csv" # csv文件的命名 31 csvpath = os.path.join(path, name) # csv文件的存储路径 32 path1 = csvpath 33 with open(csvpath, 'a', newline='') as f: # 创建csv文件,写入内容,newline='' 避免出现隔空行 34 csv_write = csv.writer(f) # 写入对象句柄csv_write 35 csv_write.writerow([li[0] + ";" + li[1]]) # 写入内容,writerow([列表])用列表写入避免出现每个字符后都出现逗号 36 num += 1
标签:csvpath,检查,写入,闭合面,geojson,li,num,str,csv 来源: https://www.cnblogs.com/erickoh/p/14768890.html