Jadi pada dasarnya, apa yang dikatakannya, dengan Python, adalah bahwa usaha Anda untuk membuka shapefile gagal. Ketika sesuatu seperti osgeo.ogr.Open () gagal, biasanya mengembalikan None, yang, dalam kasus Anda, akan ditugaskan ke variabel "shapefile" Anda. Saat Anda mencoba mengakses shapefile nanti, ia memberi tahu Anda bahwa shapefile adalah "NoneType" (bukan tipe objek yang akan dibuat osgeo) dan bahwa objek NoneType tidak memiliki metode GetLayerCount.
Bagaimana kamu memperbaiki ini? Pertama, uji kesalahan dalam kode Anda - itu akan memberi Anda pesan yang lebih baik. Sesuatu seperti:
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
Jadi, sekarang kita perlu menjawab pertanyaan mengapa shapefile Anda tidak dimuat. Dugaan saya adalah bahwa Anda perlu memberikan path yang sepenuhnya memenuhi syarat (yaitu, "C: \ Users ... \ tl_2009_us_state.shp") karena osgeo tidak dapat menemukan shapefile Anda dengan path yang saat ini disediakan. Tapi itu firasat.