def execute(request): outfile = open('c:\\temp\\outfile.txt', 'w') status_writer.send_status(_('Starting process ...')) outfile.write("=== STARTING ===\n\n") outfile.write("Writing parameter values passed from Voyager. Format: 'Parameter Type (param name, value property)'\n\n") parameters = request['params'] sample_catalog = task_utils.get_parameter_value(parameters, 'sample_catalog', 'value') sample_checkbox = str(task_utils.get_parameter_value(parameters, 'sample_checkbox', 'value')) sample_choice = task_utils.get_parameter_value(parameters, 'sample_choice', 'value') sample_folder = task_utils.get_parameter_value(parameters, 'sample_folder', 'value') sample_geometry = task_utils.get_parameter_value(parameters, 'sample_geometry', 'wkt') sample_integer = str(task_utils.get_parameter_value(parameters, 'sample_integer', 'value')) sample_mapview = task_utils.get_parameter_value(parameters, 'sample_mapview', 'extent') sample_projection = str(task_utils.get_parameter_value(parameters, 'sample_projection', 'code')) sample_string = task_utils.get_parameter_value(parameters, 'sample_string', 'value') sample_choicecombo = task_utils.get_parameter_value(parameters, 'sample_choicecombo', 'value') sample_choiceservice = task_utils.get_parameter_value(parameters, 'sample_choiceservice', 'value') sample_date = task_utils.get_parameter_value(parameters, 'sample_date', 'value') sample_datetime = task_utils.get_parameter_value(parameters, 'sample_datetime', 'value') sample_field = task_utils.get_parameter_value(parameters, 'sample_field', 'value') sample_fieldlist = task_utils.get_parameter_value(parameters, 'sample_fieldlist', 'value') sample_password = task_utils.get_parameter_value(parameters, 'sample_password', 'value') sample_textarea = task_utils.get_parameter_value(parameters, 'sample_textarea', 'value') outfile.write("Sample CatalogPath (sample_catalog, value) @ " + sample_catalog + "\n\n") outfile.write("Sample CheckBox (sample_checkbox, value) @ " + sample_checkbox + "\n\n") outfile.write("Sample StringChoice (sample_choice, value) @ " + sample_choice + "\n\n") outfile.write("Sample Folder (sample_folder, value) @ " + sample_folder + "\n\n") outfile.write("Sample Geometry (sample_geometry, value) @ " + sample_geometry + "\n\n") outfile.write("Sample Integer (sample_integer, value) @ " + sample_integer + "\n\n") outfile.write("Sample MapView (sample_mapview, value) @ " + sample_mapview + "\n\n") outfile.write("Sample Projection (sample_projection, value) @ " + sample_projection + "\n\n") outfile.write("Sample String (sample_string, value) @ " + sample_string + "\n\n") outfile.write("Sample StringChoiceCombo (sample_choicecombo, value) @ " + sample_choicecombo + "\n\n") outfile.write("Sample StringChoiceService (sample_choiceservice, value) @ " + sample_choiceservice + "\n\n") outfile.write("Sample Date (sample_date, value) @ " + sample_date + "\n\n") outfile.write("Sample DateTime (sample_datetime, value) @ " + sample_datetime + "\n\n") outfile.write("Sample Field (sample_field, value) @ " + sample_field + "\n\n") outfile.write("Sample FieldList (sample_fieldlist, value) @ " + sample_fieldlist + "\n\n") outfile.write("Sample Password (sample_password, value) @ " + sample_password + "\n\n") outfile.write("Sample TextArea (sample_textarea, value) @ " + sample_textarea + "\n\n") status_writer.send_status(_('Stopping process ...')) outfile.write("=== STOPPING ===\n\n") outfile.close() return
def execute(request): outfile = open('c:\\temp\\outfile.txt', 'w') status_writer.send_status(_('Starting process ...')) outfile.write("=== STARTING ===\n\n") outfile.write( "Writing parameter values passed from Voyager. Format: 'Parameter Type (param name, value property)'\n\n" ) parameters = request['params'] sample_catalog = task_utils.get_parameter_value(parameters, 'sample_catalog', 'value') sample_checkbox = str( task_utils.get_parameter_value(parameters, 'sample_checkbox', 'value')) sample_choice = task_utils.get_parameter_value(parameters, 'sample_choice', 'value') sample_folder = task_utils.get_parameter_value(parameters, 'sample_folder', 'value') sample_geometry = task_utils.get_parameter_value(parameters, 'sample_geometry', 'wkt') sample_integer = str( task_utils.get_parameter_value(parameters, 'sample_integer', 'value')) sample_mapview = task_utils.get_parameter_value(parameters, 'sample_mapview', 'extent') sample_projection = str( task_utils.get_parameter_value(parameters, 'sample_projection', 'code')) sample_string = task_utils.get_parameter_value(parameters, 'sample_string', 'value') sample_choicecombo = task_utils.get_parameter_value( parameters, 'sample_choicecombo', 'value') sample_choiceservice = task_utils.get_parameter_value( parameters, 'sample_choiceservice', 'value') sample_date = task_utils.get_parameter_value(parameters, 'sample_date', 'value') sample_datetime = task_utils.get_parameter_value(parameters, 'sample_datetime', 'value') sample_field = task_utils.get_parameter_value(parameters, 'sample_field', 'value') sample_fieldlist = task_utils.get_parameter_value(parameters, 'sample_fieldlist', 'value') sample_password = task_utils.get_parameter_value(parameters, 'sample_password', 'value') sample_textarea = task_utils.get_parameter_value(parameters, 'sample_textarea', 'value') outfile.write("Sample CatalogPath (sample_catalog, value) @ " + sample_catalog + "\n\n") outfile.write("Sample CheckBox (sample_checkbox, value) @ " + sample_checkbox + "\n\n") outfile.write("Sample StringChoice (sample_choice, value) @ " + sample_choice + "\n\n") outfile.write("Sample Folder (sample_folder, value) @ " + sample_folder + "\n\n") outfile.write("Sample Geometry (sample_geometry, value) @ " + sample_geometry + "\n\n") outfile.write("Sample Integer (sample_integer, value) @ " + sample_integer + "\n\n") outfile.write("Sample MapView (sample_mapview, value) @ " + sample_mapview + "\n\n") outfile.write("Sample Projection (sample_projection, value) @ " + sample_projection + "\n\n") outfile.write("Sample String (sample_string, value) @ " + sample_string + "\n\n") outfile.write("Sample StringChoiceCombo (sample_choicecombo, value) @ " + sample_choicecombo + "\n\n") outfile.write( "Sample StringChoiceService (sample_choiceservice, value) @ " + sample_choiceservice + "\n\n") outfile.write("Sample Date (sample_date, value) @ " + sample_date + "\n\n") outfile.write("Sample DateTime (sample_datetime, value) @ " + sample_datetime + "\n\n") outfile.write("Sample Field (sample_field, value) @ " + sample_field + "\n\n") outfile.write("Sample FieldList (sample_fieldlist, value) @ " + sample_fieldlist + "\n\n") outfile.write("Sample Password (sample_password, value) @ " + sample_password + "\n\n") outfile.write("Sample TextArea (sample_textarea, value) @ " + sample_textarea + "\n\n") status_writer.send_status(_('Stopping process ...')) outfile.write("=== STOPPING ===\n\n") outfile.close() return
def get_items(input_items, out_workspace): """Returns the list of items to package.""" layers = [] files = [] errors = 0 skipped = 0 for i, item in enumerate(input_items, 1): try: if item.endswith('.lyr'): layers.append(arcpy.mapping.Layer(item)) else: # Is the item a mxd data frame. map_frame_name = task_utils.get_data_frame_name(item) if map_frame_name: item = item.split('|')[0].strip() dsc = arcpy.Describe(item) if dsc.dataType in ('FeatureClass', 'ShapeFile', 'RasterDataset'): if os.path.basename(item) in [l.name for l in layers]: layer_name = '{0}_{1}'.format(os.path.basename(item), i) else: layer_name = os.path.basename(item) if dsc.dataType == 'RasterDataset': arcpy.MakeRasterLayer_management(item, layer_name) else: arcpy.MakeFeatureLayer_management(item, layer_name) layers.append(arcpy.mapping.Layer(layer_name)) elif dsc.dataType in ('CadDrawingDataset', 'FeatureDataset'): arcpy.env.workspace = item for fc in arcpy.ListFeatureClasses(): if os.path.basename(fc) in [l.name for l in layers]: layer_name = '{0}_{1}'.format(os.path.basename(fc), i) else: layer_name = os.path.basename(fc) arcpy.MakeFeatureLayer_management(fc, layer_name) layers.append(arcpy.mapping.Layer(layer_name)) arcpy.env.workspace = out_workspace elif dsc.dataType == 'MapDocument': in_mxd = arcpy.mapping.MapDocument(item) if map_frame_name: df = arcpy.mapping.ListDataFrames(in_mxd, map_frame_name)[0] mxd_layers = arcpy.mapping.ListLayers(in_mxd, data_frame=df) else: mxd_layers = arcpy.mapping.ListLayers(in_mxd) layers += mxd_layers elif item.endswith('.gdb') or item.endswith('.mdb'): arcpy.env.workspace = item for fc in arcpy.ListFeatureClasses(): if os.path.basename(fc) in [l.name for l in layers]: layer_name = '{0}_{1}'.format(os.path.basename(fc), i) else: layer_name = os.path.basename(fc) arcpy.MakeFeatureLayer_management(fc, layer_name) layers.append(arcpy.mapping.Layer(layer_name)) for raster in arcpy.ListRasters(): if os.path.basename(raster) in [l.name for l in layers]: layer_name = '{0}_{1}'.format(os.path.basename(raster), i) else: layer_name = os.path.basename(raster) arcpy.MakeRasterLayer_management(raster, layer_name) layers.append(arcpy.mapping.Layer(layer_name)) datasets = arcpy.ListDatasets('*', 'Feature') for fds in datasets: arcpy.env.workspace = fds for fc in arcpy.ListFeatureClasses(): if os.path.basename(fc) in [l.name for l in layers]: layer_name = '{0}_{1}'.format(os.path.basename(fc), i) else: layer_name = os.path.basename(fc) arcpy.MakeFeatureLayer_management(fc, layer_name) layers.append(arcpy.mapping.Layer(layer_name)) arcpy.env.workspace = item arcpy.env.workspace = out_workspace elif dsc.dataType == 'File' or dsc.dataType == 'TextFile': files.append(item) else: status_writer.send_status(_('Invalid input type: {0}').format(item)) skipped_reasons[item] = 'Invalid input type' skipped += 1 continue except Exception as ex: status_writer.send_status(_('Cannot package: {0}: {1}').format(item, repr(ex))) errors += 1 errors_reasons[item] = repr(ex) pass return layers, files, errors, skipped
def execute(request): """Package inputs to an Esri map or layer package. :param request: json as a dict. """ errors = 0 skipped = 0 layers = [] files = [] app_folder = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) parameters = request['params'] out_format = task_utils.get_parameter_value(parameters, 'output_format', 'value') summary = task_utils.get_parameter_value(parameters, 'summary') tags = task_utils.get_parameter_value(parameters, 'tags') output_file_name = task_utils.get_parameter_value(parameters, 'output_file_name') if not output_file_name: output_file_name = 'package_results' # Get the clip region as an extent object. clip_area = None try: clip_area_wkt = task_utils.get_parameter_value(parameters, 'processing_extent', 'wkt') clip_area = task_utils.get_clip_region(clip_area_wkt) except (KeyError, ValueError): pass out_workspace = os.path.join(request['folder'], 'temp') if not os.path.exists(out_workspace): os.makedirs(out_workspace) num_results, response_index = task_utils.get_result_count(parameters) # if num_results > task_utils.CHUNK_SIZE: # Query the index for results in groups of 25. query_index = task_utils.QueryIndex(parameters[response_index]) fl = query_index.fl query = '{0}{1}{2}'.format(sys.argv[2].split('=')[1], '/select?&wt=json', fl) fq = query_index.get_fq() if fq: groups = task_utils.grouper(range(0, num_results), task_utils.CHUNK_SIZE, '') query += fq elif 'ids' in parameters[response_index]: groups = task_utils.grouper(list(parameters[response_index]['ids']), task_utils.CHUNK_SIZE, '') else: groups = task_utils.grouper(range(0, num_results), task_utils.CHUNK_SIZE, '') headers = {'x-access-token': task_utils.get_security_token(request['owner'])} status_writer.send_status(_('Starting to process...')) for group in groups: if fq: results = requests.get(query + "&rows={0}&start={1}".format(task_utils.CHUNK_SIZE, group[0]), headers=headers) elif 'ids' in parameters[response_index]: results = requests.get(query + '{0}&ids={1}'.format(fl, ','.join(group)), headers=headers) else: results = requests.get(query + "&rows={0}&start={1}".format(task_utils.CHUNK_SIZE, group[0]), headers=headers) input_items = task_utils.get_input_items(results.json()['response']['docs']) if not input_items: input_items = task_utils.get_input_items(parameters[response_index]['response']['docs']) layers, files, errors, skipped = get_items(input_items, out_workspace) # else: # input_items = task_utils.get_input_items(parameters[response_index]['response']['docs']) # layers, files, errors, skipped = get_items(input_items, out_workspace) if errors == num_results: status_writer.send_state(status.STAT_FAILED, _('No results to package')) return try: if out_format == 'MPK': shutil.copyfile(os.path.join(app_folder, 'supportfiles', 'MapTemplate.mxd'), os.path.join(out_workspace, 'output.mxd')) mxd = arcpy.mapping.MapDocument(os.path.join(out_workspace, 'output.mxd')) if mxd.description == '': mxd.description = os.path.basename(mxd.filePath) df = arcpy.mapping.ListDataFrames(mxd)[0] for layer in layers: arcpy.mapping.AddLayer(df, layer) mxd.save() status_writer.send_status(_('Generating {0}. Large input {1} will take longer to process.'.format('MPK', 'results'))) if arcpy.GetInstallInfo()['Version'] == '10.0': arcpy.PackageMap_management(mxd.filePath, os.path.join(os.path.dirname(out_workspace), '{0}.mpk'.format(output_file_name)), 'PRESERVE', extent=clip_area) elif arcpy.GetInstallInfo()['Version'] == '10.1': arcpy.PackageMap_management(mxd.filePath, os.path.join(os.path.dirname(out_workspace), '{0}.mpk'.format(output_file_name)), 'PRESERVE', extent=clip_area, ArcGISRuntime='RUNTIME', version='10', additional_files=files, summary=summary, tags=tags) else: arcpy.PackageMap_management(mxd.filePath, os.path.join(os.path.dirname(out_workspace), '{0}.mpk'.format(output_file_name)), 'PRESERVE', extent=clip_area, arcgisruntime='RUNTIME', version='10', additional_files=files, summary=summary, tags=tags) # Create a thumbnail size PNG of the mxd. task_utils.make_thumbnail(mxd, os.path.join(request['folder'], '_thumb.png')) else: status_writer.send_status(_('Generating {0}. Large input {1} will take longer to process.'.format('LPK', 'results'))) for layer in layers: if layer.description == '': layer.description = layer.name if arcpy.GetInstallInfo()['Version'] == '10.0': arcpy.PackageLayer_management(layers, os.path.join(os.path.dirname(out_workspace), '{0}.lpk'.format(output_file_name)), 'PRESERVE', extent=clip_area, version='10') else: arcpy.PackageLayer_management(layers, os.path.join(os.path.dirname(out_workspace), '{0}.lpk'.format(output_file_name)), 'PRESERVE', extent=clip_area, version='10', additional_files=files, summary=summary, tags=tags) # Create a thumbnail size PNG of the mxd. task_utils.make_thumbnail(layers[0], os.path.join(request['folder'], '_thumb.png')) except (RuntimeError, ValueError, arcpy.ExecuteError) as ex: status_writer.send_state(status.STAT_FAILED, repr(ex)) return # Update state if necessary. if errors > 0 or skipped: status_writer.send_state(status.STAT_WARNING, _('{0} results could not be processed').format(errors + skipped)) task_utils.report(os.path.join(request['folder'], '__report.json'), num_results - (skipped + errors), skipped, errors, errors_reasons, skipped_reasons)