考虑到附近的山脉(使用Python),如何计算给定日期和位置的日照时数?
我的目标是在晴朗天空的假设下,使用Python计算给定一天中太阳照射到给定位置的小时数。这个问题源于寻找房地产。我想知道我在某些房产上实际能得到多少阳光,这样我就不必依赖房地产销售人员的陈述,也可以仅根据地址判断房产。我在附近有几座山的地区搜索,这应该在计算中考虑。 我想采用的方法如下:考虑到附近的山脉(使用Python),如何计算给定日期和位置的日照时数?,python,landscape,topography,Python,Landscape,Topography,我的目标是在晴朗天空的假设下,使用Python计算给定一天中太阳照射到给定位置的小时数。这个问题源于寻找房地产。我想知道我在某些房产上实际能得到多少阳光,这样我就不必依赖房地产销售人员的陈述,也可以仅根据地址判断房产。我在附近有几座山的地区搜索,这应该在计算中考虑。 我想采用的方法如下: 在一整年(2020年1月1日至2020年12月31日)内,以给定的时间分辨率(例如分钟)计算定义位置的太阳高度和方位角 从位置上查看附近障碍物的角度高度,得出方位角和高度角的值对。这可以是树木、建筑物或已经提到
步骤1和3很简单。对于步骤1,我可以使用Python模块pysolar作为示例。第二步更复杂。如果我站在一个延伸到地平线的完美平面上,所有方位角的障碍物高度都是0。如果附近有一座山,我需要知道从位置上看这座山的形状。不幸的是,我甚至不知道从哪里开始解决步骤2,我也不知道如何命名这个问题,也就是说,我不知道如何用谷歌搜索解决方案。在最好的情况下,将有一个Python模块为我完成计算,例如,通过连接基于OpenStreetMap或其他服务的地形数据。如果这样一个模块不存在,我将不得不手动编程访问地形数据,然后进行某种类型的网格搜索-在精细网格(可能是球面坐标)中划分景观,计算从位置上看到的网格点的高度和方位角(考虑地球曲率和该位置的海拔)并找到给定方位角的最大值。有更简单的方法吗?是否有Python模块可以做到这一点?如果您有高度图,并且我确信有可用的高度图,那么第2步并不难 从您的位置以360度均匀分布的方式投射
n
射线,并沿该射线从您的起始位置每隔delta
米访问所有地图位置。如果d
是一个点到您的距离,h
是它的高度,h0
是您在高度地图上的高度保持最大值沿着路径的e/e(h-h0)/d
(如果某物距离两倍远,则需要两倍高才能投射相同长度的阴影)
你几乎可以忽略地球的曲率——它对阳光遮挡的影响可以忽略不计