空间数据管理在从地理信息系统 (GIS) 到城市规划等各个领域变得越来越重要。随着空间数据源的激增,此类数据的有效处理和分析变得至关重要。
DuckDB已成为一种多功能分析数据库管理系统,以其性能、灵活性和易于集成而闻名。
最近,其功能已扩展到包括通过空间扩展进行空间数据管理。
了解组件
在开始本文之前,我们先简单介绍一下所涉及的关键组件:
- DuckDB是一个开源、嵌入式数据库管理系统,专为分析工作负载而设计。它拥有列式存储和矢量化查询执行等功能,非常适合需要高性能和并发性的分析任务。其轻量级特性和易于集成使其成为从数据探索到数据转换等应用程序的流行选择。
- 空间扩展: DuckDB的空间扩展增强了其处理矢量数据的能力,使用户能够高效地存储和查询空间数据集。
DuckDB空间扩展的主要特点包括:
- 空间数据类型:该扩展引入了点、线、多边形和多几何图形等空间数据类型,允许用户准确地表示各种空间实体。
- 空间函数:该扩展提供了一组丰富的空间函数,用于几何计算、空间关系和转换,直接在数据库中促进高级空间分析。
- 矢量数据导入和导出:该扩展提供了用于导入和导出流行格式(例如GeoJSON、Shapefile和Well-Known Text ( WKT ))矢量数据的实用程序,确保与现有空间数据工作流程的互操作性。
- 与分析工作流程集成:空间扩展与现有分析工作流程无缝集成,从而能够将空间数据合并到数据科学管道和商业智能应用程序中。
但是,栅格类型又如何呢?不支持栅格类型,目前没有计划将它们添加到扩展中。
栅格数据是遥感应用的基础,卫星和航空图像用于远距离监测地球表面。借助栅格数据的遥感技术有助于监测自然灾害、评估环境变化和管理自然资源。
提议在 DuckDB 中支持栅格
好吧,这就是这篇文章背后的想法:描述此实现以支持 DuckDB 空间扩展中的栅格,并概述使用空间 SQL 语句开发的函数的功能。
栅格函数在底层使用GDAL , DuckDB的空间扩展已经包含这个令人惊叹的库,它加载/处理/写入一组令人难以置信的地理空间数据格式。
让我带您踏上在DuckDB中编写 SQL和处理栅格数据的旅程!
样本数据
对于以下所有命令,我将使用四个Gtiff的网格来测试功能。光栅文件有一个独特的波段(Int16 -灰度),它们之间有一些重叠,但在同一网格上对齐。