<?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 Passing an Array from Flex to a Python Script in ArcGIS API for Flex Questions</title>
    <link>https://community.esri.com/t5/arcgis-api-for-flex-questions/passing-an-array-from-flex-to-a-python-script/m-p/617637#M13712</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hello all,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I am having difficulty passing multiple values from flex to a Python script using gp.submitJob().&amp;nbsp; I've tried several things including passing them in an array and as a custom object class.&amp;nbsp; I feel like my problem might be on the python side.&amp;nbsp; The script is supposed to read extents and scale from the flex app and print a PDF.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;In Python I have:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;import arcgisscripting&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;import os&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;# Import arcpy module&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;import arcpy&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;from arcpy import env&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;# Set active MXD, Data Frame, and Layer&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;mxd = arcpy.mapping.MapDocument(r"D:\AGIS_MXDs\PermitPrintToScale.mxd")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;df = arcpy.mapping.ListDataFrames(mxd, "Layers")[0]&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;# Script arguments&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;fromFlex = arcpy.Array()&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;fromFlex = arcpy.GetParameter(0)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;minX = fromFlex.getObject(0)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;if minX == '#' or not minX:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; minX = 727834&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;minY = fromFlex.getObject(1)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;if minY == '#' or not minY:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; minY = 649034&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;maxX = fromFlex.getObject(2)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;if maxX == '#' or not maxX:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; maxX = 938634&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;maxY = fromFlex.getObject(3)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;if maxY == '#' or not maxY:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; maxY = 754900&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;mapScale = fromFlex.getObject(4)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;if mapScale == '#' or not mapScale:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mapScale = 100&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;# Set Data Frame to the extents passed from Flex&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;newExtent = df.extent&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;newExtent.XMin, newExtent.YMin = float(minX), float(minY)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;newExtent.XMax, newExtent.YMax = float(maxX), float(maxY)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;df.extent = newExtent&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;# Set scale of the Data Frame to the value passed from flex&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;# Multiply by 12 to adjust to geographic scale&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;df.scale = float(mapScale) * 12&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;# Print to PDF&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;arcpy.mapping.ExportToPDF(mxd, r"C:\Inetpub\wwwroot\PrintToScalePDF\Print_Output.pdf")&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Any help would be greatly appreciated.&amp;nbsp; If there is an easier way to pass the extents into python I am all ears, but I am still interested in knowing how to pass an array regardless.&amp;nbsp; Many thanks forum users!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Greg&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Allegany County, MD GIS&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 23 Feb 2011 16:56:57 GMT</pubDate>
    <dc:creator>PlanningLDS</dc:creator>
    <dc:date>2011-02-23T16:56:57Z</dc:date>
    <item>
      <title>Passing an Array from Flex to a Python Script</title>
      <link>https://community.esri.com/t5/arcgis-api-for-flex-questions/passing-an-array-from-flex-to-a-python-script/m-p/617637#M13712</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hello all,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I am having difficulty passing multiple values from flex to a Python script using gp.submitJob().&amp;nbsp; I've tried several things including passing them in an array and as a custom object class.&amp;nbsp; I feel like my problem might be on the python side.&amp;nbsp; The script is supposed to read extents and scale from the flex app and print a PDF.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;In Python I have:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;import arcgisscripting&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;import os&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;# Import arcpy module&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;import arcpy&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;from arcpy import env&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;# Set active MXD, Data Frame, and Layer&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;mxd = arcpy.mapping.MapDocument(r"D:\AGIS_MXDs\PermitPrintToScale.mxd")&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;df = arcpy.mapping.ListDataFrames(mxd, "Layers")[0]&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;# Script arguments&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;fromFlex = arcpy.Array()&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;fromFlex = arcpy.GetParameter(0)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;minX = fromFlex.getObject(0)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;if minX == '#' or not minX:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; minX = 727834&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;minY = fromFlex.getObject(1)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;if minY == '#' or not minY:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; minY = 649034&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;maxX = fromFlex.getObject(2)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;if maxX == '#' or not maxX:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; maxX = 938634&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;maxY = fromFlex.getObject(3)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;if maxY == '#' or not maxY:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; maxY = 754900&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;mapScale = fromFlex.getObject(4)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;if mapScale == '#' or not mapScale:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mapScale = 100&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;# Set Data Frame to the extents passed from Flex&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;newExtent = df.extent&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;newExtent.XMin, newExtent.YMin = float(minX), float(minY)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;newExtent.XMax, newExtent.YMax = float(maxX), float(maxY)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;df.extent = newExtent&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;# Set scale of the Data Frame to the value passed from flex&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;# Multiply by 12 to adjust to geographic scale&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;df.scale = float(mapScale) * 12&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;# Print to PDF&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;arcpy.mapping.ExportToPDF(mxd, r"C:\Inetpub\wwwroot\PrintToScalePDF\Print_Output.pdf")&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Any help would be greatly appreciated.&amp;nbsp; If there is an easier way to pass the extents into python I am all ears, but I am still interested in knowing how to pass an array regardless.&amp;nbsp; Many thanks forum users!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Greg&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Allegany County, MD GIS&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 23 Feb 2011 16:56:57 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-api-for-flex-questions/passing-an-array-from-flex-to-a-python-script/m-p/617637#M13712</guid>
      <dc:creator>PlanningLDS</dc:creator>
      <dc:date>2011-02-23T16:56:57Z</dc:date>
    </item>
    <item>
      <title>Re: Passing an Array from Flex to a Python Script</title>
      <link>https://community.esri.com/t5/arcgis-api-for-flex-questions/passing-an-array-from-flex-to-a-python-script/m-p/617638#M13713</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I'm replying to my own question.&amp;nbsp; Instead of passing an array I have switched to passing all the strings individually instead.&amp;nbsp; The widget is working better now but the output PDF extent is about a mile or two south of what I am viewing in flex.&amp;nbsp; Any insight would be appreciated.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;In flex:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
&amp;lt;esri:Geoprocessor
id="gp"
jobComplete="openPDF(event)"
url="http://arcgis.allconet.org/ArcGIS/rest/services/PermitDashboard/GPServer/PrintToScale"
showBusyCursor="true"/&amp;gt;

public var urlPDF:String = "http://arcgis.allconet.org/PrintToScalePDF/Print_Output.pdf";

private function submit():void
&amp;nbsp;&amp;nbsp; { 
&amp;nbsp;&amp;nbsp;&amp;nbsp; var params:Object = {inMinX:map.extent.xmin.toString(), inMinY:map.extent.ymin.toString(), inMaxX:map.extent.xmax.toString(), inMaxY:map.extent.ymax.toString(), inScale:txtScale.text};&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; gp.submitJob(params);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; private function openPDF(event:GeoprocessorEvent):void
&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; var urlRequest:URLRequest = new URLRequest(urlPDF);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; navigateToURL(urlRequest);
&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;And in Python:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
import arcgisscripting
import os

# Import arcpy module
import arcpy
from arcpy import env

# Set active MXD, Data Frame, and Layer
mxd = arcpy.mapping.MapDocument(r"D:\AGIS_MXDs\PermitPrintToScale.mxd")
df = arcpy.mapping.ListDataFrames(mxd, "Layers")[0]

# Script arguments
minX = arcpy.GetParameterAsText(0)
if minX == '#' or not minX:
&amp;nbsp;&amp;nbsp;&amp;nbsp; minX = 727834

minY = arcpy.GetParameterAsText(1)
if minY == '#' or not minY:
&amp;nbsp;&amp;nbsp;&amp;nbsp; minY = 649034

maxX = arcpy.GetParameterAsText(2)
if maxX == '#' or not maxX:
&amp;nbsp;&amp;nbsp;&amp;nbsp; maxX = 938634

maxY = arcpy.GetParameterAsText(3)
if maxY == '#' or not maxY:
&amp;nbsp;&amp;nbsp;&amp;nbsp; maxY = 754900

mapScale = arcpy.GetParameterAsText(4)
if mapScale == '#' or not mapScale:
&amp;nbsp;&amp;nbsp;&amp;nbsp; mapScale = 100
&amp;nbsp;&amp;nbsp; 
# Set Data Frame to the extents passed from Flex
newExtent = df.extent
newExtent.XMin, newExtent.YMin = float(minX), float(minY)
newExtent.XMax, newExtent.YMax = float(maxX), float(maxY)
df.extent = newExtent

# Set scale of the Data Frame to the value passed from flex
# Multiply by 12 to adjust to geographic scale
df.scale = float(mapScale) * 12

# Print to PDF
arcpy.mapping.ExportToPDF(mxd, r"C:\Inetpub\wwwroot\PrintToScalePDF\Print_Output.pdf")
&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm still interested in being able to pass an array to python if possible.&amp;nbsp; Also, the performance of the above code leaves something to be desired.&amp;nbsp; It takes about five minutes to get the PDF.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Greg&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Allegany County, MD GIS&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 12 Dec 2021 02:23:28 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-api-for-flex-questions/passing-an-array-from-flex-to-a-python-script/m-p/617638#M13713</guid>
      <dc:creator>PlanningLDS</dc:creator>
      <dc:date>2021-12-12T02:23:28Z</dc:date>
    </item>
  </channel>
</rss>

