【发布时间】:2022-12-15 01:08:49
【问题描述】:
我有一个在其中一列中包含 WKT 的 DataFrame。如果需要,可以将该列转换为 geojson。
有没有办法在 Databricks/PySpark 中将此数据保存(输出到存储)为 geojson 或 shapefile?
数据框示例:
| Id | Color | Wkt |
|---|---|---|
| 1 | Green | POINT (3 7) |
| 2 | Yellow | POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10)) |
DataFrame 可以有大约 100K 行甚至更多。
我试过使用 Geopandas 库,但它不起作用:
import geopandas as gpd
# df is as PySpark dataframe
# Covert it to Pandas dataframe
pd_df = df.toPandas()
pd_df['geometry']=pd['point_wkt'].apply(wkt.loads)
# Convert it to GeoPandas dataframe
gdf = gpd.GeoDataFrame(pd, geometry='geometry')
# The following fails:
gdf.to_file(os.path.join(MOUNT_POINT,output_folder,"shapefile.shp"))
错误是:
Failed to create file /mnt/traces/output_folder/shapefile.shp: No such file or directory
该错误没有任何意义,因为文件夹 /mnt/traces/output_folder/ 确实存在,并且我已成功将 PySpark 数据帧作为 CSV 保存到其中。
df.write.csv(os.path.join(MOUNT_POINT,output_folder), sep='\t')
在本地运行时,我可以使用上述代码将 GeoPandas 数据帧保存到 shapefile,但不能在 Spark (Databricks) 上运行。
【问题讨论】:
标签: pyspark databricks geospatial geojson shapefile