锋利的PostGIS--快速实现一个面的“等分”

一 问题

PostGIS是否有方法能将一个Polygon面切割成若干份小的Polygon面,且每一份的面积差不多大?

其实并没有现成的方法,但是通过灵活运用postgis函数可以快速实现这样的功能,总共只要简单的5步就可以了,下文具体说明。

二 步骤分解

2.1 准备测试数据

    本文选择南京市行政区边界作为测试数据。

create table nanjing as select name,geom from city where name='南京市';

2.2 面内生成任意数量点

本文在南京区域内生成2000测试点。

CREATE TABLE nanjing_points AS   SELECT (ST_Dump(ST_GeneratePoints(geom, 2000))).geom   AS geom FROM nanjing;

2.3 点聚合成簇

使用ST_ClusterKMeans均值中心聚类分析,把散点聚簇分类。

CREATE TABLE nanjing_pts_clustered AS SELECT geom, ST_ClusterKMeans(geom, 10) over () AS cluster FROM nanjing_points;

2.4 提取簇的中心

CREATE TABLE nanjing_centers AS   SELECT cluster, ST_Centroid(ST_collect(geom)) AS geom  FROM nanjing_pts_clustered GROUP BY cluster;

2.5 使用voronoi算法生成面

CREATE TABLE nanjing_voronoi AS SELECT (ST_Dump(ST_VoronoiPolygons(ST_collect(geom)))).geom AS geom FROM nanjing_centers;

2.6 使用ST_Intersection方法切割

用voronoi算法构成的面,去切割原始的南京行政区边界:

CREATE TABLE nanjing_divided AS  SELECT ST_Intersection(a.geom, b.geom) AS geom  FROM nanjing a  CROSS JOIN nanjing_voronoi b;

三 总结

Postgis中造数据是非常方便的,可以快速造很多点,同时,提供了统计学上的空间聚类分析,强GIS算法上的韦恩图等等,在快速做数据分析和处理时灵活组织,能做很多有趣的事情。

(0)

相关推荐

  • Voronoi图的简单方法

    我们使用标准容器和算法讨论Voronoi图的简单变体,这些容器和算法提供的性能比暴力法更好. 布局 介绍 基于边界的Voronoi图 点位置查询 简单变体的想法 蛮力法 网格法 倒排列表 计算复杂度 ...

  • ClickHouse常用命令,基本数据类型

    一.建库建表基本命令 二.基本数据类型 整型 浮点型 布尔型 字符串 枚举类型 数据组 元组 日期 时间戳 三.表引擎 一.建库建表基本命令 查看库 show databases; 使用库 use d ...

  • 行业研究丨营销人如何在1周内快速了解一个行业?

    藏锋丨第16篇文章 阅读提示丨3250字 8分钟 导论丨行研,是策略解题的入场券 洞见源自了解,行研是策略人的必修课,同时也是产生洞见的突破点. 行研是基本功,也是基本法.如果把行研比作一道题的话,我 ...

  • 教资面试时问到你不熟悉的结构化题型 ,如何快速组织一个合格的答案?

    众所周知,教师资格证面试分为结构化+试讲+答辩,想必大家都知道首次效应,也就是见一个人的第一面以及她说的第一段话,对后面的影响至关重要,而结构化则是我们需要面对的第一关,第一关是否能流畅顺利的面对,也 ...

  • 如何快速入门一个陌生领域?

    嗨,大家好,我是痴海.   过去的一个月我从零制作了人生第一个长视频,并且在前天发布了.   这个视频制作的过程非常不易,但最终呈现的效果还是不错的.   视频有不错的质感,并且整体的节奏也不错.   ...

  • 快速打造一个MINI自动发布系统

    dotNET跨平台 今天 以下文章来源于桂迹 ,作者桂素伟 前情提要:因为项目特点,需要在自己的服务器上集成测试,而不是用github的DevOpt体系:再有就是服务器是windows的:项目仓库在g ...

  • 干货:律师如何快速了解一个陌生行业

    新则 探索法律行业新规则698篇原创内容公众号法律服务,不管是尽职调查.起草交易文件.参与谈判,还是处理争议解决案件,都是在为业务服务,律师在处理具有行业特质的法律业务时,有必要迅速对行业及业务常识有 ...

  • 用长杆快速插入上面的空隙中,两人一定要抓稳

    用长杆快速插入上面的空隙中,两人一定要抓稳

  • 如何用AI快速绘制一个逼真花瓣?

    在AI中花朵是通过一片片的花瓣组合起来的,我们先来画一个花瓣,很简单的,赶紧来看看吧! 1.我们今天就来画其中的一个花瓣吧,使用钢笔和网格工具就可以了. 2.我们首先使用钢笔工具,将画笔的大体轮廓勾勒 ...

  • 如何快速制作一个班级LOGO

    问题情景 班级管理中,一个代表班级文化的Logo班徽,能凝聚学生.它标志着大家从属于一个班级,并且团结一心.那么,如何快速的制作一个班级LOGO呢?接下来,请跟随吴超老师的<如何快速制作一个班级 ...

  • 非专业人员怎么快速开发一个小应用?

    作为一个非专业的开发者,如果能像拼积木一样快速搭建一个应用,应用开发就能大大简化.提速,普通人就可以开发出自己需要的应用.当前低代码已经让这种设想成为现实,快速开发一个小应用不是问题. 由于学习需要开 ...