如何确定日落/日出,包括地形阴影。

时间:2012-10-07 19:23:35

标签: geocoding google-earth google-earth-plugin geo

在Google地球中,您可以使用“阳光”图层查看任何给定日期时间地形投射的阴影:http://i.stack.imgur.com/YFGMj.png

但是,我无法找到任何方法来从API访问阳光/光度/阴影/等值。

我正在寻找一种方法来提供Lat,Long和DateTime来确定一个区域是否在阳光下(考虑到地形阴影,有无数的服务可以提供简单的日出和日落时间,但这些不是考虑地形)。这可以通过Google Earth手动完成,但我正在寻找一种编程方法。

感谢您的任何想法,想法和想法...

2 个答案:

答案 0 :(得分:3)

我意识到这是一个老问题,但它在我刚刚进行的谷歌搜索中浮出水面,我喜欢焦点。

由于你正在寻找一种程序化的方法来确定经度和纬度元组给出的地球点在给定时间是否暴露在阳光下,我现在无法帮助你。但是,如果我们发现这是许多人需要的功能,我能够很容易地设置这样的API。在suncurves.com,我们计算出考虑地形的日出和日落时间。到目前为止我们设置的解决方案是一个Web界面,用户可以在其中搜索地址或将图标拖放到地图上,以获得一年中的日出和日落时间,以确定地形的确切位置。我们想为我们的数据创建一个API,但我们还没有明确规定此API的范围。你要求的是我们需要:

  1. 从观察点计算视在地平线 经度和纬度。这意味着扫描地形数据 搜索半径为30-50公里左右。
  2. 计算指定时间的太阳位置。
  3. 计算指定时间的太阳位置。确定是否 太阳在地平线之下或之上,由周围的地形给出 你的观点是大气折射。
  4. 以下是来自法国夏蒙尼的一个例子,其中日出,日落时间的常见平地版本都毫无价值。

    http://suncurves.com/v/7/

答案 1 :(得分:0)

我不确定在某个时间确定太阳或阴影中的AOI,但是您可以使用

在API中设置SUN开启或关闭

GESun.setVisibility

编辑:

使用GE插件创建LookAt with your desired AOI lat/long where the view is directly above looking straight down。根据您实际AOI的大小,我会尽可能保持视野低于地面。

然后捕获屏幕截图/图像 - 我认为这不可能通过GE(如果有人知道我想要找到的方式),所以也许使用javascript来接受它 - 我发现这个Q on SO提供一些见解。

截取GESun.setVisibility设置为ON的屏幕截图,然后另一个设置为OFF

比较两个图像的暗度/亮度等,并确定您的AOI是否在阴影中。您可能会发现将AOI包围在某种多边形中更好,以帮助您的程序将其与图像的其余部分区分开来 - 具体取决于LookAt的高度等等....

我对如何比较图像没有任何想法,但是又一次搜索SO导致this(我猜想在PHP ImageMagick中找到COLOR_BLACK的值)和this(颜色桶的想法)。 根据您选择的方法,在进行比较之前将图像更改为黑/白可能会有所帮助。