导航:首页 > 源码编译 > 天气预报的编译器

天气预报的编译器

发布时间:2022-12-26 22:24:25

Ⅰ 运行WRF气象模拟软件需要什么配置

要利用气象模式进行分析,首先第一步自然是要安装分析模式。

目前来说在我们这一行(咳咳,引自本实验室某师妹话说),主要就是用MM5(第五代中尺度模式)和WRF(天气预报研究模式)两种。而不管是哪种,一般都是在大型机(传说中的高性能计算平台)上并行运行计算的。

因此我的师妹们(嗯,是的,NUM>3,同时却只有一个师弟...我为以前同在污水系的师弟们流泪...)劝我还是放弃安装直接开跑算了...可是!身为一个死理性派&钻牛角尖党&为国家节省能源不占用其他人资源的好同学,我还是决定在实验室分我的电脑上尝试安装WRF并练习各路test...(我是不会说我用这些理由捞了一台4核8G内存的电脑的)

正如@volley兄所言,气象界一般是用Fortran语言,在WRF安装的时候一般用到的编译器包括PGI、ifort、gFortran等。在AMD处理器上,用PGI会好些,因为它有带一个优化包,而ifort就是Intel家的,所以你懂的...至于gFortran,虽然它是开源的,但在64位系统上的性能稍差些...

在安装WRF前,还需要安装读取气象通用格式*.nc的netCDF,在安装WRF主程序包之后,还可以安装各种模组如WPS、WRF-Chem、WRFDA等...

因此可怜的我的安装顺序是:

1.先把电脑硬件组装起来;

2.安装某一64位版本的linux(我是不会告诉你我既安装了CentOS又安装了Fedora还安装了ubuntu...大硬盘不能拿来装毛片只能拿来装了,55555);

3.安装对应版本的PGI编译器(我要吐槽:鬼知道差一点版本就出各种各样的稀奇古怪的问题,幸好这个世界上有各种WRF论坛各种教程和各种达人...”版本“是在广州这个地方我既讨厌的”空心菜“后讨厌第二个东西...);

4.安装相应版本(”版本“,你又出现了!!!)的netCDF;其实在此之后也可以安装MM5...

5.安装WRF——WPS——WRF-Chem等,前面编译器等如果没问题,在此就会很顺畅...不由得感叹果然第一次最辛苦,以后越**越顺畅...请不要掉节操啊喂...

6.跑test...这里呢就是在设定各种各样的天气条件了,借用某师兄边喝咖啡边神神叨叨的话说,这一步骤就是在感受成为上帝的感觉...喔不,是雷公电母风神雨神....

Ⅱ 如何在Linux 命令行下浏览天气预报

在 Linux 下安装 wego
安装 wego 相当简单。wego 是用 Go 编写的,引起第一个步骤就是安装 Go 语言。然后再安装 wego。
$ go get github.com/schachmat/wego
wego 会被安装到 $GOPATH/bin,所以要将 $GOPATH/bin 添加到 $PATH 环境变量。
$ echo'export PATH="$PATH:$GOPATH/bin"'>>~/.bashrc
$ source ~/.bashrc
现在就可与直接从命令行启动 wego 了。
$ wego
第一次运行 weg 会生成一个配置文件(~/.wegorc),你需要指定一个天气 API key。 你可以从 worldweatheronline.com 获取一个免费的 API key。免费注册和使用。你只需要提供一个有效的邮箱地址。

你的 .wegorc 配置文件看起来会这样:

除了 API key,你还可以把你想要查询天气的地方、使用的城市/国家名称、语言配置在 ~/.wegorc 中。 注意,这个天气 API 的使用有限制:每秒最多 5 次查询,每天最多 250 次查询。 当你重新执行 wego 命令,你将会看到最新的天气预报(当然是你的指定地方),如题图显示。
显示出来的天气信息包括:(1)温度,(2)风速和风向,(3)可视距离,(4)降水量和降水概率 默认情况下会显示3 天的天气预报。如果要进行修改,可以通过参数改变天气范围(最多5天),比如要查看 5 天的天气预报:
$ wego 5
如果你想检查另一个地方的天气,只需要提供城市名即可:
$ wego Seattle

问题解决
可能会遇到下面的错误:
当你在一个不支持原生 Go 编译器的环境下运行 wego 时就会出现这个错误。在这种情况下你只需要使用 gccgo ——一个 Go 的编译器前端来编译程序即可。这一步可以通过下面的命令完成。
$ sudoyum install gcc-go
$ go get-compiler=gccgo github.com/schachmat/wego

user:Currentnot implemented on linux/amd64

Ⅲ 怎么用VB.net visual basic项目编写天气预报程序

Visual Basic通用报表设计小结

本文对vb设计报表的方法作了一个小结,大家都知道,在VB平台下制作报表大致有两种选择:使用VB自带的Data Report控件和借助第三方软件。其中第三方软件比较着名的就是MS Excel和Seagate公司的CrystalReporter,以下就这三个方案进行详细的讨论。

1. Data Report控件

1.1 Data Report控件使用方法

由于是VB自带的控件,所以使用相对比较方便。使用方法是:首先在"工程"菜单下面选择"添加Data report"选项,这样Data Report控件就选入到了应用程序。

使用Data report的情况大多数采用数据绑定的模式,也就是将此控件与数据库的数据表绑定起来以便可以不用编写代码就轻松完成报表的设计。要使用数据绑定就必须要指定数据源,这里的数据源不是数据控件而是数据环境(Data Environment),选择"工程"菜单下面选择"添加Data Environment"选项就可以将数据环境添加进应用程序中。数据环境有两个重要的属性:Connection 和Command属性,前者是连接指定的数据库,后者连接指定的数据表,一旦这两者都设置成功之后,就可以把数据环境作为数据源了。只需要把Data report的DataSource属性设置为前面的数据环境对象以及把DataMember设置为数据环境对象的Command对象即可。

1.2 Data Report控件界面元素

完成了Data report控件的数据绑定工作之后就可以直接控制报表的制作与显示了。这里首先熟悉一下Data report控件的显示界面:

Data report控件一共有5个区组成,分别是报表头、页面头、细节区、页面注脚和报表注脚。报表头和报表注脚是用分别用于整个报表的最上部和最下部,它们将出现于整个报表的每一页,可以放置一些报表名称,时间之类的固定文本;页面头和页面注脚只能出现在当前页的最上部和最下部,也就是说它只能出现在当前页中,不出现在其他页面中,可以放置随页面变化的一些量比如页码等;而细节区就是用来进行实际显示的区域,它是我们最为关心的区域,通过在此区域内放置显示控件可以控制报表的实际显示输出。这里介绍一下放置文本框控件的使用方法,其实在绑定情况下只需要设置其DataMember和Datafield即可,前者用来指定数据表,可以设置为前面数据环境对象的Command对象,后者是指定数据段,即绑定的数据库的指定字段。这样不需要编写任何代码就可以实现报表的显示工作。

1.3 Data Report控件的打印功能

对于报表的打印可以直接使用Data report自带的打印功能,即可以实现简易的报表打印。不过为了实现比较复杂的打印功能,也可以通过程序控制的方法来进行。这里只是给出一个实现思路:首先需要制作一个按钮控件来显示"打印设置"的窗口,通过这个窗口用户可以设置打印的相关的参数,然后在实现打印的子模块中使用VB内嵌的printer对象来实现真实的打印,该对象能够对打印的当前位置进行定位,而且对打印的字体等参数进行控制,所以结合"打印设置"窗口可以实现类似于word里面的打印功能。

2.MS Excel

说起报表设计应用程序,无意微软的Excel是一支独秀,MS Excel就是用来进行表格和报表设计用的应用程序,它具有优秀的方格控制和宏代码定制功能。所以如果在设计自己的应用程序的时候能够结合到Excel的话,那么你的应用程序就应该是相当的完善了,因为无论是编辑还是打印功能,Excel都提供了很完美的解决方案,所以你的应用程序所要做的事情就是实现程序和Excel通讯即可。

事实上,可以使用VBscript可以将VB与Excel两者连接起来。以下就简要介绍在VB下开发基于Excel的编程思路。

在VB中处理Excel的对象大致分为五个:Application对象、WorkBook对象、WorkSheet对象、Range对象以及Cell对象。它们的功能分别如下:

Application---------用来指代整个应用程序。

WorkBook----------表示工作簿对象

WorkSheet---------表示工作表对象,注意,一个工作簿可以包含多个工作表,它们就类似于多文档中的框架窗口和里面的单个视图一样。

Range-------------表示工作表中的某个区域范围对象,特殊情况下也可以只代表一个Cell。

Cell---------------表示特定工作表的一个单元格对象。这个对象的使用频率是最高的。

清楚了以上的五个对象的应用范围,那么使用它们就很简单了,不过在使用这些对象之前,首先需要对它们进行声明。方法是在"工程"的"引用"对话框之下选择"Microsoft Excel9.0 Object Library",这样就将整个Excel对象库就引入到程序中来了。

下面举一个示例,其实现的功能是打开一个工作簿。

Function OpenBook(strFilePath As String) As Boolean

' This procere checks to see if the workbook

' specified in the strFilePath argument is open.

' If it is open, the workbook is activated. If it is

' not open, the procere opens it.

Dim wkbCurrent As Excel.Workbook

Dim strBookName As String

On Error GoTo OpenBook_Err

' Determine the name portion of the strFilePath argument.

strBookName = NameFromPath(strFilePath)

If Len(strBookName) = 0 Then Exit Function

If Workbooks.Count >0 Then

For Each wkbCurrent In Workbooks

If UCase$(wkbCurrent.Name) = UCase$(strBookName) Then

wkbCurrent.Activate

Exit Function

End If

Next wkbCurrent

End If

Workbooks.Open strBookName

OpenBook = True

OpenBook_End:

Exit Function

OpenBook_Err:

OpenBook = False

Resume OpenBook_End

End Function

3.Crystal Reporter(水晶报表)

做为一个优秀的报表软件,水晶报表是实际应用中最多的方案。在这一节里主要介绍一下水晶报表的定制和显示,打印功能的实现。

首先要区分Crystal Reports插件程序和Crystal Reports控件。前者主要用来创建报表模板,后者主要是用来在程序中显示和打印报表,这两者的分工决定了它们程序中的功能的不同。

其中Crystal Reports的插件程序可以从Seagate公司的官方网站上下载最新的测试版本。

3.1 Crystal Reports插件程序的使用

选择"外接程序"菜单的"报表设计器"选项,则VB将执行Crystal Reports Pro插件应用程序。在Crystal Reports Pro里选择"新建报表"图标,可以选择8标准模板和一个自定义的模板来开始报表工程。

整个水晶报表的使用跟第一节的Data Report的使用很类似。首先需要给报表选择数据源,(即数据库),然后就可以在报表中添加、删除、修改字段以及为记录分组,可以利用水晶报表创建很多具有自定义风格的报表。由于本身Crystal Reports插件程序就是一个功能强大的报表设计软件,这里就不能一一的讲解了,有兴趣可以参考程序自带的帮助文档。

3.2 Crystal Reports控件的背景知识

Crystal Reports Pro还提供一个报表生成模块,该模块可以连接到并访问VB应用程序,VB程序员不需花费大量时间写自己的代码就可再应用程序中添加复杂的报表生成及输出功能。

Crystal Reports引擎是一个动态链接库,它可以使应用程序访问并具有同Crystal Reports 一样强大的报表输出功能。应用程序是通过Crystal Reports ActiveX控件来访问引擎。再编译时应用程序同报表引擎链接,以给应用程序添加了生成报表的功能。

当程序使用Crystal Reports ActiveX控件时,可以通过再设计时设置Crystal对象属性或者再运行时改变对象属性,来建立应用程序和Crystal Reports之间的连接。通过Crystal控件的属性可以指定:

响应应用程序某个事件的输出报表的名字。

报表的目标位置(预览窗口、磁盘文件或者电子邮件等)。

想要打印的份数(如果报表提交给打印机的话)。

输出文件的信息。

预览窗口的大小及位置信息(如果报表在预览窗口中显示时)。

选择公式信息(如果在报表中限制记录的话)。

排序信息。

其他相关的属性。

这里要注意一点的是,Crystal控件必须在由Crystal Reports Pro创建的报表中使用,而试图在VB应用程序里引用之前,必须首先创建报表。

3.3 Crystal Reports控件的使用

了解了Crystal Reports控件的功能,那么就可以使用它了。首先通过"工程"的"部件"选项里面选择"Crystal Reports Control",那么VB的工具箱里面就添加了Crystal Reports控件了。

注意,对于Crystal Reports控件的最重要的属性就是ReportFileName了,把它设置为前面已经在Crystal Reports Pro里定制好的报表模板的文件路径。那么只需要调用控件的PrintReport方法就可以将报表显示出来了。

相对于Data Report控件来说,Crystal Reports控件的功能更加的完善,报表预览,打印,编辑修改等功能都很完善,所以在实际的报表应用设计方案中,使用Crystal Reports的相对较多。然而Crystal Reports控件也有它的局限性,即它不能在运行时创建自定义的窗口。可以使用控件的数据绑定属性来创建数据绑定报表,但是报表本身的格式都是由Crystal Reports控件内部进行处理的。一般说来,Crystal Reports控件不提供在程序中对报表字段级的访问。这一缺陷可以通过设计出足够多的报表来弥补。

4.其他方法

除了通过上述的三种方法来实现报表设计以外,当然也可以直接利用Win32 API来进行直接进行设计,这种方式是最为灵活也是最为繁琐的方式,因为所有的编辑、修改、打印等功能都是由程序控制,所以一般情况下不会使用这样的方式来处理,这里就不介绍了。

5.小结

报表设计是程序员经常要遇到的问题,本文主要介绍目前主流的报表设计方案,由于所涉及到的知识点比较多,限于篇幅,在这里只是作了简要的介绍,希望可以起到抛砖引玉的作用。

http://www.learn-it.cn/Info_9007.htm

Ⅳ 求android天气预报的开发源代码

package com.nrzc.weatherstation;

import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;

import java.util.Timer;
import java.util.TimerTask;

/**
* 环境传感器
* 气象站
*/
public class MainActivity extends AppCompatActivity {

private SensorManager sensorManager;
private TextView temperatureTextView;
private TextView pressureTextView;
private TextView lightTextView;

private float currentTemperature=Float.NaN;
private float currentPressure=Float.NaN;
private float currentLight=Float.NaN;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

init();

Timer updateTimer=new Timer("weatherUpdate");
updateTimer.scheleAtFixedRate(new TimerTask() {
@Override
public void run() {
updateGUI();
}
},0,1000);
}

private void init(){
temperatureTextView=(TextView)findViewById(R.id.temperature);
pressureTextView=(TextView)findViewById(R.id.pressure);
lightTextView=(TextView)findViewById(R.id.light);
sensorManager=(SensorManager)getSystemService(Context.SENSOR_SERVICE);

}

private final SensorEventListener tempSensorEventListener=new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
currentTemperature=event.values[0];
}

@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {

}
};

private final SensorEventListener pressureSensorEventListener=new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
currentPressure=event.values[0];
}

@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {

}
};

private final SensorEventListener lightSensorEventListener=new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
currentLight=event.values[0];
}

@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {

}
};

@Override
protected void onResume() {
super.onResume();

Sensor lightSensor=sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
if (lightSensor!=null)
sensorManager.registerListener(lightSensorEventListener,
lightSensor,
SensorManager.SENSOR_DELAY_NORMAL);
else
lightTextView.setText("Light Sensor Unavailable");

Sensor pressureSensor=sensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE);
if (pressureSensor!=null)
sensorManager.registerListener(pressureSensorEventListener,
pressureSensor,SensorManager.SENSOR_DELAY_NORMAL);
else
pressureTextView.setText("Barometer Unavailable");

Sensor temperatureSensor=sensorManager.getDefaultSensor(Sensor.TYPE_AMBIENT_TEMPERATURE);
if (temperatureSensor!=null)
sensorManager.registerListener(tempSensorEventListener,
temperatureSensor,
SensorManager.SENSOR_DELAY_NORMAL);
else
temperatureTextView.setText("Thermometer Unavailable");
}

@Override
protected void onPause() {
sensorManager.unregisterListener(pressureSensorEventListener);
sensorManager.unregisterListener(tempSensorEventListener);
sensorManager.unregisterListener(lightSensorEventListener);
super.onPause();
}

private void updateGUI(){
runOnUiThread(new Runnable() {
@Override
public void run() {
if(!Float.isNaN(currentPressure)){
pressureTextView.setText(currentPressure+"hPa");
pressureTextView.invalidate();
}
if (!Float.isNaN(currentLight)){
String lightStr="Sunny";
if (currentLight<=SensorManager.LIGHT_CLOUDY)
lightStr="night";
else if (currentLight<=SensorManager.LIGHT_OVERCAST)
lightStr="Cloudy";
else if (currentLight<=SensorManager.LIGHT_SUNLIGHT)
lightStr="Overcast";
lightTextView.setText(lightStr);
lightTextView.invalidate();
}

if (!Float.isNaN(currentTemperature)){
temperatureTextView.setText(currentTemperature+"C");
temperatureTextView.invalidate();
}
}
});
}

}

阅读全文

与天气预报的编译器相关的资料

热点内容
ipad源码 浏览:696
模仿豆瓣电影小程序源码 浏览:36
f12之后怎么进入命令符模式 浏览:453
输入网址找不到服务器IP地址 浏览:221
linux转换二进制文件 浏览:225
python的shell是什么意思 浏览:126
python写spark 浏览:614
苹果手机编译word 浏览:237
大开解压时刻 浏览:758
小数乘整数的算法教案 浏览:503
9个命令 浏览:420
单片机课程设计论文 浏览:419
android上机试题 浏览:965
android显示intent 浏览:919
linuxarp清除 浏览:875
程序员自带电脑 浏览:123
android怎么学 浏览:426
pdf怎么盖电子章 浏览:413
在哪里可以租个云服务器 浏览:861
基于msp430单片机的设计 浏览:559