20 #include <QTextStream> 
   22 #include <kfiledialog.h> 
   24 #include <kmessagebox.h> 
   36     QStringList ellipsoidList;
 
   37     ellipsoidList << 
"IAU76" << 
"GRS80" << 
"MERIT83" << 
"WGS84" << 
"IERS89";
 
   41     spheRadio->setChecked(
true);
 
   42     ellipsoidBox->insertItems(5,ellipsoidList);
 
   57 void modCalcGeodCoord::showLongLat(
void)
 
   60     LongGeoBox->show( data->
geo()->
lng() );
 
   61     LatGeoBox->show(  data->
geo()->
lat() );
 
   62     AltGeoBox->setText( QString(
"0.0") );
 
   74     geoPlace->
setXPos( KGlobal::locale()->readNumber(XGeoBox->text())*1000. );
 
   75     geoPlace->
setYPos( KGlobal::locale()->readNumber(YGeoBox->text())*1000. );
 
   76     geoPlace->
setZPos( KGlobal::locale()->readNumber(ZGeoBox->text())*1000. );
 
   81     geoPlace->
setLong( LongGeoBox->createDms() );
 
   82     geoPlace->
setLat(  LatGeoBox->createDms() );
 
   83     geoPlace->
setHeight( AltGeoBox->text().toDouble() );
 
   92     LatGeoBox->clearFields();
 
   93     LongGeoBox->clearFields();
 
   99     if(cartRadio->isChecked()) {
 
  111     LongGeoBox->show( geoPlace->
lng() );
 
  112     LatGeoBox->show( geoPlace->
lat() );
 
  113     AltGeoBox->setText( KGlobal::locale()->formatNumber( geoPlace->
height(), 3) );
 
  119     XGeoBox->setText( KGlobal::locale()->formatNumber( geoPlace->
xPos()/1000. ,6));
 
  120     YGeoBox->setText( KGlobal::locale()->formatNumber( geoPlace->
yPos()/1000. ,6));
 
  121     ZGeoBox->setText( KGlobal::locale()->formatNumber( geoPlace->
zPos()/1000. ,6));
 
  124 void modCalcGeodCoord::geoCheck(
void) {
 
  126     XGeoBoxBatch->setEnabled( 
false );
 
  127     XGeoCheckBatch->setChecked( 
false );
 
  128     YGeoBoxBatch->setEnabled( 
false );
 
  129     YGeoCheckBatch->setChecked( 
false );
 
  130     YGeoBoxBatch->setEnabled( 
false );
 
  131     YGeoCheckBatch->setChecked( 
false );
 
  132     xyzInputCoords = 
false;
 
  135 void modCalcGeodCoord::xyzCheck(
void) {
 
  137     LongGeoBoxBatch->setEnabled( 
false );
 
  138     LongGeoCheckBatch->setChecked( 
false );
 
  139     LatGeoBoxBatch->setEnabled( 
false );
 
  140     LatGeoCheckBatch->setChecked( 
false );
 
  141     AltGeoBoxBatch->setEnabled( 
false );
 
  142     AltGeoCheckBatch->setChecked( 
false );
 
  143     xyzInputCoords = 
true;
 
  149     if ( LongGeoCheckBatch->isChecked() ) {
 
  150         LongGeoBoxBatch->setEnabled( 
false );
 
  153         LongGeoBoxBatch->setEnabled( 
true );
 
  159     if ( LatGeoCheckBatch->isChecked() ) {
 
  160         LatGeoBoxBatch->setEnabled( 
false );
 
  163         LatGeoBoxBatch->setEnabled( 
true );
 
  169     if ( AltGeoCheckBatch->isChecked() ) {
 
  170         AltGeoBoxBatch->setEnabled( 
false );
 
  173         AltGeoBoxBatch->setEnabled( 
true );
 
  179     if ( XGeoCheckBatch->isChecked() ) {
 
  180         XGeoBoxBatch->setEnabled( 
false );
 
  183         XGeoBoxBatch->setEnabled( 
true );
 
  189     if ( YGeoCheckBatch->isChecked() ) {
 
  190         YGeoBoxBatch->setEnabled( 
false );
 
  193         YGeoBoxBatch->setEnabled( 
true );
 
  199     if ( ZGeoCheckBatch->isChecked() ) {
 
  200         ZGeoBoxBatch->setEnabled( 
false );
 
  203         ZGeoBoxBatch->setEnabled( 
true );
 
  208     QString inputFileName;
 
  209     inputFileName = KFileDialog::getOpenFileName( );
 
  210     InputFileBoxBatch->setUrl( inputFileName );
 
  215     QString outputFileName;
 
  216     outputFileName = KFileDialog::getSaveFileName( );
 
  217     OutputFileBoxBatch->setUrl( outputFileName );
 
  220 void modCalcGeodCoord::slotRunBatch(
void) {
 
  222     QString inputFileName;
 
  224     inputFileName = InputFileBoxBatch->url().toLocalFile();
 
  228     if ( QFile::exists(inputFileName) ) {
 
  229         QFile 
f( inputFileName );
 
  230         if ( !
f.open( QIODevice::ReadOnly) ) {
 
  231             QString message = i18n( 
"Could not open file %1.", 
f.fileName() );
 
  232             KMessageBox::sorry( 0, message, i18n( 
"Could Not Open File" ) );
 
  233             inputFileName.clear();
 
  239         processLines(istream);
 
  243         QString message = i18n( 
"Invalid file: %1", inputFileName );
 
  244         KMessageBox::sorry( 0, message, i18n( 
"Invalid file" ) );
 
  245         inputFileName.clear();
 
  246         InputFileBoxBatch->setUrl( inputFileName );
 
  251 void modCalcGeodCoord::processLines( 
QTextStream &istream ) {
 
  256     QString outputFileName;
 
  257     outputFileName = OutputFileBoxBatch->url().toLocalFile();
 
  258     QFile fOut( outputFileName );
 
  259     fOut.open(QIODevice::WriteOnly);
 
  266     geoPl.setEllipsoid(0);
 
  268     double xB, yB, zB, hB;
 
  272     while ( ! istream.atEnd() ) {
 
  273         line = istream.readLine();
 
  278         QStringList fields = line.split( 
' ' );
 
  284         if (xyzInputCoords) {
 
  288             if(XGeoCheckBatch->isChecked() ) {
 
  289                 xB = fields[i].toDouble();
 
  292                 xB = KGlobal::locale()->readNumber(XGeoBoxBatch->text()) ;
 
  294             if ( AllRadioBatch->isChecked() )
 
  295                 ostream << xB << space;
 
  297                 if(XGeoCheckBatch->isChecked() )
 
  298                     ostream << xB << space;
 
  302             if(YGeoCheckBatch->isChecked() ) {
 
  303                 yB = fields[i].toDouble();
 
  306                 yB = KGlobal::locale()->readNumber( YGeoBoxBatch->text()) ;
 
  308             if ( AllRadioBatch->isChecked() )
 
  309                 ostream << yB << space;
 
  311                 if(YGeoCheckBatch->isChecked() )
 
  312                     ostream << yB << space;
 
  315             if(ZGeoCheckBatch->isChecked() ) {
 
  316                 zB = fields[i].toDouble();
 
  319                 zB = KGlobal::locale()->readNumber( ZGeoBoxBatch->text());
 
  321             if ( AllRadioBatch->isChecked() )
 
  322                 ostream << zB << space;
 
  324                 if(YGeoCheckBatch->isChecked() )
 
  325                     ostream << zB << space;
 
  327             geoPl.setXPos( xB*1000.0 );
 
  328             geoPl.setYPos( yB*1000.0 );
 
  329             geoPl.setZPos( zB*1000.0 );
 
  330             ostream << geoPl.lng()->toDMSString() << space <<
 
  331             geoPl.lat()->toDMSString() << space <<
 
  332             geoPl.height() << endl;
 
  340             if(LongGeoCheckBatch->isChecked() ) {
 
  341                 longB = dms::fromString( fields[i],
true);
 
  344                 longB = LongGeoBoxBatch->createDms(
true);
 
  346             if ( AllRadioBatch->isChecked() )
 
  347                 ostream << longB.toDMSString() << space;
 
  349                 if(LongGeoCheckBatch->isChecked() )
 
  350                     ostream << longB.toDMSString() << space;
 
  354             if(LatGeoCheckBatch->isChecked() ) {
 
  355                 latB = dms::fromString( fields[i], 
true);
 
  358                 latB = LatGeoBoxBatch->createDms(
true);
 
  360             if ( AllRadioBatch->isChecked() )
 
  361                 ostream << latB.toDMSString() << space;
 
  363                 if(LatGeoCheckBatch->isChecked() )
 
  364                     ostream << latB.toDMSString() << space;
 
  368             if(AltGeoCheckBatch->isChecked() ) {
 
  369                 hB = fields[i].toDouble();
 
  372                 hB = AltGeoBoxBatch->text().toDouble() ;
 
  374             if ( AllRadioBatch->isChecked() )
 
  375                 ostream << hB << space;
 
  377                 if(AltGeoCheckBatch->isChecked() )
 
  378                     ostream << hB << space;
 
  380             geoPl.setLong( longB );
 
  381             geoPl.setLat(  latB );
 
  382             geoPl.setHeight( hB );
 
  384             ostream << geoPl.xPos()/1000.0 << space <<
 
  385             geoPl.yPos()/1000.0 << space <<
 
  386             geoPl.zPos()/1000.0 << endl;
 
  396 #include "modcalcgeodcoord.moc" 
void setYPos(double y)
Set Y. 
void setXPos(double x)
Set X. 
KStarsData is the backbone of KStars. 
modCalcGeodCoord(QWidget *p)
void slotClearGeoCoords(void)
void setZPos(double z)
Set Z. 
static KStarsData * Instance()
void changeEllipsoid(int i)
Update Latitude, Longitude and Height according to new ellipsoid. 
void setLat(dms l)
Set latitude according to dms argument. 
void setLong(dms l)
Set longitude according to dms argument. 
Contains all relevant information for specifying a location on Earth: City Name, State/Province name...
void showCartGeoCoords(void)
void getSphGeoCoords(void)
void slotLatCheckedBatch()
void slotComputeGeoCoords(void)
An angle, stored as degrees, but expressible in many ways. 
void slotElevCheckedBatch()
void setHeight(double hg)
Set elevation above sea level. 
void getCartGeoCoords(void)
void slotLongCheckedBatch()
void showSpheGeoCoords(void)