我的目标是在假设晴朗的天空下,使用 Python 计算给定一天太阳照在给定位置的小时数。问题源于寻找房地产。我想知道我在一些房产上实际能晒到多少阳光,这样我就不必依赖房地产销售人员的陈述,而可以仅仅根据地址来判断一个房产。我正在搜索附近有几座山脉的区域,这应该在计算中加以考虑。我想使用的方法如下:
- 对于一整年(1.1.2020 至 31.12.2020),使用给定的时间分辨率(例如分钟),计算定义位置的太阳高度角和方位角。
- 查找从该位置看到的附近障碍物的角高度,产生方位角和高度角的值对。这可以是树木、建筑物或已经提到的山脉。让我们假设树木和建筑物可以忽略不计,主要是山脉带走了太阳。
- 对于每一天,在给定的分辨率下,在太阳的方位角位置检查太阳的高度角是否高于障碍物的高度角。对于一年中的每一天,我可以知道在什么时候可以看到太阳。
步骤 1 和 3 很简单。对于第 1 步,我可以使用例如 Python 模块 pysolar。步骤 2 更复杂。如果我站在一个延伸到地平线很远的完全平坦的平面上,那么所有方位角的障碍物高度都将为 0。如果附近有山,我需要知道山的形状,从位置上看。不幸的是,我什至不知道从哪里开始解决第 2 步,也不知道如何命名这个问题,即我不知道如何在谷歌上搜索解决方案。在最好的情况下,会有一个 Python 模块为我进行计算,例如通过连接到基于 OpenStreetMap 或其他服务的地形数据。如果这样的模块不存在,我将不得不手动编程访问地形数据,然后进行某种类型的网格搜索 - 将景观划分为精细网格(可能是球坐标),计算从位置看到的网格点的高度和方位角(正在考虑中地球曲率和该位置的仰角)并找到给定方位角的最大值。有没有更简单的方法来做到这一点?是否有执行此操作的 Python 模块?