使用QGIS识别矢量点数据中的聚类吗?


34

我有一个农村宽带数据点(有多快等)的矢量数据集,我想探讨是否存在具有相似特征的点簇,并绘制包含它们的多边形。

例如,在一个分布在景观上的单个PostGIS数据集中,我可能有45,000个点。我想确定彼此位于x公里以内且速度低于y kbps的群集,并为每个合格群集生成凸包。

例如,在QGIS中是否有一种简单的方法?


3
您可能要注意宽带的性质。市区内将发生高速行驶;工业集团;从CO,调制解调器和其他光纤/电缆/ DSL基础设施沿道路辐射;并从某些蜂窝塔进行广播(取决于您对“宽带”的定义)。因此,的速度将出现簇和速度将看起来像间隙中的集群。特别是,凸包不太可能成为对低速区域的恰当描述。最好知道您打算如何解释发现的任何“簇”。
ub

谢谢您的帮助。我正在研究更农村的地区,由于路边机柜的分布以及电线杆上的直接馈电线路以及该地区的地理位置,有线宽带的体系结构可能引发更多不寻常的情况。结果,您确实找到了集群,这些集群可以作为构建本地解决方案的有用起点,并且可以是制定策略的重要步骤。实际上,您甚至可以在市区找到它们,这通常是由于工业遗产或铁路和河流之类难以穿越的东西。
阿德里安

Answers:


15

我结合了一些建议中的一些内容,并添加了一些自己的建议,找到了一个对我来说非常有效的解决方案-所有这些都来自QGis!

我首先运行一个PostGis SELECT来查找具有正确公共属性并且位于彼此x公里之内的点:

SELECT DISTINCT s1.postcode,s1.the_geom,s1.gid从宽带数据AS s1加入宽带数据AS s2 ON ST_DWithin(s1.the_geom,s2.the_geom,1000)WHERE s1.postcode!= s2.postcode AND s1.fastest_bband

(从曼宁的出色的《PostGis in Action》一书中可以看出,只添加了一个自我联接

然后,我加载了Carson Farmer的ManageR插件,并导入了该图层。在这里,我跟着建议PAM聚类过程在这里,并出口的结果是形文件上凸包上的是,使用fTools秒计算(卡森确实得到解决!)。


第一版PostGIS in Action现在已经绝版。这是第二版manning.com/books/postgis-in-action-second-edition的链接,以及第一章的免费manning-content.s3.amazonaws.com/download/a/…的链接,该链接为伟大的开始得到了PostGIS的照片
马丁HUGI

8

尽管不是QGIS解决方案,但我个人还是选择使用SaTScan进行一些探索性分析。它速度快,文档齐全且应用广泛,因此您在启动时不会遇到麻烦。45k点可能需要一些RAM。

我不确定它是否可以直接从Postgres读取,但可以轻松地从dbf和文本文件导入。

然后可以将分析的输出轻松地读回Postgres或QGIS。您可以决定搜索圆形群集或椭圆形(如果数据中存在特定类型的住区,例如长形的城市/山谷中的村庄等,则可能有用)。然后,您可以生成多边形或椭圆形,或仅显示属于聚类的位置。

为了在Google Earth中快速预览结果,您还可以使用NAACCR的SaTScan到Google Earth转换工具

重要的是-如果您决定运行蒙特卡洛模拟(我认为最低限度为99),您还可以说出有关群集统计意义的一些信息。至少在过去的二十年中,对这些聚类的解释和论证将是另一个问题,因为它在空间科学中已经进行了辩论(至少我认为是)。

您可以尝试运行纯粹的空间分析,以查找高,低或高和低值的群集。如果您的数据(每天,每周汇总)中有一些时间属性,那么我认为运行一些时空模型真的很有趣。


2
看起来不错-很好的回答
Mapperz

5

SciPy有一个集群包(用于python),您可以在python控制台中使用它,编写一个简单的插件即可,也可以在postgis中使用PL / python。

http://docs.scipy.org/doc/scipy/reference/cluster.html

分析之后,只需使用f工具创建凸包。


我是一个简单的用户,几乎没有python经验,但是我来看一下-我知道我需要学习!
阿德里安

SciPy聚类是否考虑了点之间的空间关系?
radek 2011年

1
您只需为点的x和y坐标添加两个协变量即可。
何塞

5

有你想要使用R和草做一个类似的例子在这里。或者,您可能希望按照建议使用scipy的聚类工具,然后使用此方法进行凸包计算。


3

您可以尝试使用Ftools插件。 Vector> Geoprocessing Tools> Convex Hulls

有一个选项Create convex hulls based on input field,输入字段参数应来自输入点的属性。


谢谢您的帮助。凸包的位将创建多边形,但无法识别簇是否存在或它们可能在何处。我真的很想找到一种方法,将具有相似特征的点首先彼此关联。我猜想我需要运行一些脚本来唯一标识集群的存在,并为每个集群的成员更新postgis表中的其他字段。例如,创建Delaunay三角剖分并过滤掉三角形的边长超过x km的所有点,但我不知道该怎么做
Adrian
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.