我有一些这种格式的数据:

Dep       Dest        geom
----      ----        -----
EDDF      KIAD        LINESTRING(3.961389 43.583333, 3.968056 43.580....


其中包含飞行轨迹。 geom列包含WKT格式的坐标。可以通过库geomet将它们转换为GeoJSON格式,我想在新列中进行此操作。

为了对Pandas有效地做到这一点,我正在尝试做:

from geomet import wkt
import json

df = .... #load data to df
df['geojson'] =  df['geom'].apply(lambda x: json.dumps(wkt.loads(x['geom'] )))


哪个不起作用。有办法实现吗?

最佳答案

尝试更改以下行:

df['geojson'] =  df['geom'].apply(lambda x: json.dumps(wkt.loads(x['geom'] )))


进入这个:

df['geojson'] =  df['geom'].apply(lambda x: json.dumps(wkt.loads(x)))


这将产生预期的结果:

from geomet import wkt
import json

#Generate dataframe
df = pd.DataFrame({"Dep":["EDDf"],
                   "Dest": ["KIAD"],
                   "geom": ["LINESTRING(3.961389 43.583333, 3.968056 43.580)"]})


#Apply function to create new column
df["geojson"] = df["geom"].apply(lambda x: json.dumps(wkt.loads(x)))


这将创建:

    Dep  Dest                                             geom                                            geojson
0  EDDf  KIAD  LINESTRING(3.961389 43.583333, 3.968056 43.580)  {"type": "LineString", "coordinates": [[3.9613...

09-28 01:53