在可及区域上建立多边形
我目前在等时线和基础算法领域中工作。现在引起问题的不是等位线本身的计算,而是结果的可视化。 我的等时线算法的结果是点和边。实际上,我确实有一个可行的解决方案,但是对于3873个边缘和1529个节点而言,事情似乎要花很多时间(在装有2015 Core i7 CPU和相当快的SSD的Lenovo T440s笔记本电脑上大约需要2.0秒)。而不是几秒钟,我想要的更像是msec :-)。 也许有人可以帮助我减少构建可视化可到达区域的多边形所需的计算时间。 但是等一下……第一件事! 这是等边线的计算结果, 这些边线是我的可视化效果: 这些边线存储在PostGIS数据库表中,是简单的线串。 我要向用户显示的内容如下所示: 请注意图片最南端和最东端的断开区域。这些应绘制为单独的区域(因此此处不允许合并:-) 目前,我正在使用此查询: SELECT ST_AsGeoJson(St_Transform(ST_Multi(ST_Collect(polygons)), 4326)) AS coverage FROM ( SELECT ST_MakePolygon(ST_ExteriorRing(ST_GeometryN(segments, generate_series(1, ST_NumGeometries(segments))))) AS polygons FROM ( SELECT ST_Union(ST_Buffer("GEOMETRY", 20, 'quad_segs=2')) AS segments FROM my_edges AS a ) AS b ) AS c 我已经做了一些实验,并且阅读了很多文档,但是我找不到更好的解决方案。 在我眼中,最大的问题是ST_Union的用法(如docs中所述,此功能可能很慢)。有趣的是,用ST_Collect替换它似乎会减慢ST_Buffer的计算,因此以下所有查询甚至花费更长的时间,尽管它不会填充边缘之间的区域(它只会在线条周围创建缓冲区): SELECT ST_AsGeoJson(St_Transform(ST_Multi(ST_Collect(polygons)), …