主要代码说明:
卫星两行信息文档:
updater.config.towline.httpfile.url=https://celestrak.com/NORAD/elements/active.txt
定时更新卫星两行信息:
@Scheduled(cron = "0 0 4 * * ?")//凌晨两点执行
public void refreshTwoLine(){
service.readTowLineFileFromRemote(httpfile);
}解析两行数据:
@Override
public void readTowLineFileFromRemote(String httpfile) {
try {
URL url = new URL(httpfile);
//字节输入流
InputStream is = url.openStream();
//字节流转字符流
InputStreamReader isr = new InputStreamReader(is, "UTF-8");
//再转缓冲流 提高读取效率
BufferedReader br = new BufferedReader(isr);
String line = null;
String satelName = null;
String line1 = null;
String line2 = null;
int i = 1; //每三行数据组成一颗卫星两行数据
//FIXME 需要检查卫星是否在运控监控范围内,如果不是,则不发送给总线处理。
List<Tle> list = new ArrayList<Tle>();
Tle tle = null;
while((line = br.readLine()) != null) {
if(i % 3 == 1) {
satelName = line;
}else if(i % 3 == 2) {
line1 = line;
}else {
line2 = line;
tle = new Tle(satelName,line1,line2);
//if(this.saveNewTowLineTodb(tle)) { //更新保存
if(i % 300 == 0) {//FIXME 临时做法,减少发送给消息总线的数据。
list.add(tle);
}
//}
}
i++;
}
System.out.println("发送给消息总线的对象数量:" + list.size());
//向总线发出卫星轨道数据已更新的消息
message.outputStream().send( MessageBuilder.withPayload(
list
).build());
}catch (IOException e) {
e.printStackTrace();
}
}代码下载连接:
https://github.com/w2cdmi/cdmi-starlink-all/cdmi-starlink-orbit-updater
版权声明:本文为M061135原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。