我正在尝试将shapefile加载到Geopandas对象中,然后调用total_bounds方法以识别shapefile的范围。
我已将shapefile加载到Geopandas对象中,并能够使用.plot方法对其进行绘制。我能够将geopandas对象的内容打印到stdout。但是,当我尝试调用.bounds方法时,出现以下错误...
*** AttributeError:'NoneType'对象没有属性'bounds'
class MyClass:
def __init__(self):
self.my_shapefile = "filepath"
self.display = True
self.wpd_gdf = None
self.run()
def run(self):
self.load_shapefile()
self.my_func()
return
def load_shapefile(self):
gdf = gpd.read_file(self.my_shapefile)
if self.display:
gdf.plot(cmap="OrRd", edgecolor="black")
plt.show()
self.wpd_gdf = gdf
return gdf
def my_func(self):
"""
The function that is throwing the error.
"""
# define extent of meshgrid
# import pdb; pdb.set_trace()
extent = self.wpd_gdf.geometry.total_bounds
在初始化扩展变量之前,我已经尝试调试代码。
我可以呼叫self.wpd_gdf
,并且得到返回的地理数据框。
如果我致电type(self.wpd_gdf)
,则会得到以下输出:
<class 'geopandas.geodataframe.GeoDataFrame'>
我能够打电话给self.wpd_gdf.geometry
,并且得到了返回的多边形地理序列。
如果我致电type(self.wpd_gdf.geoometry)
,则会得到以下输出:
<class 'geopandas.geoseries.GeoSeries'>
但是,当我致电self.wpd_gdf.geometry.total_bounds
时,会得到以下输出:
*** AttributeError: 'NoneType' object has no attribute 'bounds'
如果我致电self.wpd_gdf.geometry.bounds
我使用其他shapefile运行了此脚本,并且效果很好。我很确定Geopandas或shapefile都有问题。我不能在线共享shapefile,因为它与工作有关并且是机密的。我没有创建shapefile,并且shapefile可以很好地加载到ArcMaps中,所以从表面上看,shapefile似乎没有问题。
我可以采取哪些步骤来诊断Geopandas或shapefile的问题?
为什么我的shapefile在python和geopandas中都可以正常加载,但是bounds方法不起作用?