符合rfc-7946的geojson解析器和发射器

picogeojson的Python项目详细描述


Build StatusCoverage Status

直接且兼容的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涉及到澳大利亚大陆的序列化。

ModuleReadWrite
json1.492.00
geojson6.74same
picogeojson1.84same*
picogeojson+ujson1.630.31*

*防腐蚀切割和多边形缠绕检查设置为False

这是一个独立的python包,从 Kartageojson子模块。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
html如何在JavaScript中获取当前Windows用户的名称   用于屏蔽电子邮件的java正则表达式   java Jsoup Android解析   为了避免在运行时缺少Java泛型,将超类型绑定到子类实例   java JTextArea。setText(空);不会释放内存   安卓源Java OutOfMemoryError在构建AOSP 10时出错   java打印到达数组末尾所需的最小跳数序列   使用mvn命令的java Selenium TestNG并行执行   javasocket编程:在关闭服务器之前通知所有客户端   java如何在加载新的安卓片段时显示progressbar?   java从actor系统中删除AKKA actor,并创建另一个具有相同路径名的actor   java我可以用浓缩咖啡做性能测试,还是应该用其他东西?   JavaTreeView(TreeItem)是否可以获取层次结构索引?   带远程服务的java Android应用程序