Я пытаюсь загрузить шейп-файл в объект 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 не работает?