Python geopandas-编辑地理数据

Python geopandas-编辑地理数据,python,geospatial,edit,geopandas,Python,Geospatial,Edit,Geopandas,我试图使用.loc将形状文件中的地理坐标编辑到适当的单元格,但每次都会出现相同的错误:TypeError:Value应该是BaseGeometry或None 我甚至尝试将完全相同的地理坐标粘贴到单元格中,但仍然有相同的错误。问题出在哪里 import geopandas as gpd fp = 'http://gis-lab.info/data/mos-adm/mo.geojson' map_df = gpd.read_file(fp) map_df.loc[[145],['geometry']

我试图使用.loc将形状文件中的地理坐标编辑到适当的单元格,但每次都会出现相同的错误:
TypeError:Value应该是BaseGeometry或None

我甚至尝试将完全相同的地理坐标粘贴到单元格中,但仍然有相同的错误。问题出在哪里

import geopandas as gpd
fp = 'http://gis-lab.info/data/mos-adm/mo.geojson'
map_df = gpd.read_file(fp)
map_df.loc[[145],['geometry']]= 'MULTIPOLYGON (((37.2905 55.80199, 37.29542 55.803, 37.29663 55.8032, 37.29777 55.80335, 37.29864 55.80345, 37.29969 55.80352, 37.30356 55.80356, 37.30327 55.80318, 37.30292 55.80248, 37.30278 55.80127, 37.30235 55.79863, 37.29822 55.79763, 37.29447 55.79672, 37.29441 55.79679, 37.29412 55.79671, 37.29417 55.79663, 37.29321 55.79641, 37.29326 55.79806, 37.2905 55.80199)))'
map_df.plot()

geopandas中的几何图形存储为
shapely.Geometry
对象。您试图传递一个字符串(WKT)表示形式,这就是它导致上述错误的原因。您必须首先将字符串转换为形状优美的几何体

from shapely.wkt import loads

string = 'MULTIPOLYGON (((37.2905 55.80199, 37.29542 55.803, 37.29663 55.8032, 37.29777 55.80335, 37.29864 55.80345, 37.29969 55.80352, 37.30356 55.80356, 37.30327 55.80318, 37.30292 55.80248, 37.30278 55.80127, 37.30235 55.79863, 37.29822 55.79763, 37.29447 55.79672, 37.29441 55.79679, 37.29412 55.79671, 37.29417 55.79663, 37.29321 55.79641, 37.29326 55.79806, 37.2905 55.80199)))'
geom = loads(string)
df.loc[145, 'geometry'] = geom
如果尝试指定多零件几何图形,在某些情况下可能会导致
ValueError:在使用iterable设置时必须具有相等的len键和值,这是pandas()中的已知错误。解决方法是通过GeoSeries传递它

geom = loads(string)
df.loc[145, 'geometry'] = geopandas.GeoSeries([geom]).values

你能展示你的代码和数据吗?@martinfleis,我已经更新了answer@martinfleis,如果有可能输入带有2个或更多多个多边形的WKT,因为当我尝试这样做时,我得到了以下错误:
ValueError:在一个单元格中设置两个可数的
多个多边形时,必须具有相等的len键和值?我不知道我是否理解这个问题,那就是“知道臭虫”。我已编辑了我的答案以包含变通方法。