Объект GeoSeries интерпретируется как NoneType, когда вызывается метод .bounds - PullRequest
0 голосов
/ 03 июля 2019

Я пытаюсь загрузить шейп-файл в объект Geopandas, а затем вызвать метод total_bounds, чтобы определить экстент шейп-файла.

Я загрузил шейп-файл в объект Geopandas и могу построить его с помощью метода .plot. Я могу распечатать содержимое объекта геопанда в стандартный вывод. Однако, когда я пытаюсь вызвать метод .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

Я запустил этот скрипт с другим шейп-файлом, и он отлично работает. Я почти уверен, что это проблема либо с Geopandas, либо с моим шейп-файлом. Я не могу поделиться шейп-файлом в Интернете, потому что он связан с работой и является конфиденциальным. Я не создал шейп-файл, и шейп-файл прекрасно загружается в ArcMaps, так что на первый взгляд он не выглядит проблемой с шейп-файлом.

Какие шаги я могу предпринять, чтобы диагностировать проблему с помощью Geopandas или моего шейп-файла?

Почему мой шейп-файл нормально загружается как в python, так и в геопандах, но метод bounds не работает?

...