计算数据块中线串(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
就是这样
我们导入一个带有地理列的数据集。此地理列代表一条线。当我将数据导入数据框时,地理列中的数据如下所示:
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