我对GIS尤其是PostGIS不太熟悉,因此,如果答案似乎显而易见,请原谅...
我想对许多建筑物进行分析。我感兴趣的一件事是它们的外墙表面以及各自的方向。如下图所示,我希望具有一系列多边形中所有边的长度和(法线)方向。在示例中,我仅突出显示一个表面。
结果表可能是这样的:
building_id | edge_id | orientation | edge_length
-------------------------------------------------
1 | 1 | 315 | 10.0
1 | 2 | 45 | 7.0
1 | ... | ... | ...
但是,我不确定这是否是存储结果以进行进一步处理的明智方法(例如,计算从边缘到下一栋建筑物的距离等)。所以我的问题是双重的:
- 是否有一个有效的PostGIS功能可以分析多边形的边缘?如果没有本地PostGIS功能,我可能会对基于Python的方法感兴趣。
- 由于多边形的边数可能不同,因此将结果存储在PostGIS表中的聪明方法是什么?
2
首先创建多边形的线段:stackoverflow.com/questions/7595635/…然后起点和终点坐标应移至x1,y1和x2,y2之类,并且比ST_Azimuth(ST_Startpoint(geometries),ST_Endpoint(geometries)) 。(postgis.org/docs/ST_Azimuth.html)–
—
塔马斯·科萨
@TamasKosa:您有一个很好的答案的本质。为什么不将其扩展为一个?同样,对于法线,方位角需要+/- pi / 2。
—
马丁F
@TamasKosa这也是我也在考虑的一种方法。使用ST_ExteriorRing,然后按照您的说明获取方位角。由于建筑物可以具有不同数量的边,因此理想情况下如何存储结果?在如上所述的表格中?我同意MartinF,这几乎是一个答案;)
—
n1000
只是好奇,您为什么要法线...暴露在阳光下?
—
马丁F
问题的第一部分已得到解答-您可以使用ST_Dumppoints和ST_Azimuth。对于第二部分,由于没有输出空间元素,因此我认为将找到一个指向polygonID和edge_id的链接。
—
约翰·鲍威尔