铜仁市论坛

首页 » 分类 » 常识 » Python高性能空间数据计算包PyGE
TUhjnbcbe - 2021/4/5 20:04:00
治疗白癜风的口服药         http://m.39.net/pf/a_4784935.html
前文再续,书接上一回。上文说到geopandas可以使用PyGEOS做为空间计算引擎,而且给大家看了一下在空间索引的能力下能够提速的能力,今天我们来看看PyGEOS在GeoPandas里面的表现——好吧,下面所有的语法和用法,与PyGEOS就没啥关系,因为所有的计算都是geopandas的内容了。(谁叫geopandas的DataFrame模式在编码的时候这么好用呢……同理,pandas用的Numpy为底层,但是写起来的时候,还是没有任何numpy的内容在里面)如下所示,我们先来看看不启用PyGEOS情况下geopandas的表现:用一个面对10万个点,耗时6.1秒。下面我们来看看启用PyGEOS的情况下,同样的10万个点:耗时毫秒,速度提升了6倍多。有同学问,上一篇文章里面用PyGEOS的空间索引,能够更有效的提升空间计算的效率,那么这里可以不可以呢?那答案自然是莫得问题:下面我们来看看不同计算引擎下面使用空间索引的计算能力:在不使用PyGEOS的情况下,使用10万条数据,使用空间索引之后的耗时是毫秒,对比前面的6.1秒,提升了14倍我们换成PyGEOS的空间索引来试试:耗时37.9毫秒,比不用空间索引提升了24倍。下面我弄个大点的数据看看,比如万:首先看看不使用PyGEOS情况下的速度:耗时为4.08秒然后我们来看看使用PyGEOS情况下的速度:耗时为ms,也就是不到0.4秒,效果还是非常可观的。在空间索引做万数据包含查询的情况下,使用PyGEOS做为空间计算引擎,比传统计算引擎要快10倍左右,可以预见,随着数据量越大,效果也自然就越好。如果我们与上一篇文章来对比一下,就会发现,在geopandas里面做空间索引之后去计算,比单纯用PyGEOS做空间索引之后去计算要快很很多,这是上篇文章里面的测试:同样是万点包含,单纯用PyGEOS需要1.36秒,而在geopandas里面只需要0.39秒,快了差不多4倍。原因就是单纯用PyGEOS,点数据的组织是list模式,而不管是Python里面的list还是C语言里面的数组,模式本身就是一种非结构化的数据结构。而geopandas里面的DataFrame,是一种结构化的组织形式,所以更快是很正常的。看到这里,有同学会问,你这就亮了一堆图片出来,说如何如何厉害,那么我到底要如何才能学会使用呢?从这篇开始,虾神将推出一系列关于Pyhton处理空间数据相关的开发应用文章,敬请期待。最后有彩蛋:godxia

1
查看完整版本: Python高性能空间数据计算包PyGE