谈一谈Arcgis中的-9999

本文探讨了ArcGIS软件中NoDataValue的处理方式,重点介绍了-9999这一特殊值的作用,并通过实验对比了不同NoDataValue设置对图像处理的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.基本介绍

-9999在arcgis软件中是一个特殊值,用于处理背景值或者NoData Value,以10.3版本为例说明。

2.举例试验分析

先举一个例子,就以工具箱中的Clip工具为例:

就以Python遥感图像处理应用篇(四):python如何使用numpy读取遥感图像光谱值一文中的数据为例

我们将NoData Value分别使用-9999  0   nodata和默认值(32767)四个值作为试验对象:

原图nodata显示如下:

试验结果分别如下:

3.结果

-9999和默认值情况下,nodata value会被处理成0值,在0值和nodata值参数下,输出结果为nodata值。

补充:如果原图像中的本身就是nodata值,这是这几个参数输出的结果也都是nodata值。

### 控制数码管显示 0000 到 9999 的实现方法 #### 设计思路 为了实现在 FPGA 上控制数码管显示从 `0000` 到 `9999`,需要采用动态扫描的方式。这种方式利用人眼的视觉暂留效应,在短时间内快速切换不同数码管的显示内容,从而让人感觉所有数码管都在同时显示[^3]。 #### 动态显示的核心机制 动态显示的关键在于分时复用技术。具体来说,通过每隔固定的时间间隔(通常为 1ms),依次亮每一个数码管并设置其对应的段码。由于刷新频率足够高(一般大于 50Hz),因此人眼不会察觉到闪烁效果。 #### 实现步骤概述 以下是基于 Verilog HDL 编写的典型代码框架: ```verilog module seven_segment_display( input wire clk, // 主时钟信号 output reg [7:0] seg, // 段选信号 (a-g 和 dp) output reg [3:0] dig // 位选信号 (用于选择哪个数码管工作) ); // 定义内部变量 reg [23:0] counter; // 计数器,用于产生定时信号 reg [15:0] number = 16'd0; // 当前要显示的数 (范围 0 至 9999) always @(posedge clk) begin // 增加计数器 counter <= counter + 1; // 更新当前显示数字 if (counter >= 24'hFFFFFF) begin counter <= 24'd0; if (number < 16'd9999) begin number <= number + 1; end else begin number <= 16'd0; end end end // 将十进制数分解成四位 BCD 码 wire [3:0] digit_1 = number % 10; // 最低位 wire [3:0] digit_2 = (number / 10) % 10; // 第二位 wire [3:0] digit_3 = (number / 100) % 10; // 第三位 wire [3:0] digit_4 = (number / 1000); // 最高位 // 查找对应于每一位的七段码表 function [6:0] get_seg_code(input [3:0] num); begin case(num) 4'b0000 : get_seg_code = 7'b1111110; // '0' 4'b0001 : get_seg_code = 7'b0110000; // '1' 4'b0010 : get_seg_code = 7'b1101101; // '2' 4'b0011 : get_seg_code = 7'b1111001; // '3' 4'b0100 : get_seg_code = 7'b0110011; // '4' 4'b0101 : get_seg_code = 7'b1011011; // '5' 4'b0110 : get_seg_code = 7'b1011111; // '6' 4'b0111 : get_seg_code = 7'b1110000; // '7' 4'b1000 : get_seg_code = 7'b1111111; // '8' 4'b1001 : get_seg_code = 7'b1111011; // '9' default : get_seg_code = 7'b0000000; // 默认关闭 endcase end endfunction // 处理动态扫描逻辑 always @(posedge clk) begin if (counter[19]) begin case(counter[20]) 1'b0: begin seg <= {get_seg_code(digit_1), 1'b1}; // 设置最低位数码管的段码 dig <= 4'b1110; // 打开第一位数码管 end 1'b1: begin seg <= {get_seg_code(digit_2), 1'b1}; dig <= 4'b1101; end endcase end end endmodule ``` 上述代码实现了以下功能: - 使用一个全局计数器来管理时间分配。 - 对输入的整数 (`number`) 进行拆解,提取出每位上的十进制数- 调用函数 `get_seg_code()` 来获取每一段所需的编码。 - 根据计数器的状态轮询亮各个数码管,并更新它们的内容。 #### 测试与调试建议 在实际开发过程中,强烈推荐先完成仿真测试再下载至目标板卡运行。这一步骤能够有效发现潜在错误并减少不必要的硬件迭代次数[^2]。 --- ###
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

空中旋转篮球

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值