其他分享
首页 > 其他分享> > 检查geojson面数据是否为闭合面

检查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