따라서 기본적으로 파이썬에서 말한 것은 shapefile을 열려는 시도가 실패했다는 것입니다. osgeo.ogr.Open ()과 같은 것이 실패하면, 보통 None을 반환하는데,이 경우에는 변수 "shapefile"에 할당됩니다. 나중에 shapefile에 액세스하려고하면 shapefile이 "osgeo가 만든 개체 유형이 아닌"NoneType "이고 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
이제 shapefile이로드되지 않는 이유에 대한 질문에 답해야합니다. osgeo가 현재 제공된 경로를 가진 shapefile을 찾을 수 없기 때문에 완전한 경로 (예 : "C : \ Users ... \ tl_2009_us_state.shp")를 제공해야합니다. 그래도 직감입니다.