【GIS教程】使用GDAL-Python将tif转为COG并在ArcGIS Js前端加载-附完整代码

目录

一、数据格式

二、COG特点

三、使用GDAL生成COG格式的数据

四、使用ArcGIS Maps SDK for JavaScript加载COG格式数据


一、数据格式

COG(Cloud optimized GeoTIFF)是一种GeoTiff格式的数据。托管在 HTTP 文件服务器上,可以代替geoserver/arcgis server发布栅格数据,比wms/wmts节省服务器空间和内存。

二、COG特点

  • 在GeoTIFF图片中保存除原始像元数据外的瓦片(tile)和概览(overview)

  • 使用HTTP范围请求获取单一文件的所需部分

三、使用GDAL生成COG格式的数据

已有tif格式的栅格数据,使用gdal.Translate函数。代码如下:

参考:gdal_translate接口文档

from osgeo import gdal, gdalconst'''获取相应统计数据'''
def compute_stat(srcDS):outBand = srcDS.GetRasterBand(1)stat = outBand.ComputeStatistics(True)outBand = Nonestat = Nonedel outBanddel stat# 将文件转为cog
file = "./Data/DSM22000108.tif" # 输入数据
out = "./Data/DSM22000108-COG.tif" #输出数据
cal_area = gdal.Open(file) # 读取# ---------------------
#----写法1:添加多个参数设定COG格式----
options = gdal.TranslateOptions(format="COG",creationOptions=["COMPRESS=DEFLATE","TILING_SCHEME=GoogleMapsCompatible","QUALITY=100","BLOCKSIZE=256","BIGTIFF=YES","NUM_THREADS=ALL_CPUS"],outputType=gdalconst.GDT_Int32
)
# 转换为COG格式数据
desImg = gdal.Translate(out, cal_area, options=options, overwrite=True)#----写法2:使用默认参数----
desImg = gdal.Translate(out, cal_area, format="COG")# ---------------------#计算COG的栅格值,生成xml
n_desImg = gdal.Open(out)
compute_stat(n_desImg)print("out img---------------")
print(n_desImg)n_desImg = None

得到的结果为:

四、使用ArcGIS Maps SDK for JavaScript加载COG格式数据

ArcGIS JS 提供接口ImageryTileLayer可以直接加载。

 【官网示例代码】ImageryTileLayer with COG

我们将GDAL计算得到的COG数据以静态文件形式封装成服务url进行访问。

核心代码:

const url = `http://127.0.0.1:8000/DemData/LocalData/ele-COG.tif`; //封装成自己的文件服务view.graphics.removeAll();
const eleImageLayer = new ImageryTileLayer({ //使用ImageryTileLayer加载COGurl: url, // 文件的url,可访问opacity: 1.0 //透明度
});
map.add(eleImageLayer);//添加到地图

完整代码:可直接使用。

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no"><title>ArcGIS JS - Elevation Data</title><link rel="stylesheet" href="https://js.arcgis.com/4.22/esri/themes/light/main.css"><script src="https://js.arcgis.com/4.22/"></script><style>html, body, #viewDiv {padding: 0;margin: 0;height: 100%;width: 100%;}</style>
</head>
<body><div id="viewDiv"><button id="loadElevationData">Load Elevation Data</button><div id="responseMessage"></div></div><script>require(["esri/Map","esri/views/MapView","esri/layers/ImageryTileLayer","dojo/domReady!"], function(Map, MapView, ImageryTileLayer) {// Create a mapconst map = new Map({basemap: "topo-vector"});// Create a view for the mapconst view = new MapView({container: "viewDiv",map: map,center: [0, 0],zoom: 2});// Function to zoom to the layerfunction zoomToLayer(layer) {view.whenLayerView(layer).then(function(layerView) {view.goTo(layerView.fullExtent);});}// Button click event to fetch elevation data and add it to the mapdocument.getElementById('loadElevationData').addEventListener('click', function() {const url = `http://127.0.0.1:8000/DemData/LocalData/ele-COG.tif`; document.getElementById('responseMessage').textContent = "Elevation data loaded successfully." + '/n'+url;view.graphics.removeAll();const eleImageLayer = new ImageryTileLayer({url: url,opacity: 1.0});map.add(eleImageLayer);zoomToLayer(eleImageLayer);});});</script>
</body>
</html>

效果如下:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/490802.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Git-分布式版本控制工具

目录 1. 概述 1. 1集中式版本控制工具 1.2分布式版本控制工具 2.Git 2.1 git 工作流程 1. 概述 在开发活动中&#xff0c;我们经常会遇到以下几个场景&#xff1a;备份、代码回滚、协同开发、追溯问题代码编写人和编写时间&#xff08;追责&#xff09;等。备份的话是为了…

【收藏】Cesium 限制相机倾斜角(pitch)滑动范围

1.效果 2.思路 在项目开发的时候&#xff0c;有一个需求是限制相机倾斜角&#xff0c;也就是鼠标中键调整视图俯角时&#xff0c;不能过大&#xff0c;一般 pitch 角度范围在 0 至 -90之间&#xff0c;-90刚好为正俯视。 在网上查阅了很多资料&#xff0c;发现并没有一个合适的…

YOLOv5-Backbone模块实现

YOLOv5-Backbone模块实现 &#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客 &#x1f356; 原作者&#xff1a;K同学啊 电脑系统&#xff1a;Windows11 显卡型号&#xff1a;NVIDIA Quadro P620 语言环境&#xff1a;python 3.9.7 编译器&#xff1a…

Envoy 服务发现原理大揭秘与核心要点概述

1 Envoy动态配置介绍 动态资源&#xff0c;是指由envoy通过xDS协议发现所需要的各项配置的机制&#xff0c;相关的配置信息保存 于称之为管理服务器&#xff08;Management Server &#xff09;的主机上&#xff0c;经由xDS API向外暴露&#xff1b;下面是一个 纯动态资源的基…

黑盒白盒测试

任务1 黑盒测试之等价类划分法 【任务需求】 【问题】例&#xff1a;某报表处理系统要求用户输入处理报表的日期&#xff0c;日期限制在2003年1月至2008年12月&#xff0c;即系统只能对该段期间内的报表进行处理&#xff0c;如日期不在此范围内&#xff0c;则显示输入错误信息…

linux普通用户,配置python环境及oracle客户端

需求&#xff1a; 有一个python脚本&#xff0c;需要在linux普通用户下运行&#xff0c;脚本中需要连接oracle数据库查询数据 本地环境&#xff1a;centos7.6 Python版本&#xff1a;Python3.6 Oracle版本&#xff1a;12c 配置Python环境 选择对应Python版本进行下载 注意&am…

单元测试-FATAL ERROR in native method: processing of -javaagent failed

文章目录 前言单元测试-FATAL ERROR in native method: processing of -javaagent failed1. 报错信息2. 解决方案 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且听说点赞的人每天的运…

如何平衡向量检索速度和精度?深度解读HNSW算法

向量检索&#xff08;向量相似性搜索&#xff09;是AI时代最重要的技术之一。其典型应用场景包括&#xff1a;推荐系统、检索增强生成&#xff08;RAG&#xff09;等高级GenAI应用。 向量检索最突出的优势是准确性和速度。 过去&#xff0c;向量搜索通常是用暴力扫描的方式来找…

Python的3D可视化库【vedo】2-2 (plotter模块) 访问绘制器信息、操作渲染器

文章目录 4 Plotter类的方法4.1 访问Plotter信息4.1.1 实例信息4.1.2 演员对象列表 4.2 渲染器操作4.2.1 选择渲染器4.2.2 更新渲染场景 4.3 控制渲染效果4.3.1 渲染窗格的背景色4.3.2 深度剥离效果4.3.3 隐藏线框的线条4.3.4 改为平行投影模式4.3.5 添加阴影4.3.6 环境光遮蔽4…

强化学习的学习笔记

什么是强化学习&#xff1f; 强化学习&#xff08;Reinforcement Learning, RL&#xff09;&#xff0c;又称再励学习、评价学习或增强学习&#xff0c;是机器学习的范式和方法论之一&#xff0c;用于描述和解决智能体&#xff08;agent&#xff09;在与环境的交互过程中通过学…

Leetcode42-环形链表

题目 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使…

ElasticSearch 简介

一、什么是 ElastcSearch&#xff1f; ElasticSearch 是基于 Lucene 的 Restful 的分布式实时全文搜索引擎。 1.1 ElasticSearh 的基本术语概念 index 索引 索引类似与 mysql 中的数据库&#xff0c;ES 中的索引是存储数据的地方&#xff0c;包含了一堆有相似结构的文档数据…

【学习笔记】桌面浏览器的视口

概念&#xff1a;设备像素和CSS像素 设备像素&#xff1a;设备物理屏幕的像素分辨率&#xff0c;使用screen.width/height获取 这里有四个像素100%缩放&#xff0c;CSS像素完全覆盖设备像素 缩小后&#xff0c;CSS像素开始缩小&#xff0c;意味着一个设备像素覆盖多个CSS像素…

嵌入式软考学习笔记(1)超详细!!!

目录 第一章计算机系统基础知识 1、逻辑运算 2、数的表示 3、总线系统 5、流水线 6、存储器 7、可靠性、校验码 第一章计算机系统基础知识 1、逻辑运算 与&#xff1a;有0则0&#xff0c;全1才1 或&#xff1a;有1则1&#xff0c;全0才0 异或&#xff1a;相同为0…

FFmpeg功能使用

步骤&#xff1a;1&#xff0c;安装FFmpeg Download FFmpeg 在这里点击->Windows builds from gyan.dev&#xff1b;如下图 会跳到另外的下载界面&#xff1a; 在里面下拉选择点击ffmpeg-7.1-essentials_build.zip&#xff1a; 即可下载到FFmpeg&#xff1b; 使用&#…

接口开发笔记-WebApi

一、基础概念与原理 1、WebAPI的基本概念。 WebAPI是一种基于HTTP协议的网络应用程序接口&#xff0c;它使用JSON或XML格式来传输数据。WebAPI是服务器端应用程序&#xff0c;允许客户端应用程序通过HTTP请求来访问服务器上的数据。WebAPI支持RESTful服务&#xff0c;是构建这…

文件转曲,限制PDF文件编辑的最佳方案!

随着数字化进程的推进&#xff0c;PDF文件凭借其多样化的功能和优越的兼容性已经被广泛使用&#xff0c;成为了现代文档交流和存储的重要工具&#xff0c;满足了不同用户和行业的需求。 虽然PDF格式文件的功能很多&#xff0c;常见的比如阅读、编辑、加密、转换、还可用于印刷…

数据仓库工具箱—读书笔记01(数据仓库、商业智能及维度建模初步)

数据仓库、商业智能及维度建模初步 记录一下读《数据仓库工具箱》时的思考&#xff0c;摘录一些书中关于维度建模比较重要的思想与大家分享&#x1f923;&#x1f923;&#x1f923; 博主在这里先把这本书"变薄"~有时间的小伙伴可以亲自再读一读&#xff0c;感受一下…

分布式 窗口算法 总结

前言 相关系列 《分布式 & 目录》《分布式 & 窗口算法 & 总结》《分布式 & 窗口算法 & 问题》 参考文献 《【算法】令牌桶算法》 固定窗口算法 简介 固定窗口算法是最简单的流量控制算法。固定窗口算法的核心原理是将系统的生命周期划分为一个个…

FireFox火狐浏览器企业策略禁止更新

一直在用火狐浏览器&#xff0c;但是经常提示更新&#xff0c;进入浏览器右上角就弹出提示&#xff0c;比较烦。多方寻找&#xff0c;一直没有找到合适的方案&#xff0c;毕竟官方没有给出禁用检查更新的选项&#xff0c;甚至about:config里都没有。 最终找到了通过企业策略控…