![](/img/trans.png)
[英]How acess/get/extract the values of POLYGON in a geometry column of Geopandas Dataframe?
[英]convert pd dataframe to geopandas dataframe with polygon and multipolygons in the same column
我有一個帶有“幾何”列的 dataframe,具有多多邊形或具有這種結構的多邊形:
"{""coordinates"": [[[[7.550173037853544, 53.67503770572817], [7.547448703728663, 53.67578543283669], [7.546742188094777, 53.674936990272656], [7.544119530708709, 53.67559257263587], [7.539340754839757, 53.67377737266573]]]], ""type"": ""多邊形""}"
"{""coordinates"": [[[[7.550173037853544, 53.67503770572817], [7.547448703728663, 53.67578543283669], [7.546742188094777, 53.674936990272656], [7.544119530708709, 53.67559257263587], [7.539340754839757, 53.67377737266573]]]], ""type"": ""多多邊形""}"
(這些只是條目的一部分,它們會太長而無法發布)。
我試圖將整個 DataFrame 轉換為地理數據框,但我很掙扎。
我所做的是刪除列中的所有字符串,只留下坐標。 然后我用這個 function 將列轉換為多邊形:
def polygons_from_custom_xy_string(df_column):
def chunks(lst, n):
for i in range(0, len(lst), n):
yield lst[i:i + n]
def xy_list_from_string(s):
# 'x y x y ...' -> [[x, y], [x, y], ...]
return list(chunks([float(i) for i in s.split()], 2))
def poly(s):
""" returns shapely polygon from point list"""
ps = xy_list_from_string(s)
return Polygon([[p[0], p[1]] for p in ps])
polygons = [poly(r) for r in df_column]
gemeinde['geometry'] = polygons_from_custom_xy_string(gemeinde['geometry'])
gemeinde = gpd.GeoDataFrame(gemeinde, geometry='geometry')
我可以像這樣 plot ,但是我所有的 MultiPolygons 都壞了。 有沒有更簡單的方法可以將所有形狀轉換為相應的形狀?
我也試過這個,但它不起作用:
gemeinde['geometry'] = gemeinde['geometry'].apply(wkt.loads)
出現錯誤:WKTReadingError: 由於讀取輸入時出錯,無法創建幾何圖形。 我的文件壞了嗎? 在所有其他線程中,我看到 ""type"": ""MultiPolygon"" 部分位於單元格的開頭,而不是單元格的結尾。
非常感謝任何幫助,我在這里有點迷失了。
我的數據是 geojson 文件,而不是 wkt。 我可以使用以下方法將我的數據轉換為地理數據框:
gemeinde['geometry'] = gemeinde['geometry'].apply(lambda x: geojson.loads(x))
gemeinde = gpd.GeoDataFrame(gemeinde, geometry='geometry')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.