小编mar*_*ena的帖子

从Voronoi镶嵌到Shapely多边形

从一组点我用scipy建立了Voronoi曲面细分:

from scipy.spatial import Voronoi
vor = Voronoi(points)
Run Code Online (Sandbox Code Playgroud)

现在我想从Voronoi算法创建的区域构建Shapely中Polygon.问题是Polygon类需要一个逆时针顶点列表.虽然我知道如何订购这些顶点,但我无法解决问题,因为这通常是我的结果:

在此输入图像描述

(重叠多边形).这是代码(ONE RANDOM EXAMPLE):

def order_vertices(l):
    mlat = sum(x[0] for x in l) / len(l)
    mlng = sum(x[1] for x in l) / len(l)

    # https://stackoverflow.com/questions/1709283/how-can-i-sort-a-coordinate-list-for-a-rectangle-counterclockwise
    def algo(x):
        return (math.atan2(x[0] - mlat, x[1] - mlng) + 2 * math.pi) % 2*math.pi

    l.sort(key=algo)
    return l

a = np.asarray(order_vertices([(9.258054711746084, 45.486245994138976),
 (9.239284166975443, 45.46805963143515),
 (9.271640747003861, 45.48987234571072),
 (9.25828782103321, 45.44377372506324),
 (9.253993275176263, 45.44484395950612),
 (9.250114174032936, 45.48417979682819)]))
plt.plot(a[:,0], a[:,1])
Run Code Online (Sandbox Code Playgroud)

我怎么解决这个问题?

python gis voronoi shapely

13
推荐指数
1
解决办法
9010
查看次数

Postgres 的 CTE 与子查询性能差异。为什么?

我有两个等效的查询,它们提取特定地区 (ace) 和城市 (pro_com) 中建筑物(表 a)和最近的高速公路(表 v 中的高速公路)之间的平均距离。

这是 CTE 版本

WITH subq AS (
SELECT a.n, a.geom as g1, unnest(ARRAY(SELECT v.geom as g2 
  FROM atlas_sezioni2 as v
  where v.code = '12230' and a.pro_com = v.pro_com and a.code <> v.code  
  ORDER BY a.geom <-> v.geom LIMIT 15)) as g2
FROM atlas_sezioni2 a
where a.pro_com = 15146 and a.ace = 1 and a.code IN('11100', '11210', '11220', '11230', '11240', '11300', '12100', '14200')  
)

select avg(dist) from (
select distinct on(n) n, dist …
Run Code Online (Sandbox Code Playgroud)

postgresql postgis common-table-expression

4
推荐指数
1
解决办法
7133
查看次数