POST
|
Thanks for the input. My question prompt was already lengthy, so I didn't provide much context about what this automation is for. I work on site investigation and remediation in the environmental consulting industry and I plan to use this automation on a site-to-site basis, meaning the interpolation won't ever be used for more than a parcel of land. To give clients a rough idea of where the highest contamination lies on their site, a contour map is often made to include in reports. Usually only 3 to 5 contour lines are used across the site to represent how the concentration values are distributed based on the limited samples collected. The rasters I create in the automated workflow are intermediate data to be passed to the contour tool. I have compared my hand drawn contours to the outputs of every "suitable" interpolation method and Kriging has always given me the most accurate representation compared to the hand-drawn contours. These sites are often already so small and there are only a select few number of samples (between 6 to 15, based on the budget of the project) to go into analysis, that this is more for visual representation/storytelling than anything. While I agree with your insight and wouldn't use this automation tool for a different context, it seems that Kriging is the best method for the final outputs I am trying to acquire. I'm happy to read any additional thoughts on the matter, of course.
... View more
04-27-2020
11:05 AM
|
2
|
1
|
2969
|
POST
|
Hi all. Thanks for the comments. Regarding the python issue I was asking about, I solved the issue by creating a derived parameter for the Kriging outputs. First I imported the correct module... import arcgisscripting gp = arcgisscripting.create() Then inside the for-loop I used the gp module for the Kriging tool, appended the outputs from to a list, defined this list with SetParameter(), and concluded by adding a symbology property for this parameter in the script wizard. #Interpolation Tool raster_list = [] for z_field in fieldlist: kriging_output = os.path.join(repository, str(z_field)) out_kriging = arcpy.gp.Kriging_sa(in_point_features, z_field, kriging_output, "Spherical") raster_list.append(kriging_output) arcpy.AddMessage(raster_list) arcpy.SetParameter(4, raster_list) #Type= Derived, Multivariate, Raster Dataset, Symbology= krigingsymbology.lyr
... View more
04-27-2020
10:20 AM
|
1
|
0
|
444
|
POST
|
Thanks, Dan! That did not solve the issue I am having, but it was good to fix anyhow.
... View more
04-25-2020
08:08 PM
|
0
|
1
|
2969
|
POST
|
Hello, I am trying to make a script that runs the Spatial Analyst Kriging interpolation tool on a batch of z values/fields in a point feature class. I am using the script wizard to set up the parameters, which is why you don't see the GetParameterAsText properties being defined in my code. I have run the script successfully in ArcMap 10.7.1, however I want to set symbology automatically for each Kriging output. I am failing to write the code for this and am hoping to receive some advice. Please note that I am a beginner in Python and am still learning to make customized scripts. The issue is (despite reading help pages) I can't successfully access the output rasters (that I save with the .save() function) in my code to be used as an input for another tool. I have been debugging lots by running the Apply Symbology From Layer tool on only individual rasters from my Kriging outputs, but the goal is to run it as a loop on all of them. This is what I have found & tried: 1. The ApplySymbologyFromLayer tool works when I run it manually in the ArcMap Python Window. This is all I have to type since the working environment is set: arcpy.ApplySymbologyFromLayer_management("Benzene", r"G:\586\FinalProject\krigingsymbology.lyr"). 2. In my code, I have tried to both write the full raw path and use os.join() to access the rasters 3. The outputs I am trying to access are FGDBR rasters. This is what I have thought of for potential solutions, but I don't want to resort to these... 1. Using the arcpy.gp.Kriging_sa instead because its parameters require a specified output name to be set, which is not the case for arcpy.sa. I could try to set the symbology property for the output parameter in the script wizard. 2. Create a whole separate tool that simply allows the Apply Symbology From Layer Tool to be run on multiple user-selected rasters. Any help or thoughts appreciated, thank you! This is my code (also attached below) that includes my most recent attempt to access one of the output rasters called Benzene: This is the error: Running script KrigingMultipleFields... [u'G:\\GIS\\OakGrove.gdb\\TPHg', u'G:\\GIS\\OakGrove.gdb\\Benzene'] Failed script KrigingMultipleFields... Traceback (most recent call last): File "G:\GIS\kriging.py", line 87, in <module> arcpy.ApplySymbologyFromLayer_management(r"G:\GIS\OakGrove.gdb\Benzene", r"G:\GIS\krigingsymbology.lyr") File "C:\Program Files (x86)\ArcGIS\Desktop10.7\ArcPy\arcpy\management.py", line 6944, in ApplySymbologyFromLayer raise e ExecuteError: Failed to execute. Parameters are not valid. ERROR 000732: Input Layer: Dataset G:\GIS\OakGrove.gdb\Benzene does not exist or is not supported ERROR 000968: The symbol layer does not match the input layer Failed to execute (ApplySymbologyFromLayer). Failed to execute (KrigingMultipleFields). Failed at Fri Apr 24 15:39:38 2020 (Elapsed Time: 34.49 seconds)
... View more
04-24-2020
05:28 PM
|
0
|
10
|
3916
|
Title | Kudos | Posted |
---|---|---|
1 | 04-27-2020 10:20 AM | |
2 | 04-27-2020 11:05 AM |
Online Status |
Offline
|
Date Last Visited |
11-11-2020
02:24 AM
|