openlayers - OpenLayers 6 GeoTiff 样式表达式 - 为什么波段值在 0 和 1 之间?
问题描述
我有一个云优化 Geotiff (COG),其中包含一些只有一个波段的天气数据。像素值代表云的高度,在 0-70 范围内。在leaflet-georaster 中,我可以使用函数轻松设置样式,测试实际像素值:
function echotopColor(input) {
const value = input[0];
if (value === -1 || value === 0 || value === 255 || isNaN(value)) {
return "rgba(0,0,0,0.0)";
}
if (value >= 70) return "rgba(0,0,0,0.0)";
if (value >= 50) return "#A10002";
if (value >= 45) return "#FF0000";
我试图在 OpenLayers 中模拟这一点,查看一些 geotiff 样本:
new TileLayer({
source: source,
style: {
color: [
'case',
['>=', ['band', 1], .20],
[161, 0, 2],
['>=', ['band', 1], .16],
[255, 0, 0],
['>=', ['band', 1], .15],
[202, 98, 1],
['>=', ['band', 1], .14],
[223, 224, 58],
['>=', ['band', 1], .13],
[98, 192, 59],
['>=', ['band', 1], .12],
[19, 161, 196],
['>=', ['band', 1], 0.1],
[22, 97, 129],
[0, 0, 0, 0.0]
],
}
}),
我不得不使用反复试验来尝试找出像素值的范围,而我所拥有的是一个完整的猜测,但至少它的颜色相似。OL 文档说样式“band”运算符将返回一个介于 0 和 1 之间的值。它如何映射到我的原始值?有没有办法可以测试实际的像素值?它似乎真的过于复杂,或者我就是不明白。我可以使用函数来设置 geotiff 的样式吗?
解决方案
推荐阅读
- python - 在 Python 中评估 R 包
- here-api - 计算重型卡车的路线
- reactjs - React - Ant Design 将表格中的默认过滤器图标更改为材质图标
- leadtools-sdk - LeadTools v20 HTML5 文档查看器在开发模式下使用 Asp.Net Core 支持的文档服务库引发无效文件格式错误
- javascript - 反应保存可能性以使用重新渲染组件选择文本
- python - 正则表达式子字符串前面有特定数量的任何字符
- r - 为 RMarkdown 自定义 Beamer 模板
- node.js - 使用 NPM 启动 lite-server 时出错
- php - 我的会话和中间件无法正常工作
- python - Pandas 将 xlxs 解析为 csv - FileNotFoundError