2016-03-08 2 views
1

Существует код:Почему требуется поплавок?

from arcpy.sa import * 

arcpy.CheckOutExtension("Spatial") 


print "Creating and defining X and Y coordinates:" #set env properties 
env.workspace = r"C:\Users\Desktop\data\new" 
env.overwriteOutput = 1 


theme = '/watersheds_3D.shp' #polygons in vector format 

demName = '/demlab4' # raster of DEM 
rasObject = Raster(demName) 


my_extent = rasObject.extent #find a grid cell size: 
my_cellsize = (rasObject.meanCellHeight + rasObject.meanCellWidth)/2 
print my_cellsize 

slope_deg = Slope(demName) 
slope_deg.save('/demlab4_slope') 

for row in arcpy.da.SearchCursor(theme, ["FID","[email protected]"]): # inside shp file - 
    print ("Polygon # {}: ".format(row[0])) 

    for part in row[1]: # Inside the polygon 

     xCoords = [] 
     yCoords = [] 
     zCoords = [] 
     for pnt in part: 

      print (" {}, {}, {} ".format(pnt.X, pnt.Y, pnt.Z)) 
      xCoords.append(pnt.X) 
      yCoords.append(pnt.Y) 
      zCoords.append(pnt.Z) 

     area3D = lab4_arcpy_module.define3Darea(my_cellsize, slope_deg) 

и функция для вычисления это:

def define3Darea(my_cellsize, slope_deg): 

    a = my_cellsize 
    slope_rad = math.pi * slope_deg/180 # return in radiant 
    c = math.sqrt(a**2 + (math.tan(slope_rad)*a)**2) 

    area3D = a*c 
    print "Total 3D Area is: ", area3D, "m^2" 

    return area3D 

это дает: TypeError: требуется поплавок. Что может быть проблемой?

Также необходимо рассчитать 3D-область внутри каждого многоугольника (4). Как это сделать?

+0

Вам действительно нужно предоставить полное сообщение об ошибке, чтобы мы могли увидеть, где произошла ошибка. Контекст - это все! –

ответ

0

Не знаете, что делают Raster и Slope, но этот TypeError: a float is required возникает, когда вы пытаетесь выполнить некоторые операции с поплавком переменной, которая не имеет тип float. Я предполагаю, что проблема связана с: slope_deg переменной. Смотрите здесь:

slope_deg = Slope(demName) 
slope_deg.save('/demlab4_slope') 

Вы объявляете и делать некоторые операции с slope_deg переменной. И теперь в этом заявлении:

area3D = lab4_arcpy_module.define3Darea(my_cellsize, slope_deg) 

вы используете ту же переменную, которая является экземпляром класса Slope, а не переменная с плавающей точкой. Либо должен быть некоторый атрибут этого (Slope), который равен float, либо вам нужно использовать правильную переменную.

0

я обнаружил, что Тереза ​​некоторая ошибка при попытке печати потери так:

print ("Model paramters:")  
print ("Weight:%f" %sess.run(W)) 
print ("bias:%f" %sess.run(b)) 
#print ("loss:%f" %(loss)) <------ 

сделать disapear ошибки, до сих пор не понимаю, ну почему это.

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