如何将包含多边形坐标列的 .csv 文件导入地理数据框?
How do I import a .csv file with a column of coordinates for polygons to a geodataframe?
我有一个 csv 文件,其中有一列包含一系列多边形的坐标。
例如:
patch_ID geometry flow hab_area Total Portion of Flow flow_area Dispersal mean_flow
1 156 POLYGON ((369000.0000019073 548000.0000019073,... 1.620000e-12 3874.00 3.740000e-11 4.328570 4.180000e-16 d4 3.081707
3 65 POLYGON ((362000.0000019073 560000.0000019073,... 1.010000e-12 404.25 3.740000e-11 2.709681 2.510000e-15 d4 1.447226
4 170 POLYGON ((383000.0000019073 520000.0000019073,... 8.770000e-13 5397.25 3.740000e-11 2.342323 1.620000e-16 d4 3.270493
6 179 POLYGON ((390000.0000019073 484000.0000019073,... 7.350000e-13 12341.50 3.740000e-11 1.963216 5.960000e-17 d4 3.796241
10 162 POLYGON ((385000.0000019073 541000.0000019073,... 3.530000e-13 1546.75 3.740000e-11 0.943354 2.280000e-16 d4 1.139087
我已使用 pd.read_csv() 将其导入为 pandas 数据框,我现在如何将其转换为具有 Geopandas 的地理数据框,以便几何列是几何的多边形?当我尝试时:
df1 = gdp.GeoDataFrame(df, geometry = 'geometry')
我收到一个错误:输入几何列必须包含有效的几何对象。
然后当我尝试用一些代码检查几何的有效性时,我发现 here
for index, row in blbog_unpro.iterrows():
geom = row['geometry']
if len(geom.coords) <= 2:
print("This row has an invalid polygon geometry")
我收到另一个错误:'str' 对象没有属性 'coords'
我被难住了。
正如 DatHydroGuy 所提到的,技巧是使用 Well Know Text(WKT) 格式。以下代码对问题进行了排序:
from shapely import wkt
df['geometry'] = df['geometry'].apply(wkt.loads)
df1 = gpd.GeoDataFrame(df, geometry = 'geometry')
谢谢 DatHydroGuy
我有一个 csv 文件,其中有一列包含一系列多边形的坐标。
例如:
patch_ID geometry flow hab_area Total Portion of Flow flow_area Dispersal mean_flow
1 156 POLYGON ((369000.0000019073 548000.0000019073,... 1.620000e-12 3874.00 3.740000e-11 4.328570 4.180000e-16 d4 3.081707
3 65 POLYGON ((362000.0000019073 560000.0000019073,... 1.010000e-12 404.25 3.740000e-11 2.709681 2.510000e-15 d4 1.447226
4 170 POLYGON ((383000.0000019073 520000.0000019073,... 8.770000e-13 5397.25 3.740000e-11 2.342323 1.620000e-16 d4 3.270493
6 179 POLYGON ((390000.0000019073 484000.0000019073,... 7.350000e-13 12341.50 3.740000e-11 1.963216 5.960000e-17 d4 3.796241
10 162 POLYGON ((385000.0000019073 541000.0000019073,... 3.530000e-13 1546.75 3.740000e-11 0.943354 2.280000e-16 d4 1.139087
我已使用 pd.read_csv() 将其导入为 pandas 数据框,我现在如何将其转换为具有 Geopandas 的地理数据框,以便几何列是几何的多边形?当我尝试时:
df1 = gdp.GeoDataFrame(df, geometry = 'geometry')
我收到一个错误:输入几何列必须包含有效的几何对象。
然后当我尝试用一些代码检查几何的有效性时,我发现 here
for index, row in blbog_unpro.iterrows():
geom = row['geometry']
if len(geom.coords) <= 2:
print("This row has an invalid polygon geometry")
我收到另一个错误:'str' 对象没有属性 'coords'
我被难住了。
正如 DatHydroGuy 所提到的,技巧是使用 Well Know Text(WKT) 格式。以下代码对问题进行了排序:
from shapely import wkt
df['geometry'] = df['geometry'].apply(wkt.loads)
df1 = gpd.GeoDataFrame(df, geometry = 'geometry')
谢谢 DatHydroGuy