【问题标题】:How to insert random polygons within certain area or square km in PostgreSQL如何在 PostgreSQL 中的特定区域或平方公里内插入随机多边形
【发布时间】:2015-03-06 08:55:08
【问题描述】:

如何在特定区域或平方公里内插入/创建任何随机点(比如孟买)

考虑区域是孟买,我想插入该区域内所有可能的随机点

我的想法是像存储过程一样在 Postgres 中编写自定义函数

具体:我需要有一个固定区域,即孟买 .. 在这个区域内我想生成一些小多边形,我关心的是如何获得孟买的坐标,或者如何使用边界坐标插入孟买?

【问题讨论】:

  • 插入所有个可能的随机点 - 你确定吗?一个区域中有无数个(随机)点。
  • 不确定是否要测试它的负载平衡..假设给定一个多边形,在整个区域内该多边形内有多少个小多边形(前孟买)
  • 如果你想把一个多边形分解成更小的块,这是一个不同的问题;请更新这个或发布一个新的。
  • 你的问题有点不清楚。随机点不会创建有用的有效多边形。你到底想做什么?

标签: postgresql postgis


【解决方案1】:

创建一个名为“Location”的表,其中包含两个十进制列 x 和 y。

使用random() 插入记录以生成坐标,其中 x 和 y 具有您指定的最大值。

您可以在函数中执行此操作,但为什么不能直接在 SQL 语句中执行 - 您可以从命令行或 pgAdmin 执行它。

关于如何使用随机数的 Stackoverflow 回答:Generate a random number in the range 1 - 10

编辑 - 原始问题编辑后多边形要求的附加信息

在 Integer 类型的“Location”中添加一个额外的列,将其命名为 shape_id

对于每个 shape_id,对于多边形的三个以上的点,将有三行或更多行。

在表格中插入位置时,您需要检查该 shape_id 的先前条目,并确保它满足多边形的规则。

【讨论】:

  • 如果你使用 random() 创建一个多边形,你最终会得到意大利面条。有更复杂的算法来创建非自相交的多边形,但是 OP 问题对于需要什么有点模糊,必须说。
  • @JohnBarça 修改了问题以添加以前不存在的多边形要求。我可以修改答案或删除它,你说得对,它会生成“意大利面条”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-20
  • 1970-01-01
  • 2010-09-19
  • 2016-01-15
相关资源
最近更新 更多