适用于Geopandas的几何体快速文件格式
项目描述
geofeather
适用于geopandas的几何体更快基于文件的格式。
本项目利用非常快速的feather
文件格式来存储几何数据(点、线、多边形)以与geopandas
进行互操作性。
为什么会有这个存在?
本项目存在是因为在geopandas中读取和写入标准空间格式(例如,shapefile)速度较慢。我正在处理数百万个几何体,涉及多个处理步骤,并需要一个快速读取和写入中间文件的方法。
在我们的基准测试中,我们看到了比通过GeoDataFrame的.to_file()将geopandas写入shapefile快5-6倍。
我们看到了与geopandas的read_file()函数相比快2倍的读取速度。
它是如何工作的?
feather格式在标准pandas数据框中表现得非常好。为了利用feather格式,我们只需将几何数据从shapely对象转换为WKB格式(WKB),然后将其作为原始字节存储在该列中。
我们使用JSON格式在副文件crs中存储坐标参考系统。
安装
在PyPi上可用: https://pypi.ac.cn/project/geofeather/
pip安装geofeather
用法
写入
给定现有的GeoDataFrame my_gdf,将其传递给to_geofeather
to_geofeather(my_gdf, 'test.feather')
读取
my_gdf = from_geofeather('test.feather')
临时
pygeos
为空间数据的数组提供了更快的空间操作。
geopandas正在将使用pygeos几何体作为其内部数据存储迁移到,而不是shapely对象。
在pygeos完全集成之前,geofeather中有适配器以支持与包含pygeos几何体的pandas DataFrame的互操作性。如果您已经使用pygeos对从geofeather读取的数据进行操作,使用以下适配器将比将geofeather读取到GeoDataFrames快3-7倍的速度读写数据。
内部,feather文件与上面创建的文件相同。
使用此功能需要pygeos
。
警告:一旦pygeos
集成到geopandas
中,此功能将被弃用。
from geofeather.pygeos import to_geofeather, from_geofeather
# given a DataFrame df containing pygeos geometries in 'geometry' column
# and a crs object
to_geofeather(df, 'test.feather', crs=crs)
df = from_geofeather('test.geofeather')
注意:从GeoFeather读取到DataFrame时不会返回CRS信息,以保持函数签名与上面的from_geofeather
相同。
索引
目前,feather
文件不支持索引。为了解决这个问题,请在调用to_geofeather
之前重置索引。
更改
0.3.0
- 允许序列化和反序列化包含
pygeos
几何体的pandas DataFrame(见上面的说明)。 - 在geopandas DataFrame中使用新的CRS对象(#4)。
- 已删除
to_shp
;请使用geopandas的to_file()
代替。
0.2.0
- 允许从feather文件中读取子集列。
- 将几何体存储在'geometry'列而不是'wkb'列中(简化以避免重命名列)。
0.1.0
- 初始发布
致谢
使这个快速运行的一切都归功于pyarrow
、geopandas
和shapely
的贡献者们的辛勤工作。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分布
构建分布
geofeather-0.3.0.tar.gz的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 5889ebc31c02dd38215884badb3fa20029628088dbe3d5936894d0488ec01fa4 |
|
MD5 | b42e2a04a440b4f77e3c927733ce0e20 |
|
BLAKE2b-256 | b624c9c9b285d79e18c098bc8c8140eb3b4b000753aecfc26a6daa82b1bb6dab |
geofeather-0.3.0-py3-none-any.whl的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 132a79ef3b31d53fe13287eba31b057d33ced233bf5ed01af25856ec6c60e5ff |
|
MD5 | 6d4c5f61bdf4068842c224c2a63f3a20 |
|
BLAKE2b-256 | 6c1e8a0a3b25b2fff01ab834bdc73794e83de1353f73f8ec481a60bcb5b71b00 |