一 問(wèn)題 PostGIS是否有方法能將一個(gè)Polygon面切割成若干份小的Polygon面,且每一份的面積差不多大? 其實(shí)并沒(méi)有現(xiàn)成的方法,但是通過(guò)靈活運(yùn)用postgis函數(shù)可以快速實(shí)現(xiàn)這樣的功能,總共只要簡(jiǎn)單的5步就可以了,下文具體說(shuō)明。 二 步驟分解 2.1 準(zhǔn)備測(cè)試數(shù)據(jù) 本文選擇南京市行政區(qū)邊界作為測(cè)試數(shù)據(jù)。 create table nanjing as select name,geom from city where name='南京市'; 2.2 面內(nèi)生成任意數(shù)量點(diǎn) 本文在南京區(qū)域內(nèi)生成2000測(cè)試點(diǎn)。
2.3 點(diǎn)聚合成簇 使用ST_ClusterKMeans均值中心聚類分析,把散點(diǎn)聚簇分類。 CREATE TABLE nanjing_pts_clustered AS SELECT geom, ST_ClusterKMeans(geom, 10) over () AS cluster FROM nanjing_points; 2.4 提取簇的中心
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算法構(gòu)成的面,去切割原始的南京行政區(qū)邊界:
三 總結(jié) Postgis中造數(shù)據(jù)是非常方便的,可以快速造很多點(diǎn),同時(shí),提供了統(tǒng)計(jì)學(xué)上的空間聚類分析,強(qiáng)GIS算法上的韋恩圖等等,在快速做數(shù)據(jù)分析和處理時(shí)靈活組織,能做很多有趣的事情。 |
|
來(lái)自: 昵稱QAb6ICvc > 《arcgis》