Microsoft Fabric 的 Data Lakehouse 能否处理 shp、geojson 等格式的地理空间数据?
我尝试将 geopandas 地理数据框放入 pyspark/parquet
spark_df.write.parquet(destination_path)
,但我似乎无法获取数据。
那么,有可能吗?有没有专门针对地理空间数据的好的教程?
首先从 shp 或 geojson 文件中读取地理空间数据并将其转换为 Spark DataFrame。 要执行此操作,请使用下面的代码块。
import geopandas as gpd
gdf = gpd.read_file('/dbfs/json/points.geojson')
gdf['geom'] = [geom.wkt for geom in gdf['geometry']]
s_df = spark.createDataFrame(gdf.drop("geometry", axis=1,inplace=False))
s_df.printSchema()
s_df.show()
接下来,将数据写入onelake。 在编写之前,请确保在高级选项下启用Azure Data Lake Storage 凭据传递。
现在,前往你的一栋湖边小屋 > 文件
创建新文件夹。我创建了一个名为 geodata 的文件夹。
打开该文件夹的属性并复制ABFS路径。
然后运行下面的代码来编写它。
oneLake = "<your_abfs_link>/Files/geodata"
s_df.write.format("parquet").mode("overwrite").save(oneLake)
是写给onelake的。
再次使用相同的链接,您可以阅读它。
将
geom
列转换回几何类型
您可以使用下面的代码。
from shapely.wkt import loads
odf = spark.read.parquet(oneLake)
p_df = odf.toPandas()
p_df['geometry'] = [loads(i) for i in p_df['geom']]
p_df = p_df.drop("geom",axis=1)
print(p_df.dtypes)
p_df