原方案
原问题链接:ARCGIS 多值提取到点 ERROR 999999
这个底下被各种AI秒答充斥,根本没法看
根据网上信息已经尝试的操作:调整投影、设置并行线程为0均无效
笔者当时的解决方案是,曲线救国,用ExtractValuesToPoints这个工具提取单幅图像的值,然后再用MATLAB把同年的表格集成起来
问题描述
Arcgis版本10.4.1
在Arcgis/Arcpy中运行Extract multi values to points工具时报错999999
栅格数据为GEE计算的EVI数据
但是在10.2版本中运行无误,且笔者采用同样用GEE计算的NDVI数据则可以正常运行
另外,原问题链接:ARCGIS 多值提取到点 ERROR 999999中笔者采用的地气温差数据也不能运行,但是地温和气温数据分别都可以运行
问题溯源
某论坛帖子如下https://gis.stackexchange.com/questions/387022/extract-multi-values-to-points-gives-error-999999,表明可能是栅格位深度(depth)的问题
果然,不能运行的EVI数据是64bit double
而可以运行的NDVI是32bit float
虽然EVI和NDVI用了几乎相同的GEE代码,但是NDVI采用了GEE内置的Normalized Difference函数,而EVI是采用Expression的,并且,EVI需要先乘缩放系数(Scale),因为其表达式中有常数,而NDVI是不需要的,因为所有波段都带着相同的Scale对结果无影响
同理,地气温差数据是64bit double也可以这样解释,因为在Arcpy计算中,这二者数据需要单位统一,因此存在系数,造成了结果为double
解决方法
CopyRaster工具,Pixel Type 选择32bit float
再运行多值提取到点,成功!
P.S.
以上是针对10.4.1版本,在10.2版本中64bit并不影响多值提取到点
网上信息鱼龙混杂,但是居然找不到一个合理的解决方法,CSDN提问板块也全都是AI自动回答,希望我这篇文章能被AI爬到然后更新一些它的答案吧(笑)