My apologies, the da.Walk command was added at 10.1 Service Pack 1. Based on the message I'm guessing you have 10.1 final (no service packs). If you're able to install the service pack it'll fix that.
My apologies, the da.Walk command was added at 10.1 Service Pack 1. Based on the message I'm guessing you have 10.1 final (no service packs). If you're able to install the service pack it'll fix that.
The following code (10.1 + only) walks through a directory and finds FeatureClasses (this example assumes a folder of "zip" files).
It then copies each one into a fGDB. You can change what it does, but the logic in it should start you off.
You'll notice that a directory is created inside the scratchFolder (the variable "ZipFolder") - this is where the uploaded ZipFile is extracted to. Then the code looks in there.import arcpy import zipfile import os inFile = arcpy.GetParameterAsText(0) # Create a folder in the scratch directory to extract zip to zipFolder = os.path.join(arcpy.env.scratchFolder, "zipContents") os.mkdir(zipFolder) # Extract the zip contents zip2Extract = zipfile.ZipFile(inFile, 'r') zip2Extract.extractall(zipFolder) zip2Extract.close() # Create a folder in the scratch directory to hold the fgdb which will be downloaded fgdbFolder = os.path.join(arcpy.env.scratchFolder, "fgdbOutput") os.mkdir(fgdbFolder) # Work through all the FeatureClasses inside the extracted zip folder for dirpath, dirnames, filenames in arcpy.da.Walk(zipFolder, datatype="FeatureClass"): for filename in filenames: # You could replace the code below here with your own code to do what you want.... arcpy.AddMessage("Copying: {}".format(filename)) # Strip .shp from the filename when merging shapefiles if filename.endswith("shp"): outFilename = filename[:-4] else: outFilename = filename # Copy each featureclass into the output.gdb arcpy.CopyFeatures_management(os.path.join(dirpath, filename), os.path.join(fgdbFolder, "output.gdb", outFilename))
Hi,
Have you resolved your problem? If not, try to change your scratch folder to a different place on Desktop when running your script tool. sometimes the default folder in the User directory has permission issue.
You can also use model tool, but I am not 100% sure if it works if you are using web app as Client. Give it a try anyway. You can use Calculate Value with absolute path (String data type) of the shape file as the input. Then use Copy Feature to copy the input file so Server will save the uploaded input shape file in the scratch gdb, and finally do the Buffer or any other Analysis with the uploaded file.
I attached two gpk files for your reference - calcbuffer100.gpk (for 10.0 Server) and calcbuffer101.gpk (For 10.1 Server). Both models are almost the same, except in 10.1 model you have to set the output of Calculate Value as an output parameter, otherwise you won't get the input shape on the server. I have to figured out if this is a bug or as design. Let me know if this helps.
Best,
Shing
Hy,
I didn't yet used it in the FlexViewer but only manually over rest.
But it should point you to the right direction:
enable "upload" on your geoprocessing service
upload your file to the gp-service and remember the upload-id
call your gp-service with the datafile paramater as the text below:
For GPDatafile parameter, you have to indicate this full json representation of the upload item:
parameter = {"itemID":"i80dfa12f-52ed-4841-94ff-37f9c3f5dd6f"}
Tom
The following code (10.1 + only) walks through a directory and finds FeatureClasses (this example assumes a folder of "zip" files).
It then copies each one into a fGDB. You can change what it does, but the logic in it should start you off.
You'll notice that a directory is created inside the scratchFolder (the variable "ZipFolder") - this is where the uploaded ZipFile is extracted to. Then the code looks in there.import arcpy import zipfile import os inFile = arcpy.GetParameterAsText(0) # Create a folder in the scratch directory to extract zip to zipFolder = os.path.join(arcpy.env.scratchFolder, "zipContents") os.mkdir(zipFolder) # Extract the zip contents zip2Extract = zipfile.ZipFile(inFile, 'r') zip2Extract.extractall(zipFolder) zip2Extract.close() # Create a folder in the scratch directory to hold the fgdb which will be downloaded fgdbFolder = os.path.join(arcpy.env.scratchFolder, "fgdbOutput") os.mkdir(fgdbFolder) # Work through all the FeatureClasses inside the extracted zip folder for dirpath, dirnames, filenames in arcpy.da.Walk(zipFolder, datatype="FeatureClass"): for filename in filenames: # You could replace the code below here with your own code to do what you want.... arcpy.AddMessage("Copying: {}".format(filename)) # Strip .shp from the filename when merging shapefiles if filename.endswith("shp"): outFilename = filename[:-4] else: outFilename = filename # Copy each featureclass into the output.gdb arcpy.CopyFeatures_management(os.path.join(dirpath, filename), os.path.join(fgdbFolder, "output.gdb", outFilename))