计算可见天空百分比?


14

任何人都可以尽可能简单地解释如何计算可见天空百分比吗?

我进行了卫星勘测,得出了建筑物的高度和建筑物之间的距离。

如何使用这些数据根据站立的位置计算可见的天空百分比?

Answers:


12

通常,我们具有有关地面位置的数据,因此我们必须使用它。地面决定了3D立体。您将该图径向投影到以查看者为中心的单位球体上:这将地面映射到球体中的某个区域。计算剩余区域的面积:这是天空对角的立体角(以弧度表示)。将其除以球体的总面积(等于4 pi),然后乘以100,即可得到天空百分比。

如果您希望使用更生动的解释,请将观看者放在一个小球形气泡的中心,然后让她在天空上绘画。将她使用的油漆量除以绘制整个气泡所需的量,然后乘以100。

实际上,这里有一些不太简单的技术细节。

当地面以三角网(TIN)给出时,到球体上的投影相当简单,因为您只需编写代码即可将三角形投影到球体上。当将地面作为网格高程模型(DEM)给出时,您可以将每个网格像元构想为3D四边形。您可以沿对角线将其分成两个三角形,并将每个三角形映射到球体上。无论哪种情况,您都会在球体上留下一组投影三角形。通过将球体投影到地图上(例如,使用立体投影),可以将这些三角形聚集到多边形区域中,从而减少到平面计算几何的标准问题(例如,使用平面扫描方法)。其余的操作很简单(对于GIS)。

此图显示了一个小巧的摩天大楼模拟城市,以一个人妖般的投影为中心,直视观察者市中心。GIS可以“合并”(形成这些多边形的并集)代表这些建筑物的侧面和屋顶的多边形,然后计算剩余的(白色)空间的面积。之所以选择Gnomonic投影,是因为将直线的建筑线渲染为线段而不是曲线。

模拟建筑物

当您只有地面和建筑物时,可以启用GIS进行此计算。这些建筑物最有可能以矩形的集合形式提供。矩形的顶点具有相对于查看者的欧几里得坐标(x,y,z)。将其转换为球坐标:即纬度和经度。为转换后的矩形创建一个多边形。对所有建筑物所有部分的所有矩形执行此操作,从而生成“多边形要素图层”。然后,在GIS中,(1)计算要素的理论集合,(2)计算结果面积,(3)从地球表面积的一半中减去(另一半用于地面), (4)除以整个地球面积(乘以100得到一个百分比)。计算工作量与N * log(N)成比例,其中N是顶点数。精度取决于GIS表示矩形的程度(您可能需要将矩形边分成更紧密间隔的顶点的序列)。根据您的准确性要求,您可以考虑使用基于蒙特卡洛的方法(例如,在另一个答复中提倡使用光线追踪),一旦您拥有数十万个顶点,也就是说,一旦观看者被数以万计的建筑物完全包围(并且可以看到其中的一部分):-)。


我进行了卫星调查,得出了建筑物的高度和建筑物之间的距离,如何根据我所处的位置使用这些数据来计算可见的天空百分比?如果可能的话,您可以举个例子,我应该首先写这个对不起

@chris可以编辑您的原始问题。只需指出您已修改问题的哪些方面,以便人们了解任何现有答案和评论的上下文。
ub

您可能想更明确地说,投影后需要执行并集步骤以防止重复计算重叠的遮挡物?
Dan S.

@Dan在步骤1 :-)中,单词“ union”就在其中。
ub

@whuber就是这样;我想我的评论是在您进行编辑之前发表的。要么是因为昨天咖啡因严重短缺。
Dan S.

5

这是来自计算机图形世界而不是GIS的答案-因此,它是对算法的描述,而不是针对使用哪种工具的说明。

定义:射线是原点+方向;它是从原点开始并沿该方向延伸到无穷远的线。

您需要以下基本成分:

  • 测试以查看给定的射线是否击中地面的能力。

  • 测试以查看给定的射线是否击中建筑物的能力。

  • 在3D笛卡尔坐标空间中的所有数据(建筑物,代表地面的信息)。

进行射线测试的确切公式取决于您如何表示“地面”(完美的球体?地形?)和“建筑物”(挤压的矩形?完整的3D模型?)。对于简单的几何图形,它们很容易找到并且易于实现。(例如,搜索“射线立方体相交”)。

无论如何,从那里得出的关于某个点的天空可见性百分比的答案都是微不足道的:从您的查询点发射具有随机方向的大量光线。从测试点可见的天空比例等于撞击建筑物或地面的光线数量。

答案并不精确,但是您可以通过添加更多光线来将其计算到任何所需的精度水平。

如上所述,它不一定很快。但是您可以应用大量有据可查的优化。

(我希望,为计算多个点和相同建筑物数据集的天空能见度,此方法将在添加简单空间索引后将基于重投影的方法吹出水面。)


主要问题是精度仅随射线数量的平方根增加。例如,如果天空百分比为50%,则需要100束光线才能获得5%的精度(这实际上意味着您有95%的信心能达到+ -10%的精度),10,000束光线的能获得0.5%,1,000,000束光线的能获得0.05 %,(三位数)等
whuber

@whuber我同意,但是(1)对于所描述的问题,准确度超过一两位数字是愚人的事,(2)自适应采样将落入“大量有据可查的优化方法”中过去;)。但是,无论它是否是“最佳”方法,当然都是有条件的。
Dan S.

@Dan OK,自适应采样是个好主意。但是,如何在实践中实现呢?假设您有一个DEM,例如附近有几十座建筑物。该算法将如何工作?很难想象有一种比直接计算天空覆盖范围更简单或更准确的有效算法。
ub

@whuber,我将分两部分进行回复...第一部分:自适应采样归结为将射线偏向它们更可能提供信息的位置,然后在积分时考虑偏向。一种简单有效的方法是执行统一的初始采样,然后递归细分和重新采样足够不均匀的半空间。最终答案=样本的加权平均值(权重=样本包含搜索空间的面积)。
Dan S.

关于准确性:自适应采样意味着更难推断准确性。您可以获得与最初的统一样本相同的基线精度,另外还高度依赖于自适应技术和场景几何中高频特征的比例的其他精度。但是,我认为,在“现实世界”中,您将能够很快收敛到比源数据小的误差%的位置。
Dan S.

3

从二维表示所见,天空视野因子(SVF)由某个观测点上方的可见天空(Ω)部分定义(请参见图a)。该算法计算水平方向γi在n个方向(此处显示八个)到指定半径R(b)的垂直仰角。

空中因素定义 为了克服现有可视化技术的缺点,提出了“天空因素”,例如分析性山体阴影中的定向照明问题。

表示可见天空部分最方便的方法是立体角Ω。这是一个对象观察者看到的物体大小的度量。物体的立体角与物体投影到以观察点为中心的单位球面上的面积A成比例。

SVF介于0和1之间。值接近1表示几乎整个半球都是可见的,在暴露的特征(平面和峰)中就是这种情况,而值0则存在于深凹陷和深谷的下部几乎看不到天空的地方 SVF是一个物理量(如果我们不通过垂直夸大来操纵高程数据)。

正如@mic_cord所指出的那样,Remote Sens。2011,3(2),398-415中发表了有关使用SVF进行数据可视化的论文。doi:10.3390 / rs3020398。

可从http://iaps.zrc-sazu.si/en/rvt#v获得免费的用于计算SVF(及更多)的工具。


+1插图和参考文献为此增加了清晰度和权威性,这是您在此处的第一篇文章。欢迎来到我们的网站!
ub

2

Ecotect(现在是AutoDesk工具)使您可以执行此操作。更一般而言,在采光领域经常对此进行检查,并且该领域的工具可能比GIS更易于使用。(尽管我听说过可以执行此操作并计算日照量的GIS插件,但我从未设法找到它)。


ESRI的太阳能分析师?(它通过创建投影天空的网格然后汇总网格来工作。)
whuber

1
我认为这仅适用于植被,并未考虑建筑物等的遮盖。esri.com/software/arcgis/extensions/spatialanalyst/solar.html帮助文件中提到它考虑的是地形,但不考虑建筑物:例如,帮助。 arcgis.com/en/arcgisdesktop/10.0/help/index.html#/...
DJQ

建筑物(至少没有悬垂的建筑物)可以轻松地“烧成”网格。这可能不是一种有效的解决方法,因为您需要的单元格很小(而且Solar Analyst有其自身的局限性...)。我只是以为你可能一直在想。
Whuber

@whuber我在想更多关于墙壁的阳光照射(例如,朝南的区域)。我假设计算仅考虑网格单元区域,而不考虑“墙”(像素而不是体素,这是描述它的另一种方式)。
djq 2011年

2

在GRASS GIS版本7(实际上是不稳定的)中,有命令r.skyview(基于命令r.horizo​​n,在稳定的GRASS v.6中也可用)。

它读取代表地形模型的光栅图像,其像素值对应于地形特征高度(例如建筑物高度),并针对每个像素计算“空中视野系数”。

您首先需要将数据(未知格式)转换为栅格数据集。

看到:

http://grass.osgeo.org/grass70/manuals/addons/r.skyview.html

http://www.mdpi.com/2072-4292/3/2/398

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.