![](/img/trans.png)
[英]Pandas DataFrame: convert WKT into GeoJSON in a new column using Lambda function
[英]Convert pandas column with featurecollection to GeoJSON
我下载了一个 CSV,其中包含一个具有 GeoJSON 格式的列,并将其导入为 pandas dataframe。如何将其转换为 GeoJSON (.geojson)? 我有大约 10,000 行,每行的信息如下所示:
这是列中单元格的示例:{"type":"FeatureCollection","features":[{"type":"Feature","geometry":{"type":"Polygon","coordinates" :[[[[ - 0.0903517,9.488375],[ - 0.0905786,9.488523],[ - 0.0909767,9.48913],[-0.09122,9912,4895258] ],[-0.0907146,9.4898184],[-0.090649,9.4895175],[-0.0907516,9.489142],[-0.0906146,9.4889654],[-0.0903517,9.488375]]]},"属性":{"pointCount":" 11","长度":"502.9413","面积":"8043.091133117676"}}]}
Overview of my pandas dataframe print now: site_registration_gps_area ... geometry
11 {"type":"FeatureCollection","features":[{"type... ... POINT (-76.75880 2.38031)
14 {"type":"FeatureCollection","features":[{"type... ... POINT (-76.73718 2.33163)
40 {"type":"FeatureCollection","features":[{"type... ... POINT (-0.15727 9.69560)
42 {"type":"FeatureCollection","features":[{"type... ... POINT (-0.11686 9.65522)
44 {"type":"FeatureCollection","features":[{"type... ... POINT (-0.10379 9.65226)
我建议使用GeoPandas
来完成这项任务。 最简单的解决方案是使用GeoDataFrame
直接使用GeoPandas
读取 CSV 文件。 如果你这样做,你需要这样的东西:
import geopandas as gpd
# read the CSV file into a GeoDataFrame
gdf = gpd.read_file('myFile.csv')
# convert the GeoDataFrame to a geojson object
geo_json = gdf.to_json()
# however if the objects become very big, store the GeoDataFrame to a .geojson file
gdf.to_file('path', driver='GeoJSON')
但是,如果您使用DataFrame
中的Pandas
,您可以将其转换为GeoDataFrame
,然后使用与上述代码段相同的步骤。
import pandas as pd
import geopandas as gpd
# your code here ...
# extract the geojson column as a list
geo_j_list = df['geometry'].tolist()
# temporary list for GeoDataFrames
gdfs = []
# iterate over the geojson objects in the list
for geom in geo_j_list:
gdfs.append(gpd.GeoDataFrame.from_features(geom['features']))
# merge the list of GeoDataFrames into one
gdf = gpd.GeoDataFrame(pd.concat(gdfs, ignore_index=True))
# convert the gdf to a json object
geo_json = gdf.to_json()
# store the gdf in a geojson file
gdf.to_file('path', driver='GeoJSON')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.