符合rfc-7946的geojson解析器和发射器
picogeojson的Python项目详细描述
直接且兼容的geojson解析和序列化 零依赖性。很容易摄取或输出geojson,并依附于RFC 7946。
用法
使用fromfile()或读取geojson文件或字符串 fromstring()(别名loads())。
pt=picogeojson.fromstring('{"type": "Point", "coordinates": [1.0, 3.0]}')# -> Point(coordinates=[1.0, 3.0])
有时需要特定类型的geojson对象(例如 但为了安全起见,需要检查类型。 或者,可以使用result_fromstring()函数,它 返回具有特定geojson类型的安全访问器的对象。
result=picogeojson.result_fromstring(api_response.decode("utf-8"))# Expecting one or more points or multipointsforgeominresult.points:# do something with points# ...forgeominresult.multilinestrings:# do something with multilinestrings# ...
这也适用于特性,我们可以通过^{tt5}过滤$ 成员。
result=picogeojson.result_fromstring(api_response.decode("utf-8"))forfeatureinresult.features("Polygon",{"type":"Lake","state":"Oregon"}):# do something with lakes in Oregon# ...
geojson对象可以用python构造并组合(merge()) 或拆分(burst())。
points=[picogeojson.Point((1,2)),picogeojson.Point((3,4)),picogeojson.Point((5,6))]merged_points=picogeojson.merge(points)# -> MultiPoint(coordinates=[(1, 2), (3, 4), (5, 6)])split_points=picogeojson.burst(merged_points)# -> [Point((1, 2)), Point((3, 4)), Point((5, 6))]
geojson对象是用tostring()(别名dumps())序列化的。
picogeojson.tostring(picogeojson.Point([1.0,3.0]))# -> {"coordinates": [1.0, 3.0], "type": "Point"}'
关键字参数可以传递给tostring()that-enforce 多边形/多多边形旋转方向,逆时针 外环和内环的顺时针方向 (enforce_poly_winding)-拆分跨国际的对象 将日期行转换为多部分对象,以便于处理 (antimeridian_cutting)-控制bbox成员是否 计算并添加到json输出(write_bbox)
picogeojson将利用 ujson作为后端 安装。否则,它使用python的内置json模块。
性能
读取基准包括读取地震特征列表。这个 write benchmark涉及到澳大利亚大陆的序列化。
Module | Read | Write |
---|---|---|
json | 1.49 | 2.00 |
geojson | 6.74 | same |
picogeojson | 1.84 | same* |
picogeojson+ujson | 1.63 | 0.31* |
*防腐蚀切割和多边形缠绕检查设置为False
这是一个独立的python包,从 Kartageojson子模块。