基于PIESDK的二次开发--土壤水反演系统

news2024/11/18 6:24:37

目录

  • 系统演示
  • 数据获取
  • 算法封装
  • 系统

系统演示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

数据获取

基于TVDI的土壤水分反演需要有地表温度和植被指数数据,该部分参考Landsat计算TVDI进行干旱监测(二)
得到两张TIF影像
在这里插入图片描述
在这里插入图片描述

算法封装

初始的.py代码参数是直接指定的,然而在封装后.exe获取输入参数和输出参数需要依靠外部赋予,所以这部分需要有改动
在这里插入图片描述
改成如下方式:
sys.argv依次来获取外部即将传入的参数,此处为何从1开始呢,因为sys.argv[0]代表算法本身。
在这里插入图片描述
在修改好参数输入方式后,可以进行封装。
在代码目录中打开cmd
在这里插入图片描述
输入口令

pyinstaller -F xxx.py

在这里插入图片描述
回车,运行
在这里插入图片描述

系统

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace new_tvdi
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog fileDialog = new OpenFileDialog();

            fileDialog.Multiselect = true;

            fileDialog.Title = "请选择文件";

            fileDialog.Filter = "所有文件(*.*)|*.*";

            if (fileDialog.ShowDialog() == DialogResult.OK)

            {

                string file = fileDialog.FileName;

                MessageBox.Show("已选择文件:" + file, "选择文件提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                textBox1.Text = file;

            }

        }

        private void Button2_Click(object sender, EventArgs e)
        {
            OpenFileDialog fileDialog = new OpenFileDialog();

            fileDialog.Multiselect = true;

            fileDialog.Title = "请选择文件";

            fileDialog.Filter = "所有文件(*.*)|*.*";

            if (fileDialog.ShowDialog() == DialogResult.OK)

            {

                string file = fileDialog.FileName;

                MessageBox.Show("已选择文件:" + file, "选择文件提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                textBox2.Text = file;

            }
        }

        private void Button3_Click(object sender, EventArgs e)
        {
            SaveFileDialog sfd = new SaveFileDialog();
            sfd.Title = "";
            sfd.InitialDirectory = @"D:\workspace_java_c++";
            sfd.Filter = "| *.tif";
            sfd.ShowDialog();

            string path = sfd.FileName;
            if (path == "")
            {
                return;
            }
            textBox3.Text = path;
        }

        private void Button4_Click(object sender, EventArgs e)
        {
            string lst = textBox1.Text;
            string ndvi = textBox2.Text;
            string output = textBox3.Text;


            string data = string.Empty;
            string str = @"D:\Learn_Python\remote_sensing\遥感指数\TVDI\dist\TVDI_exe.exe" + " " + lst + " " + ndvi + " " + output;
            System.Diagnostics.Process p = new System.Diagnostics.Process();
            p.StartInfo.FileName = "cmd.exe";
            p.StartInfo.UseShellExecute = false;
            p.StartInfo.RedirectStandardInput = true;
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.RedirectStandardError = true;
            p.StartInfo.CreateNoWindow = true;
            p.Start();
            p.StandardInput.AutoFlush = true;
            //p.StandardInput.WriteLine(str + "&exit");
            p.StandardInput.WriteLine(str);
            data = p.StandardOutput.ReadToEnd();
            p.WaitForExit();
            p.Close();
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1521715.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Javascript编程实操06】1、反转数组和字符串 2、将二维数组转一维数组

前言 1、反转数组和字符串 代码: 实现效果: 2、将二维数组转一维数组 代码: 实现效果: 总结 前言 本次主要是针对Javascript阶段的字符串与数组的实操练习,共有2个实操,大家可以在实操的过程中更加深…

ARM 寄存器学习:(一)arm多种模式下得寄存器

一.ARM7种状态以及每种状态的寄存器: ARM 处理器共有 7 种不同的处理器模式,在每一种处理器模式中可见的寄存器包括 15 个通用寄存器( R0~R14)、一个或两个(User和Sys不是异常模式,没有spsr寄存器)状态寄存器(cpsr和spsr&…

想兼职赚钱?盘点6个靠谱兼职,赚钱更轻松!

1,微头条搬砖 微头条搬砖是一个门槛不高的赚钱方式,而且不需要你有多么好的原创能力,去收集一些热门文章的素材进行文章伪原创,十分钟就能搞定,只要你的文章有爆点,足够吸人眼球,就能够获取不低…

Web核心,HTTP,tomcat,Servlet

1,JavaWeb技术栈 B/S架构:Browser/Server,浏览器/服务器架构模式,它的特点是,客户端只需要浏览器,应用程序的逻辑和数据都存储在服务器端。浏览器只需要请求服务器,获取Web资源,服务器把Web资源…

Linux服务器(Debian系)包含UOS安全相关巡检shell脚本

#!/bin/bash# Define output file current_date$(date "%Y%m%d") # Gets the current date in YYYYMMDD format output_file"server_security_inspection_report_${current_date}.txt"# Empty the file initially echo > $output_file# 获取巡检时间 (…

蓝桥杯刷题(九)

1.三国游戏 代码 #输入数据 nint(input()) Xlilist(map(int,input().split())) Ylilist(map(int,input().split())) Zlilist(map(int,input().split())) #分别计算X-Y-Z/Y-Z-X/Z-X-Y并排序 newXli sorted([Xli[i] - Yli[i] - Zli[i] for i in range(n)],reverseTrue) newYli …

Pikachu 靶场搭建

文章目录 环境说明1 Pikachu 简介2 Pikachu 安装 环境说明 操作系统:Windows 10PHPStudy 版本: 8.1.1.3Apache 版本:2.4.39MySQL 版本 5.7.26 1 Pikachu 简介 Pikachu是一个使用“PHP MySQL” 开发、包含常见的Web安全漏洞、适合Web渗透测试学习人员练…

腾讯云轻量2核4G5M服务器卡不卡?性能怎么样?

腾讯云轻量2核4G5M带宽服务器支持多少人在线访问?5M带宽下载速度峰值可达640KB/秒,阿腾云以搭建网站为例,假设优化后平均大小为60KB,则5M带宽可支撑10个用户同时在1秒内打开网站,并发数为10,经阿腾云测试&a…

C++算法学习心得八.动态规划算法(4)

1.零钱兑换(322题) 题目描述: 给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。 你可以认为每种硬币的数量是无限的。…

劲仔食品三年倍增,抢先打响鹌鹑蛋“健康”属性品牌之争?

如果说,进入2024年后,在股价继续陷入回调状态的食品板块中有个股走势表现相对亮眼,那么劲仔食品必是其中之一。 从去年发布2023年三季度业绩公告以来,其强劲的业绩表现就带动了股价走出小趋势。2023年10月23日至今2024年3月13日收…

VTK安装(C++)并配置vs

准备工作: 1.VTK下载包(此教程使用VTK8.2.0) 2.CMAKE(此教程使用3.29.0) 在此不过多赘述,可在网上搜索cmake安装 3.visual studio(此教程使用vs2019) VTK下载及编译: 1、找到自己适合的VTK版本,我选择的是VTK8.2.0。 1.1 官网下载&#xff…

向量相似性度量的常用方法

向量相似性度量的常用方法 0. 引言1. 欧氏距离(Euclidean distance)2. 余弦相似度(Cosine similarity)3. 汉明距离(Hamming distance)4. 点积相似度 (Dot Product Similarity)5. 曼哈顿距离 (Manhattan Distance) 0. 引言 今天花时间学习学习向量相似性度量的常用方法&#xf…

c语言按位与,按位或,按位异或,按位取反

1、按位与& 按位与的实现逻辑是相同为1,相异为0; 2、按位或 | 按位或的实现逻辑是有1为1,无一为0; 3、按位异或 ^ 按位或的实现逻辑是相同为0,相异为1; 4、按位取反 ~ 按位取反的实现逻辑是0改1&am…

Postman-Installation has failed

如图: 解决方法: 打开文件夹 Postman-win64-Setup 点击Postman.exe 即可

Nginx高级技术: 代理缓存配置

一、缓存说明 Nginx缓存,Nginx 提供了一个强大的反向代理和 HTTP 服务器功能,同时也是一个高效的缓存服务器。一般情况下系统用到的缓存有以下三种: 1、服务端缓存:缓存存在后端服务器,如 redis。 2、代理缓存&#…

L1-5 试试手气 【Java】

我们知道一个骰子有 6 个面,分别刻了 1 到 6 个点。下面给你 6 个骰子的初始状态,即它们朝上一面的点数,让你一把抓起摇出另一套结果。假设你摇骰子的手段特别精妙,每次摇出的结果都满足以下两个条件: 1、每个骰子摇出…

llamma笔记:部署Llama2

1 申请Llama2 许可 Download Llama (meta.com) 地址似乎不能填中国 1.1 获取url 提交申请后,填的那个邮箱会受到一封meta发来的邮件,打码部分的url,之后会用得上 2 ubuntu/linux 端部署Llama2 2.1 git clone Llama2的github 仓库 bash g…

腾讯云2核4g服务器能多少人在线?2核4G云服务器支持多少并发?

腾讯云轻量2核4G5M带宽服务器支持多少人在线访问?5M带宽下载速度峰值可达640KB/秒,阿腾云以搭建网站为例,假设优化后平均大小为60KB,则5M带宽可支撑10个用户同时在1秒内打开网站,并发数为10,经阿腾云测试&a…

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:WaterFlow)

瀑布流容器,由“行”和“列”分割的单元格所组成,通过容器自身的排列规则,将不同大小的“项目”自上而下,如瀑布般紧密布局。 说明: 该组件从API Version 9 开始支持。后续版本如有新增内容,则采用上角标单…

【矩阵】240. 搜索二维矩阵 II【中等】

搜索二维矩阵 II 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。 示例 1: 输入:matrix [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22…