def conversion(outRaster, raster): name = os.path.split(raster)[1][:-4] # 按掩膜提取 outExtractByMask = None # 常熟市溯源范围矢量文件 inMaskData = u"E:\\常熟溯源\\矢量\\常熟边界\\常熟市溯源范围.shp" # 中间文件 outCliptif = outpath + '\\' + fileslist[2] + "\\Clip_" + name + '.tif' # 剪裁 try: # Execute ExtractByMask arcpy.Clip_management(outRaster, "#", outCliptif, inMaskData, "#", "ClippingGeometry", "NO_MAINTAIN_EXTENT") except Exception as err: arcpy.AddMessage("------Clip_management") arcpy.AddMessage(err) # 重采样 # resampletif=outpath+"\\"+os.path.split(raster)[1][:-4]+'_resampletif_'+getTime()+'.tif' # arcpy.Resample_management(outExtractByMask, resampletif, "0.0005", "BILINEAR") inPointFeatures = outpath + '\\' + fileslist[ 3] + "\\RasterToPoint_" + name + '.shp' arcpy.AddMessage("------栅格转点开始。。。") try: arcpy.RasterToPoint_conversion(outCliptif, inPointFeatures, 'VALUE') except: arcpy.AddMessage('-------' + inPointFeatures + " 已经存在。。。") arcpy.AddMessage("------栅格转点完成") # 克里金插值 Krigingfile = os.path.join(outpath + '\\' + fileslist[4], 'Kriging_' + name + ".tif") field = "GRID_CODE" cellSize = 0.00055 outVarRaster = "" kModel = "Spherical" kRadius = 20000 # Execute Kriging try: arcpy.Kriging_3d(inPointFeatures, field, Krigingfile, kModel, cellSize, kRadius, outVarRaster) except: arcpy.AddMessage('------RasterToPoint_conversion Failed') # 常熟市范围掩膜 changshumask = u'E:\\常熟溯源\\矢量\\常熟边界\\常熟边界缓冲区-去水域.shp' outtif = os.path.join( outpath + '\\' + fileslist[5], 'Changshumask_' + os.path.split(raster)[1][:-4] + ".tif") # 按掩膜提取 try: # Execute ExtractByMask outMask = arcpy.sa.ExtractByMask(Krigingfile, changshumask) outCon = arcpy.sa.Con(arcpy.sa.IsNull(outMask), 0.0001, outMask) outCon.save(outtif) except Exception as err: arcpy.AddMessage("------ExtractByMask Failed") arcpy.AddMessage(err) createTraceFiles(outtif, name)
def krig(a, b, c, CC): #空间插值 rows = arcpy.da.SearchCursor(a, ['FID']) for row in rows: y = row[0] del rows, row if y >= 12: p = "Variable %d" % (12) else: p = "Variable %d" % (y - 1) arcpy.Kriging_3d(a, b, c, "Spherical", CC, p) return b
def Krig(inPointFeatures, zField, outRaster, in_Mask): if os.path.exists(outRaster): return kModel = "CIRCULAR" cellSize = 0.02 total_raster = os.path.join(os.path.dirname(outRaster), os.path.basename(outRaster) + "Kr") arcpy.CheckOutExtension("GeoStats") arcpy.Kriging_3d(inPointFeatures, zField, total_raster, kModel, cellSize) outExtractByMask = ExtractByMask(total_raster, in_Mask) arcpy.Delete_management(total_raster) outExtractByMask.save(outRaster) arcpy.BuildPyramids_management(outRaster)
def conversion(outRaster,raster): # 按掩膜提取 outExtractByMask=None # 常熟市溯源范围矢量文件 inMaskData="F:\\20190905\\data\\changshurangle\\changshutrace.shp" # 中间文件 inPointFeatures=outpath+"\\"+os.path.split(raster)[1][:-4]+'_'+getTime()+'.shp' try: # Execute ExtractByMask outExtractByMask = arcpy.sa.ExtractByMask(outRaster, inMaskData) except Exception as err: arcpy.AddMessage("------ExtractByMask Failed") arcpy.AddMessage(err) return # 重采样 # resampletif=outpath+"\\"+os.path.split(raster)[1][:-4]+'_resampletif_'+getTime()+'.tif' # arcpy.Resample_management(outExtractByMask, resampletif, "0.0005", "BILINEAR") arcpy.AddMessage("------栅格转点开始。。。") try: arcpy.RasterToPoint_conversion(outExtractByMask, inPointFeatures, 'VALUE') except : arcpy.AddMessage('-------'+inPointFeatures+" 已经存在。。。") arcpy.AddMessage("------栅格转点完成") # 克里金插值 titfile=os.path.join(outpath,os.path.split(raster)[1][:-4]+".tif") field = "GRID_CODE" cellSize =0.0005 outVarRaster = "" kModel = "Spherical" kRadius = 20000 # Execute Kriging try: arcpy.Kriging_3d(inPointFeatures, field, titfile, kModel, cellSize, kRadius, outVarRaster) except : Arcpy.AddMessage('------RasterToPoint_conversion Failed') arcpy.AddMessage("------栅格转点开始。。。") outPointFeatures=outpath+"\\"+os.path.split(raster)[1][:-4]+'.shp' try: arcpy.RasterToPoint_conversion(titfile, outPointFeatures, 'VALUE') except : arcpy.AddMessage('-------'+inPointFeatures+" 已经存在。。。") arcpy.AddMessage("------栅格转点完成") selectByLocatin(outPointFeatures)
def publishdayRasters(): myname = 'publishdayRasters' defaultworkspace = r'C:\TrabajoFinalMasterESRI\Data\DF_Worskpace' rasterDefaultfolder = r'C:\TrabajoFinalMasterESRI\Data\Rasters' #creamos la carpeta de los rasters del dia now = datetime.now() dayfolder = now.strftime("%d%m%Y") rasterDefaultfolder = os.path.join(rasterDefaultfolder, dayfolder) if not os.path.isdir(rasterDefaultfolder): os.mkdir(rasterDefaultfolder) # Set environment settings env.workspace = defaultworkspace env.overwriteOutput = True # Check out the ArcGIS Spatial Analyst extension license arcpy.CheckOutExtension("Spatial") arcpy.CheckOutExtension("3D") listfields = ["B1", "B2", "B3", "W1", "W2", "M1"] for fieldname in listfields: try: logging.debug('----->' + myname) # Set local variables inFeatures = "Database Connections\[email protected]\canyons.owner.MeteoPoints" cellSize = 15000 power = 2 searchRadius = RadiusVariable(12) #sitios de salida de los rasters. outVarRaster = os.path.join(rasterDefaultfolder, fieldname + '_' + dayfolder) dbraster = "Database Connections\[email protected]\canyons.owner." + fieldname kModel = "CIRCULAR" cellSize = 15000 kRadius = 20000 # Execute Kriging arcpy.Kriging_3d(inFeatures, fieldname, outVarRaster, kModel, cellSize, kRadius) #Pendiente de validar clip_features = "Database Connections\[email protected]\canyons.owner.Admin\canyons.owner.pais" #aqui harIamos el clip rectangle = extents(clip_features) arcpy.Clip_management( in_raster=outVarRaster, rectangle=rectangle, out_raster=dbraster, in_template_dataset=clip_features, clipping_geometry="ClippingGeometry", maintain_clipping_extent="NO_MAINTAIN_EXTENT") #Construimos las piramides de los rastsers arcpy.BatchBuildPyramids_management(dbraster) logging.debug('<-----' + myname) except Exception as e: logging.error('Error ejecutando ' + myname) logging.error('El raster que ha dado problemas es el ' + fieldname) arcpy.CreateRasterDataset_management( out_path="Database Connections/[email protected]", out_name="B1", cellsize="", pixel_type="8_BIT_UNSIGNED", raster_spatial_reference= "PROJCS['ETRS_1989_UTM_Zone_30N',GEOGCS['GCS_ETRS_1989',DATUM['D_ETRS_1989',SPHEROID['GRS_1980',6378137.0,298.257222101]],PRIMEM['Greenwich',0.0],UNIT['Degree',0.0174532925199433]],PROJECTION['Transverse_Mercator'],PARAMETER['False_Easting',500000.0],PARAMETER['False_Northing',0.0],PARAMETER['Central_Meridian',-3.0],PARAMETER['Scale_Factor',0.9996],PARAMETER['Latitude_Of_Origin',0.0],UNIT['Meter',1.0]]", number_of_bands="1", config_keyword="", pyramids="PYRAMIDS -1 NEAREST DEFAULT 75 NO_SKIP", tile_size="128 128", compression="LZ77", pyramid_origin="-5120763,26772284 9997963,94293634") logging.error(e.message) logging.debug( 'Todos los rasters de los campos se han creado correctamente')
arcpy.AddMessage("Applying Symbology...") mxd = arcpy.mapping.MapDocument("CURRENT") df = arcpy.mapping.ListDataFrames(mxd, "*")[0] newlayer = arcpy.mapping.Layer(pointsVar) arcpy.mapping.AddLayer(df, newlayer, "TOP") if arcpy.Exists(SymbologyPath + r"\Symbology_Template.lyr"): symbolLyr = SymbologyPath + r"\Symbology_Template.lyr" #Layer file with desired symbology lyr = arcpy.mapping.ListLayers(mxd, outName, df)[0] arcpy.ApplySymbologyFromLayer_management(lyr, symbolLyr) #Apply symbology else: arcpy.AddMessage( "Symbology cannot be applied, Missing Symbology_Template.lyr") #and now we Kriging # Set environment settings env.workspace = csvPath # Set local variables #inFeatures = "ca_ozone_pts.shp" field = "OZONE" #outRaster = "C:/output/krigoutput02" cellSize = 2000 #outVarRaster = "C:/output/outvariance" kModel = "Spherical" kRadius = 20000 # Execute Kriging #arcpy.Kriging_3d(inFeatures, field, outRaster, kModel, cellSize, kRadius, outVarRaster) arcpy.Kriging_3d(pointsVar, "Cri_Weight", outfile + '\\' + "Krigout", kModel, '', '', outfile + '\\' + "outVar")
inMaskData = mask_path + "newstates" + ".shp" arcpy.CheckOutExtension("Spatial") outExtractByMask = ExtractByMask(inRaster, inMaskData) outExtractByMask.save(out_path + "allIDW" + str(year)) arcpy.Delete_management(out_raster) print "states " + str(year) #Build pyramid from raster inras = out_path + "allIDW" + str(year) arcpy.BuildPyramids_management(inras) print "Build pyramid" + str(year) # Execute Kriging of all monitoring sites outRaster = out_path + "kr" + str(year) kModel = "CIRCULAR" arcpy.Kriging_3d(inPointFeatures, zField, outRaster, kModel, cellSize) #Extract by mask the whole states inRaster = out_path + "kr" + str(year) inMaskData = mask_path + "newstates" + ".shp" arcpy.CheckOutExtension("Spatial") outExtractByMask = ExtractByMask(inRaster, inMaskData) outExtractByMask.save(out_path + "krig" + str(year)) arcpy.Delete_management(outRaster) print "states " + str(year) #Build pyramid from raster inras = out_path + "krig" + str(year) arcpy.BuildPyramids_management(inras) print "Build pyramid" + str(year)
for j in range(0, nrows): gross_Q = data_all.cell_value( j, 3) * 100 #..............最高低气温列数修改,刘可群*100 list.append(gross_Q) for row in cursor: l_List = list[(row[0] - 1)] row[1] = l_List #print row cursor.updateRow(row) # 执行克里金插值,prcp用try '''try: arcpy.env.extent = arcpy.Extent(376995.788286, 4835618.63483, 1393995.78829, 5934618.63483) arcpy.Kriging_3d(i_shp_path, "radi", o_interpolation_path, "Spherical", 1000, "number_of_points") except: print ("data in %s are all zero" % i_path)''' arcpy.env.extent = arcpy.Extent(376995.788286, 4835618.63483, 1393995.78829, 5934618.63483) arcpy.Kriging_3d(i_shp_path, "radi", o_interpolation_path, "Spherical", 1000, "number_of_points") # 裁剪 '''try: arcpy.Clip_management(o_interpolation_path, "377015.416108 4836032.834218 1393317.266188 5934372.606657", o_dat_path, "D:/1/my boundary/heilongjiang_123.shp", "", "ClippingGeometry") except: print ("cannot excute interpolation becasue of bad dataset prcp_%d" % doy)''' arcpy.Clip_management( o_interpolation_path, "377015.416108 4836032.834218 1393317.266188 5934372.606657", o_dat_path, "D:/1/my boundary/heilongjiang_123.shp", 0, "ClippingGeometry")
#Check out the ArcGIS Spatial Anapyst extension license arcpy.CheckOutExtension("Spatial") #Setting initial env.workspace = "C:\Users\hero\Desktop\workspace\geodata.gdb" fcList = arcpy.ListFeatureClasses() for fc in fcList: print(fc) fieldList = arcpy.ListFields(env.workspace + "\\" + fc) print (env.workspace + "\\" + fc) for field in fieldList: if (field.type == u"Double"): print(field.name) inFeatures = fc print(inFeatures) #Output settings outRaster = env.workspace + "\\" + "KRe_" + field.name + fc outVarRaster = env.workspace + "\\" + "KVar_" + field.name + fc print (outRaster) print (outVarRaster) #Model setting kModel = "Gaussian" # Execute Kriging arcpy.Kriging_3d(inFeatures, field.name , outRaster, kModel, out_variance_prediction_raster = outVarRaster) print(field.name + "success")
def adf(fields): for field in fields: for i in range(24): names.append(field+str(i+1)) adf(['temp','pre','hum','wsp']) #set environment mask env.mask = 'C:/workspace/shps/北京边界.shp' for i in range(1,3): day_count = i in_table = os.path.join(out_path,'day%d.shp'%(day_count)) arcpy.DefineProjection_management(in_table, spRef) out_lyr = 'pp_day%d'%(day_count) arcpy.MakeXYEventLayer_management(in_table, 'long', 'lat', out_lyr, spRef) inFeatures = out_lyr for name in names: field = name out_raster = "r1_day%d_%s"%(day_count,name) kModel = 'Spherical' cell_size = 0.003758 search_radius = 0.006418 out_var = "v1_day%d_%s"%(day_count,name) # Execute Kriging try: arcpy.Kriging_3d(inFeatures, field, out_raster, kModel, cell_size, search_radius, out_var) print("success:day %d -- field %s"%(day_count,name)) except: print("failed:day %d -- field %s"%(day_count,name))