目标是做一个arcgis的插件,但是似乎arcgis和pycuda不兼容= =。。。。搞半天都没弄好,只能把读数据、处理数据和显示数据分成三个部分来做
数据读取
import arcpy
import numpy
from arcpy.sa import *
import pycuda.autoinit
import pycuda.driver as cuda
import numpy as np
import math
import sys
from timeit import default_timer as timer
import pycuda.gpuarray as gpuarray
from pycuda.compiler import SourceModule
reload(sys)
sys.setdefaultencoding('utf8')
# get raster layer
Input_rasterLyr = arcpy.GetParameterAsText(0)
arcpy.AddMessage(Input_rasterLyr)
# turn layer to raster
InputRatser = Raster(Input_rasterLyr)
# turn Raster To NumPyArray
myArray = arcpy.RasterToNumPyArray(InputRatser)
# get width and height of myArray
desc = arcpy.Describe(InputRatser)
raster_width = desc.width
raster_height = desc.height
extent = desc.Extent
#get point
Input_point_x = arcpy.GetParameter(1)
Input_point_y = arcpy.GetParameter(2)
x_co = float(Input_point_x)
#x_co = 129.390076
y_co = float(Input_point_y)
#y_co = 47.360901
rows = raster_height
columns = raster_width
der_x = extent.XMax - extent.XMin
der_y = extent.YMax - extent.YMin
column = int((x_co - extent.XMin) / der_x * columns)
row = int((extent.YMax - y_co) / der_y * rows)
lower_left = arcpy.Point(X=extent.XMin, Y=extent.YMin)
numpy.save("D:\\DEM_save.npy", myArray)
arcpy.AddMessage("OKOKOK")
#arcpy.AddMessage(y_co)
arcpy