導航:首頁 > 源碼編譯 > 天氣預報的編譯器

天氣預報的編譯器

發布時間: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();
}
}
});
}

}

閱讀全文

與天氣預報的編譯器相關的資料

熱點內容
閩政通無法請求伺服器是什麼 瀏覽:48
怎麼做積木解壓神器 瀏覽:203
王者榮耀解壓玩具抽獎 瀏覽:49
12位是由啥加密的 瀏覽:868
程序員編迷你世界代碼 瀏覽:895
php取現在時間 瀏覽:246
單片機高吸收 瀏覽:427
怎麼區分五代頭是不是加密噴頭 瀏覽:244
hunt測試伺服器是什麼意思 瀏覽:510
2013程序員考試 瀏覽:641
畢業論文是pdf 瀏覽:736
伺服器跑網心雲劃算嗎 瀏覽:471
單片機定時器計數初值的計算公式 瀏覽:801
win7控制台命令 瀏覽:567
貓咪成年app怎麼升級 瀏覽:692
360有沒有加密軟體 瀏覽:315
清除cisco交換機配置命令 瀏覽:751
華為刪除交換機配置命令 瀏覽:473
shell打包命令 瀏覽:827
加密狗插上輸不了密碼 瀏覽:187