【问题标题】:calculate length of linestring (geo) in databricks计算数据块中线串(地理)的长度
【发布时间】:2021-10-13 06:34:08
【问题描述】:

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

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) P>

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

我用 geopandas 和 shapely 尝试了几件事,但我无法让它发挥作用。不知怎的,我似乎不理解语法,或者我忘记了一些东西

为了检查地理列中的数据是否为有效的地理数据,我们将数据框写入了地理列为几何数据类型的表中。从该表中我们可以计算出长度。所以它是有效数据

【问题讨论】:

    标签: pyspark line databricks geo


    【解决方案1】:

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

    我们需要这些库:

        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
    

    就是这样

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-21
      • 2021-11-25
      • 1970-01-01
      • 2022-09-25
      • 2017-09-18
      • 2011-01-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多