2017-01-28 14 views
-1

Есть ли причина, по которой мой счет равен нулю, когда ему должно быть 29. Я попытался инициализировать счет внутри моей функции, но затем он говорит, что он не определен.Переменная инициализация с помощью методов (Python)

shapefile = "Schools.shp" 
work = r"c:\Scripts\Lab 6 Data" 
facility = "HIGH SCHOOL" 
count = 0 

def numSchools(work, shapefile, facility): 

    whereClause = "\"FACILITY\" = 'HIGH SCHOOL' " # where clause for high schools 
    cursor = arcpy.SearchCursor("Schools.shp", facility) 
    result = arcpy.GetCount_management(cursor) 
    for result in cursor: 
     count = int(result.getOutput(0))# Get the first value from the Result object 
    return count 

print ("The number of " + facility + " are:"), int(count) 

В его базовой форме этот код возвращает правильное количество школ.

import arcpy 

arcpy.env.workspace = r"c:\Scripts\Lab 6 Data" 
result = arcpy.GetCount_management("Schools.shp") 
count = int(result.getOutput(0)) 
print ("The number of rows in 'schools' is "),int(count) 

Однако Schools.shp - это файл, который содержит 201 школу.

Мне нужно зайти в этот файл в поле под названием «объекты», а затем в нем получить число «средних школ» (я знаю, как сделать эту часть). НО Я также нуждаюсь в том, чтобы этот код работал как функция (с чем я столкнулся).

+0

Вы можете включать в ваше сообщение об ошибке? – dmlicht

+2

Вы определяете функцию, но на самом деле ее не называете. Ничто из того, что вы писали внутри функции, не имеет значения. – jasonharper

+0

@dmlicht NameError: name 'count' не определен –

ответ

-1
  searchCurs = arcpy.da.SearchCursor(shapefile, field, whereClause) 
      row = searchCurs.next() 
      for row in searchCurs: 
          value = row[0] 
          high_schools = [row[0] for row in arcpy.da.SearchCursor(shapefile, field, whereClause)] 
          count = len(high_schools) 
          print count 
0

Хотя ваш вопрос не очищается Я предполагаю, что вы ищете это!

print ("The number of " + facility + " are:", int(count)) 
+0

('Количество HIGH SCHOOL:', 0), все еще дающее мне 0 в качестве ответа –

+0

попробуйте жесткое кодирование вместо возврата count return a 5/any number from there. Проверьте правильность работы функции возврата –

+0

Не может быть, потому что счетчик не является одним из моих входных параметров. Он не должен быть, хотя –

 Смежные вопросы

  • Нет связанных вопросов^_^