2013-04-24 2 views
1

Как я могу проанализировать информацию Metar в Java-программировании? Я искал в Интернете и много сложных вещей, мне нужно что-то более простое. я не знаю, как использовать Regex или что-то подобное ...Отчет METAR - проанализируйте Java

пример Metar Info: http://weather.noaa.gov/pub/data/observations/metar/stations/ABBN.TXT

2011/03/16 5:30 ABBN 160530Z 23004KT 9999 NSC 02/M05 Q1029 R14R/CLRD60 NOSIG РМК G/O QFE696

Обратите внимание, что отчет Metar может иметь вариации: http://en.wikipedia.org/wiki/METAR

ответ

-2

Regex почти наверняка WHA т вы хотите, да, это сложно, но вы будете использовать его снова и снова. Раздел RMK будет самым сложным, это самая свободная форма. Единственная альтернатива - пройти через характер по характеру с большим количеством утверждений if или case.

-2

Это выглядит многообещающим, я гугле Java METAR разобрана :-) http://jfall-javafx.googlecode.com/svn-history/r6/WeatherFX/src/com/feldt/metar/Metar.java

+0

Я видел это вчера, но это очень сложный проект. Мне нужно что-то более простое, как вы сказали, регулярное выражение или перемещение в тексте, ищущем параметры .. любая идея? – cpfp

1

Я нашел решение, есть код (это может быть полезным для кого-то):

for (int i=0; i<httpGet.length(); i++) { 

      char c = httpGet.charAt(i); 

      if(c=='M' && Character.isDigit(httpGet.charAt(i+1)) && 
        Character.isDigit(httpGet.charAt(i+2)) && 
        httpGet.charAt(i+3)== '/' && 
        Character.isDigit(httpGet.charAt(i+4))&& 
        Character.isDigit(httpGet.charAt(i+5))&& 
        httpGet.charAt(i+6)==' ' && 
        Character.isLetter(httpGet.charAt(i+7))){ 

       temp="-"+httpGet.substring(i+1,i+3); 
       dewP=httpGet.substring(i+4,i+6); 
       break; 
      } 

      else if(c=='M' && Character.isDigit(httpGet.charAt(i+1)) && 
        Character.isDigit(httpGet.charAt(i+2)) && 
        httpGet.charAt(i+3)== '/' && 
        httpGet.charAt(i+4)== 'M' && 
        Character.isDigit(httpGet.charAt(i+5))&& 
        Character.isDigit(httpGet.charAt(i+6))&& 
        httpGet.charAt(i+7)==' ' && 
        Character.isLetter(httpGet.charAt(i+8))){ 

       temp="-"+httpGet.substring(i+1,i+3); 
       dewP="-"+httpGet.substring(i+5,i+7); 
       break; 
      } 

      else if(Character.isDigit(httpGet.charAt(i)) && 
        Character.isDigit(httpGet.charAt(i+1)) && 
        httpGet.charAt(i+2)== '/' && 
        httpGet.charAt(i+3)== 'M' && 
        Character.isDigit(httpGet.charAt(i+4))&& 
        Character.isDigit(httpGet.charAt(i+5))&& 
        httpGet.charAt(i+6)==' ' && 
        Character.isLetter(httpGet.charAt(i+7))){ 

       temp=httpGet.substring(i,i+2); 
       dewP="-"+httpGet.substring(i+4,i+6); 
       break; 
      } 
      else if(Character.isDigit(c) && Character.isDigit(httpGet.charAt(i+1)) 
        && httpGet.charAt(i+2)=='/' && 
        Character.isDigit(httpGet.charAt(i+3)) && 
        Character.isDigit(httpGet.charAt(i+4)) && 
        httpGet.charAt(i+5)==' ' && 
        Character.isLetter(httpGet.charAt(i+6))){ 

       temp=httpGet.substring(i,i+2); 
       dewP=httpGet.substring(i+3,i+5); 
       break; 
      } 
    } 
Смежные вопросы