计算数据块中线串(geo)的长度

calculate length of linestring (geo) in databricks

我们导入一个带有地理列的数据集。此地理列代表一条线。当我将数据导入数据框时,地理列中的数据如下所示:

LINESTRING (155337.4045392797 368804.3359240878, 155355.9229438164 368779.3184124769, 155373.0222553128 368756.2129847418, 155388.3646412735 368731.7390974509, 155407.6144665894 368681.0098514915, 155420.4474846997 368647.1914807712, 155436.6551315848 368622.2950623668, 155457.1933884901 368596.075214043, 155466.4756062801 368586.0079242395, 155491.8449842462 368569.6328123881)

数据框中此列的数据类型为字符串。 我需要计算长度。我该怎么做。

我用 geopandas 和 shapely 尝试了几件事,但我无法让它工作。不知何故我似乎不明白语法或者我忘记了一些东西

为了检查地理列中的数据是否是有效的地理数据,我们将数据帧写入 table,其中地理列是数据类型几何。从那个表格我们可以计算出长度。所以这是有效数据

我和同事一起解决了这个问题

我们需要这些库:

    from pyspark.sql.functions import *
    from pyspark.sql.types import *
    from shapely import geos, wkb, wkt
    import pandas as pd
    import geopandas as gpd

然后我们将数据导入为数据帧并将数据帧转换为 pandas 数据帧

df_basis = spark.sql(sql_basis)
df_pandas = df_basis.toPandas()

几何列作为变量(可选)

column = 'geometrie'

阅读几何列作为 wkt

df_pandas[column] = gpd.GeoSeries.from_wkt(df_pandas[column])

将列 'lengte' 添加到 geopandas 数据框(lengte 是荷兰语的长度)

df_pandas['lengte'] = gpd.GeoSeries(df_pandas['geometrie']).length

就是这样