![](/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.