तो मूल रूप से, यह जो कह रहा है, पायथन में बोलते हैं, यह है कि शेपफाइल को खोलने का आपका प्रयास विफल हो गया। जब osgeo.ogr.Open () की तरह कुछ विफल हो जाता है, तो यह आमतौर पर कोई भी नहीं लौटाता है, जो आपके मामले में, आपके चर "शेपफाइल" को सौंपा जाता है। जब आप बाद में शेपफाइल का उपयोग करने का प्रयास करते हैं, तो यह आपको बताता है कि शेपफाइल "नोइंग टाइप" है (ऑस्गेओ ने बनाई गई वस्तु के प्रकार के बजाय) और यह कि किसी भी टाइप ऑब्जेक्ट में गेटलेयरकाउंट विधि नहीं है।
आप इसे कैसे ठीक करते हैं? सबसे पहले, अपने कोड में त्रुटियों के लिए परीक्षण करें - यह आपको बेहतर संदेश देगा। कुछ इस तरह:
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") प्रदान करने की आवश्यकता है, क्योंकि ओस्जियो वर्तमान में प्रदान किए गए पथ के साथ आपके आकार को नहीं पा सकता है। हालांकि यह एक कूबड़ है।