2019-04-15
在给昆明40米天线写天线控制界面的时候,因为不在现场,所以有一些因素无法得到解决。将原先放于数据库的射电源信息更改为从本地读取。
射电源文件(radio.cat)放在工程目录下的config文件夹中,内容如下(每行从左到右依次为射电源名、赤经坐标、赤纬坐标、历元)
orion 05:35:17.00 -05:23:28.00 J2000
Omega 18:20:47.10 -16:10:17.00 J2000
3C353 17:20:28.10 -00:58:47.00 J2000
3C273 12:29:06.70 02:03:09.00 J2000
3C84 03:19:48.16 41:30:42.10 J2000
3C405 19:59:28.30 40:44:02.00 J2000
3C144 05:34:32.00 22:00:52.00 J2000
3C461 23:23:27.90 58:48:42.00 J2000
3C274 12:30:49.42 12:23:28.04 J2000
3C454.3 22:53:57.70 16:08:54.00 J2000
3C123 04:37:04.40 29:40:14.00 J2000
3C147 05:42:36.10 49:51:07.00 J2000
3C279 12:56:11.10 -05:47:22.00 J2000
3C286 13:31:08.30 30:30:33.00 J2000
Dr21 20:39:01.60 42:19:38.00 J2000
3C345 16:42:58.80 39:48:37.00 J2000
3C380 18:29:31.80 48:44:46.00 J2000
3C218 09:18:05.70 -12:05:44.00 J2000
3C161 06:27:10.10 -05:53:05.00 J2000
读取方法:
private Set<String> getRadioSourceMessage() throws IOException{
Set<String> sourceName = new HashSet<String>();
String souce_properties_file = "./config/radio.cat";
Properties p = new Properties();
BufferedReader reader = null;
try {
reader = new BufferedReader(new InputStreamReader(new FileInputStream(souce_properties_file)));
String sourceMsg = null;
while((sourceMsg = reader.readLine())!= null){
String[] msgDetails = sourceMsg.split("\\s+");
System.setProperty(msgDetails[0] + ".ra", msgDetails[1]);
System.setProperty(msgDetails[0] + ".dec", msgDetails[2]);
sourceName.add(msgDetails[0]);
}
} catch (IOException e) {
e.printStackTrace();
}
reader.close();
return sourceName;
}
思路:
1.使用BufferedReader来读文件,可以逐行读取数据;
2.因为射电源表几个信息之间的空格数可能不定,所以使用"\s+"这个正则表达式来匹配一个或多个空白符;
3.将每个射电源的赤经赤纬坐标以“射电源名.ra’”和“射电源名.dec”两个键值对的形式放入到系统中,使用时获取用户输入的射电源名称,加上相应的后缀即可从系统中获取。
4.将所有射电源名称放在一个 Set 中 并返回,以便放入ComboBox中供用户选择。
这样的做法比较简单,也可以不用再对数据库进行操作。但是数据文件可能会受到破坏,在软件交付时应告知用户,配置文件不可轻易改动,或在改动之前做好备份。