<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Weigted sum in Python Questions</title>
    <link>https://community.esri.com/t5/python-questions/wiegted-sum/m-p/668098#M51868</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi Mohamad,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If you create a Toolbox and want to add a script, you can use the "Weighted Sum" Data Type for the parameter to collect the necessary information.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;This will return a string with the following structure:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family:courier new;"&gt;rastername1 fieldname1 weight1;rastername2 fieldname2 weight2&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;In the Help on Weighted Sum you can see in the example code that (like Mark explains) a WSTable can be created:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;wstbl = WSTable([["snow", "VALUE", 0.25], ["land", "VALUE", 0.25],["soil", "VALUE", 0.5]])&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If you execute this python code:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;import arcpy
from arcpy.sa import *
arcpy.CheckOutExtension("Spatial")
wstbl = WSTable([["snow", "VALUE", 0.25], ["land", "VALUE", 0.25], ["soil", "VALUE", 0.5]])
print wstbl&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;It will return:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family:courier new;"&gt;'snow' VALUE 0.25; 'land' VALUE 0.25; 'soil' VALUE 0.5&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN style="font-style:italic;"&gt;... which is a similar structure as the parameter provides.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Normally to understand what a tool needs to execute, you can perform it manually and from the Results screen Copy the code as Python Snippet.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Although the Help uses a syntax like:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;output_raster = arcpy.&lt;STRONG&gt;sa.WeightedSum&lt;/STRONG&gt;(wstbl)&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The copied Python snippet will use:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;arcpy.&lt;STRONG&gt;gp.WeightedSum_sa&lt;/STRONG&gt;("snow VALUE 0.25;land VALUE 0.25;soil VALUE 0.5",output_raster)&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I would recommend to use the parameter type "Weighted Sum" and provide that as text to the "arcpy.gp.WeightedSum_sa" tool.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;import arcpy
arcpy.CheckOutExtension("Spatial")

wstbl = arcpy.GetParameterAsText(0) # list of rasters and weights
out_ras = arcpy.GetParameterAsText(1) # output raster

arcpy.gp.WeightedSum_sa(wstbl,out_ras)&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Kind regards, Xander&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sun, 12 Dec 2021 04:14:06 GMT</pubDate>
    <dc:creator>XanderBakker</dc:creator>
    <dc:date>2021-12-12T04:14:06Z</dc:date>
    <item>
      <title>Wiegted sum</title>
      <link>https://community.esri.com/t5/python-questions/wiegted-sum/m-p/668096#M51866</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi everyone&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I want to build a toolset by using add a script that before I had provided in Pythonwin, this tool overlays some rasters by apply Weighted Sum approach. I found that by command arcpy.getParameterAsText(), we can give flexibility to toolset for introducing parameters. but in case this operation, unlike tools like buffer and clip that introduction of parameters is clear, I don't know how introduce required parameters. can anyone help me about this?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;thank you&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 26 Jun 2014 17:37:06 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/wiegted-sum/m-p/668096#M51866</guid>
      <dc:creator>mohamadbakhtiari</dc:creator>
      <dc:date>2014-06-26T17:37:06Z</dc:date>
    </item>
    <item>
      <title>Re: Wiegted sum</title>
      <link>https://community.esri.com/t5/python-questions/wiegted-sum/m-p/668097#M51867</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;You have to create a Weighted Sum Table to input into Weighted Sum, as you know.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;These are three item lists, nested in an overall list.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;to wit:&amp;nbsp;&amp;nbsp;&amp;nbsp; WSTable ([[inRaster, field, weight],...])&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Even for just a few rasters, that is a lot of command parameters for a user to enter.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;It might be better to have the user create a weight parameter text file, &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;say, comma delimited, with one raster per line.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;for example:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;inRaster1, field, weight&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;inRaster2, field, weight&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;inRaster3, field, weight&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;...&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Then, if the user enters the weight parameter text file (with path) as the command parameter,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;the script can first find, read, and parse the text file into the Weighted Sum Table format&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;that Weighted Sum requires.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;That is pretty stratightforward.&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&amp;nbsp;&amp;nbsp; make an empty master file
WSTable = []
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&amp;nbsp;&amp;nbsp; open the file to read
txt = open(r"c:\weights.txt", 'r')

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&amp;nbsp;&amp;nbsp; read each line to the end of the file
while txt.readline() != '':
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # readline gets a line
&amp;nbsp;&amp;nbsp;&amp;nbsp; line = f.readline()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # rstrip removes carrige return
&amp;nbsp;&amp;nbsp;&amp;nbsp; strip = line.rstrip()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # split makes sure you get the correct chunks
&amp;nbsp;&amp;nbsp;&amp;nbsp; split = strip.split(',')
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # now make a list of the chunks
&amp;nbsp;&amp;nbsp;&amp;nbsp; aList = list(split)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # append the individual list to the master list
&amp;nbsp;&amp;nbsp;&amp;nbsp; WSTable.append(aList)

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&amp;nbsp;&amp;nbsp; close the file
txt.close()&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;This can, of course, be very much more succinct&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;furthermore, no warranties are expressed or inplied&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 12 Dec 2021 04:14:04 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/wiegted-sum/m-p/668097#M51867</guid>
      <dc:creator>markdenil</dc:creator>
      <dc:date>2021-12-12T04:14:04Z</dc:date>
    </item>
    <item>
      <title>Re: Weigted sum</title>
      <link>https://community.esri.com/t5/python-questions/wiegted-sum/m-p/668098#M51868</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi Mohamad,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If you create a Toolbox and want to add a script, you can use the "Weighted Sum" Data Type for the parameter to collect the necessary information.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;This will return a string with the following structure:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family:courier new;"&gt;rastername1 fieldname1 weight1;rastername2 fieldname2 weight2&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;In the Help on Weighted Sum you can see in the example code that (like Mark explains) a WSTable can be created:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;wstbl = WSTable([["snow", "VALUE", 0.25], ["land", "VALUE", 0.25],["soil", "VALUE", 0.5]])&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If you execute this python code:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;import arcpy
from arcpy.sa import *
arcpy.CheckOutExtension("Spatial")
wstbl = WSTable([["snow", "VALUE", 0.25], ["land", "VALUE", 0.25], ["soil", "VALUE", 0.5]])
print wstbl&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;It will return:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family:courier new;"&gt;'snow' VALUE 0.25; 'land' VALUE 0.25; 'soil' VALUE 0.5&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN style="font-style:italic;"&gt;... which is a similar structure as the parameter provides.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Normally to understand what a tool needs to execute, you can perform it manually and from the Results screen Copy the code as Python Snippet.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Although the Help uses a syntax like:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;output_raster = arcpy.&lt;STRONG&gt;sa.WeightedSum&lt;/STRONG&gt;(wstbl)&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The copied Python snippet will use:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;arcpy.&lt;STRONG&gt;gp.WeightedSum_sa&lt;/STRONG&gt;("snow VALUE 0.25;land VALUE 0.25;soil VALUE 0.5",output_raster)&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I would recommend to use the parameter type "Weighted Sum" and provide that as text to the "arcpy.gp.WeightedSum_sa" tool.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;import arcpy
arcpy.CheckOutExtension("Spatial")

wstbl = arcpy.GetParameterAsText(0) # list of rasters and weights
out_ras = arcpy.GetParameterAsText(1) # output raster

arcpy.gp.WeightedSum_sa(wstbl,out_ras)&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Kind regards, Xander&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 12 Dec 2021 04:14:06 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/wiegted-sum/m-p/668098#M51868</guid>
      <dc:creator>XanderBakker</dc:creator>
      <dc:date>2021-12-12T04:14:06Z</dc:date>
    </item>
  </channel>
</rss>

