Как импортировать файл .csv со столбцом координат для полигонов в фрейм геоданных?

У меня есть файл 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

Я импортировал его как фрейм данных pandas с помощью pd.read_csv (), как мне теперь преобразовать его в фрейм геоданных с помощью Geopandas, чтобы столбец Geometry был геометрией многоугольников? Когда я пытаюсь:

df1 = gdp.GeoDataFrame(df, geometry = 'geometry')

Я получаю сообщение об ошибке: столбец входной геометрии должен содержать допустимые геометрические объекты.

Затем, когда я пытаюсь проверить правильность геометрии с помощью некоторого кода, я обнаружил здесь

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'

Я в тупике.


person tom91    schedule 13.12.2018    source источник
comment
Вам необходимо использовать формат Well Known Text (WKT). Посмотрите, поможет ли что-нибудь на этой странице: geopandas.readthedocs.io/en/latest/ галерея /   -  person DatHydroGuy    schedule 13.12.2018
comment
Да! Вот и все, спасибо вам большое!   -  person tom91    schedule 13.12.2018
comment
Пожалуйста. Возможно, вы захотите опубликовать ответ (и пометить его как принятый), чтобы другие могли узнать о том, что вы узнали :)   -  person DatHydroGuy    schedule 13.12.2018


Ответы (1)


Как упоминал DatHydroGuy, хитрость заключалась в использовании формата хорошо знакомого текста (WKT). Следующий код решает проблему:

from shapely import wkt
df['geometry'] = df['geometry'].apply(wkt.loads)
df1 = gpd.GeoDataFrame(df, geometry = 'geometry')

Спасибо ДатГидроГай

person tom91    schedule 13.12.2018