当.bounds方法称为

时间:2019-07-03 18:42:07

标签: python gis shapefile geopandas

我正在尝试将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方法不起作用?

0 个答案:

没有答案