[译文] 基于PostGIS3.1 生成格网数据

news/2024/5/3 20:54:16/文章来源:https://blog.csdn.net/qq_40098572/article/details/129196261

根据格网进行数据统计与分析是一种常用的方法,相比自然地理边界与行政管理边界而言,使用格网有如下特点:

  • 每个格网之间地位相等,没有上下级之分。

  • 每个格网的面积都相等。

  • 相邻两个格网单元中心点之间距离相等。

  • 适用于将数据从“空间”计算领域转换到“非空间”领域。

生成格网数据的方法其实有很多,例如在之前的PostGIS中可以写一个plpgsql function根据起点,终点,cell分辨率快速生成格网等,由于格网数据比较常用,所以PostGIS3.1直接提供了ST_SquareGrid()(正方形网格)与ST_HexagonGrid()(蜂窝网格)两种格网方法。

稍微不同的是,PostGIS3.1中生成的网格是具有统一的特征的:

  • 生成网格的原点是固定的,指向平面坐标(0,0)。注意:这个原点是根据实际数据来的,生成网格一般要指定一个地理范围,在该范围内生成所定义的网格,那么如果输入的地理范围是epsg:4326坐标系,则指向经纬度0 0,如果输入是epsg:3857,则指向墨卡托的0 0。

  • 指定网格单元的size,即可固定该网格的地理坐标,使用时只使用cell编号而不需要使用真实地理边界。

ST_SquareGrid()

ST_SquareGrid(size,bounds)方法以墨卡托坐标0 0为原点,以size声明网格大小,以bounds指定地理范围。

示例sql:

SELECT (ST_SquareGrid(400000, ST_Transform(a.geom, 3857))).* FROMadmin a  WHERE name = 'Brazil';

该示例获取巴西的国界,并转平面墨卡托坐标,以0 0为边界,以巴西国界的bbox为生成网格地理边界,生成一些列网格,结果如下:

ST_HexagonGrid()

ST_HexagonGrid(size,bounds)方法的参数与ST_SquareGrid(size,bounds)参数定义完全一致。

蜂窝网格目前非常流行,在某些制图表达和统计建模上具有一些特定场景的优势,一开始应该出现在Uber提出的H3格式:

H3: Uber’s Hexagonal Hierarchical Spatial Index
https://eng.uber.com/h3/

示例sql:

SELECT (ST_HexagonGrid(100000, ST_Transform(a.geom, 3857))).* FROMadmin a  WHEREname = 'Germany';

结果可视化如下:

格网统计

生成格网一般用于进行统计分析然后汇总可视化的,使用PostGIS时,不需要实际生成网格并存储,而是通过生成器动态创建网格然后与其他空间数据做叠加统计分析。

示例:假设有点数据集places,geom是geometry(Point,4326)类型,该数据集有字段pop_max定义每个palces点的最大人口数,根据蜂窝网格统计汇总每个格网的最大人口数:

SELECTsum(pop_max) as pop_max, hexes.geomFROM    ST_HexagonGrid(4.0,        ST_SetSRID(ST_EstimatedExtent('places', 'geom'), 4326)    ) AS hexesINNERJOIN    places AS pON ST_Intersects(p.geom, hexes.geom)GROUP BY hexes.geom;

可视化结果如下:

这种动态统计分析是非常快速的,结果可以通过Postgis的矢量切片函数做成动态矢量切片服务,也可以使用pg_tileserv(https://github.com/crunchydata/pg_tileserv)做动态矢量切片服务,配合MapboxGL等能快速实现成果可视化。

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

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

相关文章

【Kubernetes 企业项目实战】09、Rancher 2.6 管理 k8s-v1.23 及以上版本高可用集群

目录 一、Rancher 介绍 1.1Rancher简介 1.2 Rancher 和 k8s 的区别 1.3 Rancher 企业使用案例 二、安装 Rancher 2.1 初始化环境 2.2 安装 Rancher 2.3 登录 Rancher 平台 三、通过 Rancher 管理已存在的 k8s 集群 3.1 配置 rancher 3.2 导入 k8s ​四、通过 Ranc…

【MySQL】5.7版本解压安装配置

前言 之所以使用解压版本,而不使用exe安装,因为exe的安装方式删除过于麻烦!!! 如果安装MySQL过程中,出错了或者想重新在来一把,删除mysql服务即可 sc delete mysql # 删除已经安装好的Mysql&a…

ICASSP2023录用率有可靠度还不错的消息了

点击文末公众号卡片,找对地方,轻松参会 由于录用邮件没说录用率,导致大家都不知道录用率是多少。 据一位群友的反馈,其小老板是meta review。该群友原话“接受率应该是42%”。 ICASSP2023投稿量6000,在投稿量大涨的…

可怕,chatGPT用3小时教会我数据

chatGPT这玩意真的是我的救星,用它作为我的Python教练,我用三个小时学会了数据处理(Pandas)和绘图(matplotlib)。 这两个库的学习,在之前已经困扰了我7个月。之前卡壳的原因,是我一直没有耐心从零开始,按照教材设置的教程去学习Python——我擅长在项目中学习,一点一点…

数字人文中的可视化

数字人文中的可视化罗煜楚1,吴昊1,郭宇涵1,谭绍聪1,刘灿1,蒋瑞珂1,袁晓如1,21北京大学智能学院机器感知与智能教育部重点实验室,北京 1008712北京大学大数据分析与应用技术国家工程实验室&#…

白帽黑客入行应该怎么学?零基础小白也能轻松上手!

这几年随着我国《国家网络空间安全战略》《网络安全法》《网络安全等级保护2.0》等一系列政策/法规/标准的持续落地,网络安全行业地位、薪资随之水涨船高。 1为什么网络安全行业是IT行业最后的红利? 根据腾讯安全发布的《互联网安全报告》,…

【架构师】零基础到精通——网关策略

博客昵称:架构师Cool 最喜欢的座右铭:一以贯之的努力,不得懈怠的人生。 作者简介:一名退役Coder,软件设计师/鸿蒙高级工程师认证,在备战高级架构师/系统分析师,欢迎关注小弟! 博主小…

月薪没到30K的测试员必须要会的技能,我先啃为敬

最近感慨面试难的人越来越多了,一方面是市场环境,更重要的一方面是企业对软件测试的人才要求越来越高了。 基本上这样感慨的分为两类人 第一,虽然挂着3、5年经验,但肚子里货少,也没啥拿得出手的项目,自己还…

整数保序的离散化(C/C++)

目录 1. 离散化的概念 1.1 离散化的运用思路 1.2 离散化的方法 1.2.1 排序 1.2.2 确定一个元素离散化后的结果 1.3 案例分析 1.3.1 1.3.2 区间和 (来源:Acwing) 1. 离散化的概念 离散化,把无限空间中有限的个体映射到有限的…

用kinectv2运行orbslam2

前提 vim 、 cmake 、 git 、 gcc 、 g 这些一般都装了 主要是Pangolin 、 OpenCV 、 Eigen的安装 18.04建议Pangolin0.5 orbslam2安装、测试: git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2 cd ORB_SLAM2 chmod x build.sh ./build.sh 编译…

归并排序及其应用

归并排序算法基于分而治之的概念,具体来说就是遍历一棵树,归并的过程是一个后序执行的动作。 由于我们知道每个子部分在合并后都是有序的,我们可以利用这个特性来解决一些问题。 上图可视化了merge sort algorithm的过程,我们很容…

【Spring中@Autowired和@Resource注解的区别?】

一.背景 Spring中Autowired和Resource注解的区别? Spring框架想必大家都知道吧,那么Spring中Autowired和Resource注解的区别你知道吗?如果不知道也不要紧,我们就一起来学习一起吧。 二.Autowired和Resource注解的区别&#xff1f…

【Azure 架构师学习笔记】-Azure Data Factory (3)-触发器详解-翻转窗口

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Data Factory】系列。 接上文【Azure 架构师学习笔记】-Azure Data Factory (2)-触发器 前言 上文中提到触发器的类型有以下4种,其中第一种【计划】是常用的, 与其他工具/服务类似的方式&#…

电路分析:一个简单的光控灯电路

一个简单的光控灯电路 电路原理: 利用了光敏电阻、电容 、三极管的特性实现

冷知识,Chrome 控制台console.log()为什么返回undefined

前言 不知道各位有没有在Chrome控制台中,使用console.log()输出数据,例如 console.log(Hello World) 如果你曾经稍微留意,你会发现第二个返回值是undefined。是浏览器控制台出现BUG了嘛?我们期望的输出只有’Hello World’。 其…

该学会是自己找bug了(vs调试技巧)

前言 🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻推荐专栏: 🍔🍟🌯 c语言初阶 🔑个人信条: 🌵知行合一 🍉本篇简介:>:介绍c语言初阶的最后一篇.有关调试的重要性. 金句分享…

零基础学编程很难学?3点解答你的疑惑

很多编程新手 都会套用以前上学时的学习方法: 记语法、定义、常量…… 然而,这些方法在编程学习中 却完全不奏效 编程究竟难在哪? 有没有更有效的学习方法呢? 01 #难在我们从未接受过解决问题的训练 从小到大,我们…

为Webpack5项目引入Buffer Polyfill

前言 最近在公司的一个项目中使用到了Webpack5, 然而在使用某个npm包的时候,出现了Buffer is not defined 这个问题,原因很明显了,因为浏览器运行时没有Buffer这个API,所以需要为浏览器引入Buffer Polyfill. Webpack5…

变分推断 | MATLAB实现VBMC变分贝叶斯蒙特卡洛模拟的贝叶斯推断

变分推断 | MATLAB实现变分贝叶斯蒙特卡洛模拟的贝叶斯推断 目录 变分推断 | MATLAB实现变分贝叶斯蒙特卡洛模拟的贝叶斯推断效果一览基本介绍研究内容模型描述模型设计参考资料效果一览 基本介绍 MATLAB实现变分贝叶斯蒙特卡洛模拟的贝叶斯推断。变分贝叶斯蒙特卡洛(VBMC)是…

【UE4 制作自己的载具】5-添加第一人称视角

效果步骤可以先打开“Vehicle_BP”添加三个注释获得“Camera”的相对旋转分割结构体引脚打开“Sedan”这个蓝图,拷贝其中的一部分逻辑到“Vehicle_BP”的事件图表中将下图选中的节点复制粘贴到“Vehicle_BP”的事件图表中:连接节点:如果我们希…