天象四波段云图的atsa掩蔽方法

pyatsa的Python项目详细描述


皮萨

pyatsa在卫星图像中发现云。

此回购协议包含Pyatsa包,其中移植了Zhu和Helmer 2018的原始ATSA方法和代码,以及示例笔记本。目前,python版本产生的结果几乎相当于planet lab为加纳各地planetscope 4波段图像提供的可用数据掩码。在有许多明亮的不透水表面、明亮的土壤或水的情况下,pyatsa在云阴影类中产生大量假阳性,并从云中产生假阳性斑点。这些是正在研究的主要问题。

安装

pip install pyatsa

从具有依赖项的源安装

conda env create -f environment.yaml
conda activate pyatsa
# or anaconda3 if you use anaconda or whatever the path to your python file is
flit install --symlink --python ~/miniconda3/envs/pyatsa/bin/python3.7

Pyatsa与原ATSA之间的差异,作者:Zhu和Helmer,2018
  • 在计算时间序列图像的晴空线时,朱将云的概念设定在0.5-1.5之间,但数值太低会导致太多的假阳性。
  • 我选择在scikit图像中使用li的交叉entrpy阈值方法,而不是反向距离加权来分割场景几何计算出的潜在云阴影区域内的云阴影。这是更简单的代码,似乎能提供更好的结果,idw方法有一个强烈的偏见,只掩蔽阴影直接邻近云。我观察到的云阴影离他们的云阴影几乎有一公里远,遍布加纳,那里正在测试pyatsa。虽然在没有云的地方会产生更多的误报,但更多的实际阴影会被正确地遮住。

与原始ATSA IDL代码相比

最初的atsa程序由作者在https://xiaolinzhu.weebly.com/open-source-code.html分发。要运行,必须安装idl和envi。然后:

  1. 通过调用终端中的idlde启动idl ide

  2. 在idld中运行ENVI,需要isnce envi函数才能打开时间序列文件

  3. 运行CD, "<path to directory with ATSA-Planet.pro>"

  4. .r ATSA-Planet.pro

    编译atsa-planet.pro文件
  5. 使用idlde中的ATSA调用idl脚本

idl脚本将保存一个以“.sav”结尾的文件(您需要编辑该脚本以更改计算机上该文件的输出路径)。它将包含脚本中的所有变量和结果。可以用scipy.io.readsav作为python字典读取该文件,其中每个键都是origianl idl变量名。然后可以在pytests中使用它来检查协议。

要运行测试,请导航到atsa python文件夹并运行pytest test_pyatsa.py。pytest将检查包含单词“test”的任何函数并执行该函数,为每个测试函数生成时间和测试结果。pytestfixture用于定义测试之间共享的变量。这些测试目前使用两个fixture,一个用于python版本的配置(从idl版本复制),另一个用于~3gb.sav文件的fixture,该文件包含idl版本的所有变量。

有关IDL版本的说明,以帮助调试

IDL代码对于在水域上运行的循环(由预先存在的水面罩标识)和陆地区域具有独立的。

水膜在水的地方为0,在没有水的地方为1。土地类别的遮罩值如下。

  • 3-背景/SLC错误,缺少数据
  • 2-云(见第365行至第378行)
  • 1-净空着陆(见第323至331行,其中IDL从GE条件返回1或0)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何将长字符串转换为短得多的字符串   java类型ArrayList<Boolean>中的toArray(T[])方法不适用于参数(Boolean[])   java xfire webservice客户端获取空响应   java软件框架和软件平台有什么区别?   java构建了一个监听数据库更改并调用其他方法的软件。我做得对吗?   安卓 studio(java)中的Paypal:与服务器通信的问题   我们如何在运行时更改java提供的内置注释的消息   java成批进行http调用   序列化   当我使用Tomcat运行我的应用程序时,我得到了java。网MalformedURLException:本地主机名未知:java。网未知后异常   操作系统Java内存映射文件和刷新   java无法用v6构建JXBrowser jar。18+   java有没有办法从运行在同一台服务器上的代码中获取服务器指纹?   使用“代理”用户的java Spring Active Directory身份验证   在Android(Kotlin/Java)活动之间发送图像   java显示ArrayList对象?