Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

I've dealing with the code below with such a long time. I have to show in a raster image the result of calculating the cost of the electricity for a solar plant. The thing is that I have to interact a layer "DNI" (direct normal irradiation) with the formula, and the value of the formula changes with a factor for each year (costReductionFactorPlant) during the 30 years of the life plant. The factors are shown below.

When I run the code, I receive the following error:

Runtime error 
Traceback (most recent call last):
  File "<string>", line 56, in <module>
  File "c:\program files (x86)\arcgis\desktop10.1\arcpy\arcpy\sa\Functions.py", line 4049, in Times
    in_raster_or_constant2)
  File "c:\program files (x86)\arcgis\desktop10.1\arcpy\arcpy\sa\Utils.py", line 47, in swapper
    result = wrapper(*args, **kwargs)
  File "c:\program files (x86)\arcgis\desktop10.1\arcpy\arcpy\sa\Functions.py", line 4046, in wrapper
    return _wrapLocalFunctionRaster(u"Times_sa", ["Times", in_raster_or_constant1, in_raster_or_constant2])
RuntimeError: ERROR 000732: Input Raster: Dataset D:_ArcGIS\Python\LCOE_test does not exist or is not supported
>>> 

I'm afraid that there is something wrong when calling the layer "DNI". But no clue. Maybe there is also an error with the loop... I've tryed to look at it also, for me looks good, but I'm not an expert.

I'm running ArcGis 10.1. All suggestions are more than welcome.

CODE:

import arcpy, os, sys
from arcpy import env
from arcpy.sa import *

# Set Workspace
env.workspace = "D:\02_ArcGIS\Python\LCOE_test"

# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")

# Variables definition
capacity = 100000
actualOutput = .94 * capacity
storageHours = 16
loadFactor = (.57 * storageHours + 7.1)/24
costReductionFactorPlant = [0.4790, 0.4533, 0.4297, 0.4080, 0.3880, 0.3696, 0.3526, 0.3368, 0.3222, 0.3087, 0.2961, 0.2844, 0.2735, 0.2633, 0.2538, 0.2449, 0.2366, 0.2288, 0.2215, 0.2146, 0.2081, 0.2021, 0.1964, 0.1910, 0.1859, 0.1811, 0.1765, 0.1723, 0.1682, 0.1643, 0.1607]
efficiency = [0.1822, 0.1827, 0.1831, 0.1834, 0.1837, 0.1840, 0.1841, 0.1843, 0.1844, 0.1845, 0.1846, 0.1847, 0.1847, 0.1848, 0.1848, 0.1849, 0.1849, 0.1849, 0.1849, 0.1849, 0.1849, 0.1850, 0.1850, 0.1850, 0.1850, 0.1850, 0.1850, 0.1850, 0.1850, 0.1850, 0.1850]
years = 30
i = .1
ir = .01
lcoePlantTotal = 0
productionPlant = loadFactor * actualOutput * 8760
DNI =  "D:\02_ArcGIS\Python\LCOE_test" #layer#

Count=len(costReductionFactorPlant)+ 1
counter=1

while counter < Count:
    for i in range(counter,(counter+1)):

            # Set the cell size environment using a keyword.
            arcpy.env.cellSize = "MAXOF"

            # Set the extent environment using a keyword
            arcpy.env.extent = "MAXOF"

            #intermediate formula plant

            # size = (capacity * 8760 * loadFactor)/(DNI * efficiency[counter-1])

            size1 = (capacity * 8760 * loadFactor)
            timesConstant = efficiency[counter-1]
            size2 = Times(3, timesConstant)
            print size2
            size = Divide(size1, size2)

            # Calculate power block & storage              
            powerBlock = capacity * 1484.9918 * costReductionFactorPlant[counter-1]
            storage = storageHours * capacity * 39.45759 * costReductionFactorPlant[counter-1]

            # Calculate mirrowField 
            # mirrorField = size * 155.6975 * costReductionFactorPlant[cont-1]
            timesConstant2 = costReductionFactorPlant[counter-1]
            inconstant = Times(155.6975, timesConstant2)
            mirrorField = Times(size, inconstant)

            # calculate PowerTower
            powerTower = ((capacity * 121.03883) + (capacity * 128.50378)) * costReductionFactorPlant[counter-1]

            # Calculate investmentPlant
            investmentPlant = powerBlock + storage + mirrorField + powerTower

            # Calculate omPlant
            omPlant = Times(investmentPlant, 0.048)

            #formula: lcoePlant = ((investmentPlant * (((i * (1 + i)^counter)/((1 + i)^counter-1))+ ir))+omPlant)/productionPlant*100
            # Formula Part 1 = (investmentPlant * (((i * (1 + i)^counter) Power symbol = **
            InConstant3= i * ((1 + i)**counter)
            FormulaPart1 = Times(investmentPlant, InConstant3)

            # Formula Part 2 = ((1 + i)^counter-1))+ ir))+omPlant)/productionPlant*100
            FormulaPart2 =(((1 + i)**(counter-1)+ ir)+omPlant)/productionPlant*100

            # Formula
            lcoePlant = Divide(FormulaPart1, FormulaPart2)

            lcoePlantTotal = lcoePlantTotal + lcoePlant

            lcoePlantTotal.save = "D:\\02_ArcGIS\\Python" + str(lcoePlantTotal) + ".img"

print "lcoePlanttotal calculated"
share|improve this question
    
Does the raster DNI indeed exist? –  Chad Cooper Apr 10 '13 at 13:00

2 Answers 2

up vote 2 down vote accepted

In addition to what Jens mentions about correcting the path syntax, another problem is the workspace\input layer distinction. In the code you posted, env.workspace and DNI are identical, and the stack trace indicates that DNI is incorrectly set.

env.workspace = "D:\02_ArcGIS\Python\LCOE_test"

DNI =  "D:\02_ArcGIS\Python\LCOE_test" 

I'm assuming LCOE_test is a folder, which will work fine as the workspace. However, for DNI you need to specify further. Depending on DNI's format, it will look something like

DNI = "D:\\02_ArcGIS\\Python\\LCOE_test\\DNI"

I also don't see DNI being called within the while loop (except for a commented line). I'm guessing this is a result of your debugging efforts, though.

share|improve this answer
    
I have runned it three times: One with the slash \, \\, /. And the path of the layer "DNI" id properly defined. Nevertheless I still geting this error: –  tom Apr 10 '13 at 15:09
    
Traceback (most recent call last): File "<string>", line 47, in <module> –  tom Apr 10 '13 at 15:10
    
File "c:\program files (x86)\arcgis\desktop10.1\arcpy\arcpy\sa\Functions.py", line 4049, in Times in_raster_or_constant2) –  tom Apr 10 '13 at 15:11
    
File "c:\program files (x86)\arcgis\desktop10.1\arcpy\arcpy\sa\Utils.py", line 47, in swapper result = wrapper(*args, **kwargs) –  tom Apr 10 '13 at 15:12
    
File "c:\program files (x86)\arcgis\desktop10.1\arcpy\arcpy\sa\Functions.py", line 4046, in wrapper return _wrapLocalFunctionRaster(u"Times_sa", ["Times", in_raster_or_constant1, in_raster_or_constant2]) –  tom Apr 10 '13 at 15:13

The paths with a single backslash are no valid paths. Use:

  • one forward slash:

"c:/test/test.shp"

  • Two backslash:

"c:\\test\\test.shp"

  • letter r before a string containing a backslash:

r"c:\test\test.shp"

share|improve this answer
    
Thanks guys. I've modified "\\" and defined the total route for the layer "DNI". Yes, this layer exists, is a .img ratster contained in the folder LCOE_test. The problem I've seen lies in this layer. I've writen a print "Ok" and it gives and error before the print "Ok1". Excatly the line where the layer is called. No idea what happens. If the raster .img exists and the folder exists and this is teh exact path. What else can be wrong? –  tom Apr 10 '13 at 14:27
    
The modifications in the code: env.workspace = "D:\\02_ArcGIS\\Python\\LCOE_test" DNI = "D:\\02_ArcGIS\\Python\\LCOE_test\\DNI" #layer# size2 = Times(DNI, timesConstant) lcoePlantTotal.save = "D:\\02_ArcGIS\\Python" + str(lcoePlantTotal) + ".img" –  tom Apr 10 '13 at 14:28
    
Here is the message error: Runtime error Traceback (most recent call last): File "<string>", line 44, in <module> File "c:\program files (x86)\arcgis\desktop10.1\arcpy\arcpy\sa\Functions.py", line 4049, in Times in_raster_or_constant2) File "c:\program files (x86)\arcgis\desktop10.1\arcpy\arcpy\sa\Utils.py", line 47, in swapper result = wrapper(*args, **kwargs) –  tom Apr 10 '13 at 14:29
    
File "c:\program files (x86)\arcgis\desktop10.1\arcpy\arcpy\sa\Functions.py", line 4046, in wrapper return _wrapLocalFunctionRaster(u"Times_sa", ["Times", in_raster_or_constant1, in_raster_or_constant2]) RuntimeError: ERROR 000732: Input Raster: Dataset D:\02_ArcGIS\Python\LCOE_test\DNI does not exist or is not supported –  tom Apr 10 '13 at 14:30
    
Please don't try to put code/error messages in the comments section. Edit your question instead, referencing a particular answer if necessary. –  blah238 Apr 10 '13 at 19:40

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.