В сущности, в Python говорят, что ваша попытка открыть шейп-файл не удалась. Когда что-то вроде osgeo.ogr.Open () завершается ошибкой, обычно возвращается None, который, в вашем случае, присваивается вашей переменной "shapefile". Когда вы позже попытаетесь получить доступ к шейп-файлу, он сообщит вам, что шейп-файл - это «NoneType» (а не тип объекта, который должен был создать osgeo) и что у объектов NoneType нет метода GetLayerCount.
Как вы это исправите? Во-первых, проверьте ошибки в своем коде - это даст вам лучшие сообщения. Что-то вроде:
import osgeo
import osgeo.ogr
try:
shapefile = osgeo.ogr.Open("tl_2009_us_state.shp")
if shapefile: # checks to see if shapefile was successfully defined
numLayers = shapefile.GetLayerCount()
else: # if it's not successfully defined
print "Couldn't load shapefile"
except: # Seems redundant, but if an exception is raised in the Open() call,
# # you get a message
print "Exception raised during shapefile loading"
# if you want to see the full stacktrace - like you are currently getting,
# then you can add the following:
raise
Итак, теперь нам нужно ответить на вопрос, почему ваш шейп-файл не загружается. Я предполагаю, что вам нужно указать полный путь (например, "C: \ Users ... \ tl_2009_us_state.shp"), потому что osgeo не может найти ваш шейп-файл с указанным в данный момент путем. Это догадка, хотя.