コード例 #1
0
bool QgsGPXFeatureIterator::fetchFeature( QgsFeature& feature )
{
  feature.setValid( false );

  if ( mClosed )
    return false;

  if ( mRequest.filterType() == QgsFeatureRequest::FilterFid )
  {
    bool res = readFid( feature );
    close();
    return res;
  }

  if ( mSource->mFeatureType == QgsGPXProvider::WaypointType )
  {
    // go through the list of waypoints and return the first one that is in
    // the bounds rectangle
    for ( ; mWptIter != mSource->data->waypointsEnd(); ++mWptIter )
    {
      if ( readWaypoint( *mWptIter, feature ) )
      {
        ++mWptIter;
        return true;
      }
    }
  }
  else if ( mSource->mFeatureType == QgsGPXProvider::RouteType )
  {
    // go through the routes and return the first one that is in the bounds
    // rectangle
    for ( ; mRteIter != mSource->data->routesEnd(); ++mRteIter )
    {
      if ( readRoute( *mRteIter, feature ) )
      {
        ++mRteIter;
        return true;
      }
    }
  }
  else if ( mSource->mFeatureType == QgsGPXProvider::TrackType )
  {
    // go through the tracks and return the first one that is in the bounds
    // rectangle
    for ( ; mTrkIter != mSource->data->tracksEnd(); ++mTrkIter )
    {
      if ( readTrack( *mTrkIter, feature ) )
      {
        ++mTrkIter;
        return true;
      }
    }
  }

  close();
  return false;
}
コード例 #2
0
bool QgsGPXFeatureIterator::readFid( QgsFeature& feature )
{
  if ( mFetchedFid )
    return false;

  mFetchedFid = true;
  QgsFeatureId fid = mRequest.filterFid();

  if ( mSource->mFeatureType == QgsGPXProvider::WaypointType )
  {
    for ( QgsGPSData::WaypointIterator it = mSource->data->waypointsBegin() ; it != mSource->data->waypointsEnd(); ++it )
    {
      if ( it->id == fid )
      {
        readWaypoint( *it, feature );
        return true;
      }
    }
  }
  else if ( mSource->mFeatureType == QgsGPXProvider::RouteType )
  {
    for ( QgsGPSData::RouteIterator it = mSource->data->routesBegin() ; it != mSource->data->routesEnd(); ++it )
    {
      if ( it->id == fid )
      {
        readRoute( *it, feature );
        return true;
      }
    }
  }
  else if ( mSource->mFeatureType == QgsGPXProvider::TrackType )
  {
    for ( QgsGPSData::TrackIterator it = mSource->data->tracksBegin() ; it != mSource->data->tracksEnd(); ++it )
    {
      if ( it->id == fid )
      {
        readTrack( *it, feature );
        return true;
      }
    }
  }

  return false;
}
コード例 #3
0
ファイル: gpsdata.cpp プロジェクト: esal/SpeedFreak
/**
  *This function write route to .xml file.
  */
void GPSData::writeRouteXml(QIODevice *device, int round)
{
    xmlwriter.setDevice(device);

    //Write temp xml (routetemp.xml).
    if ( round == 0 )
    {
        xmlwriter.writeStartElement("Point");
        xmlwriter.writeAttribute("Latitude", QString::number(latitude));
        xmlwriter.writeAttribute("Longitude", QString::number(longitude));
        xmlwriter.writeAttribute("Altitude", QString::number(altitude));
        xmlwriter.writeAttribute("Speed", QString::number(speed));
        xmlwriter.writeEndElement();//Point
    }

    //Write final xml (route.xml).
    else if ( round == 1 )
    {
        xmlwriter.writeStartDocument();
        xmlwriter.writeStartElement("Route");
        xmlwriter.writeAttribute("Start-time", routeStartTime);
        xmlwriter.writeAttribute("Stop-time", routeStopTime);
        xmlwriter.writeAttribute("Points", QString::number(roundCounter));

        //Open temp xml and read points
        QFile tempFile("routetemp.xml");
        if (!tempFile.open(QIODevice::ReadOnly | QIODevice::Text))
            return;
        QTextStream readRoute(&tempFile);
        QTextStream writeRoute(device);
        writeRoute << readRoute.readLine();
        tempFile.close();//Close temp xml

        xmlwriter.writeEndElement();//Route
        xmlwriter.writeEndDocument();     
    }
}
コード例 #4
0
bool QLandmarkFileHandlerGpx::readGpx()
{
    /*
    <xsd:complexType name="gpxType">
        <xsd:sequence>
             <xsd:element name="metadata" type="metadataType" minOccurs="0" />
             <xsd:element name="wpt" type="wptType" minOccurs="0" maxOccurs="unbounded" />
             <xsd:element name="rte" type="rteType" minOccurs="0" maxOccurs="unbounded" />
             <xsd:element name="trk" type="trkType"	minOccurs="0" maxOccurs="unbounded" />
             <xsd:element name="extensions" type="extensionsType" minOccurs="0" />
        </xsd:sequence>
        <xsd:attribute name="version" type="xsd:string" use="required" fixed="1.1" />
        <xsd:attribute name="creator" type="xsd:string" use="required" />
    </xsd:complexType>
    */

    if (!m_reader->readNextStartElement()) {
        m_reader->raiseError("Expected a root element named \"gpx\" (no root element found).");
        return false;
    }

    if (m_reader->name() != "gpx") {
        m_reader->raiseError(QString("The root element is expected to have the name \"gpx\" (root element was named \"%1\").").arg(m_reader->name().toString()));
        return false;
    }

    if (m_reader->attributes().hasAttribute("version")) {
        QString version = m_reader->attributes().value("version").toString();
        if (version != "1.1") {
            m_reader->raiseError(QString("Only version 1.1. of the GPX schema is supported (version found was \"%1\").").arg(version));
            return false;
        }
    } else {
        m_reader->raiseError("The element \"gpx\" did not have the required attribute \"version\".");
        return false;
    }

    if (m_reader->attributes().hasAttribute("creator")) {
        // Not used outside of schema compliance check
    } else {
        m_reader->raiseError("The element \"gpx\" did not have the required attribute \"creator\".");
        return false;
    }

    if (!m_reader->readNextStartElement()) {
        m_reader->skipCurrentElement();
        return true;
    }

    if (m_reader->name() == "metadata") {
        // Not used outside of schema compliance check
        m_reader->skipCurrentElement();
        if (!m_reader->readNextStartElement()) {
            m_reader->skipCurrentElement();
            return true;
        }
    }

    while (m_reader->name() == "wpt") {
        if (m_cancel && (*m_cancel==true)) {
            m_errorCode = QLandmarkManager::CancelError;
            m_errorString = "Import of gpx file was canceled";
            return false;
        }

        QLandmark landmark;

        if (!readWaypoint(landmark, "wpt")) {
            return false;
        }

        m_waypoints.append(landmark);

        if(!m_reader->readNextStartElement()) {
            m_reader->skipCurrentElement();
            return true;
        }
    }

    while (m_reader->name() == "rte") {
        if (m_cancel && (*m_cancel==true)) {
            m_errorCode = QLandmarkManager::CancelError;
            m_errorString = "Import of gpx file was canceled";
            return false;
        }

        QList<QLandmark> route;
        if (!readRoute(route))
            return false;

        m_routes.append(route);

        if(!m_reader->readNextStartElement()) {
            m_reader->skipCurrentElement();
            return true;
        }
    }

    while (m_reader->name() == "trk") {
        if (m_cancel && (*m_cancel==true)) {
            m_errorCode = QLandmarkManager::CancelError;
            m_errorString = "Import of gpx file was canceled";
            return false;
        }

        QList<QLandmark> track;
        if (!readTrack(track))
            return false;

        m_tracks.append(track);

        if(!m_reader->readNextStartElement()) {
            m_reader->skipCurrentElement();
            return true;
        }
    }

    if (m_reader->name() == "extensions") {
        // Not used outside of schema compliance check
        m_reader->skipCurrentElement();
        if (!m_reader->readNextStartElement()) {
            m_reader->skipCurrentElement();
            return true;
        }
    }

    m_reader->raiseError(QString("The element \"gpx\" did not expect a child element named \"%1\" at this point (unknown child element or child element out of order).").arg(m_reader->name().toString()));
    return false;
}
コード例 #5
0
ファイル: upperbound.c プロジェクト: yichao0319/DMR_script
int main (int argc, char **argv)
{
	struct LinkList ll; 
	struct SetCliques scl;
	struct LinProg lp; 
	struct Problem prob; 
	int effort; 

	if (argc < 8 || argc > 13) {
		printf ("Usage: %s <link file> <effort> <output format> <output filename> <random seed> <obj type> <lambda> (<clique input file> <lossFile> <epsilon> <routeFile> <flow LB file>)\n", argv[0]);
		exit(-1);
	}

	// read in problem: i.e. single/multipath and list of sources and destinations
	readInfo(argv[1], &ll, &prob); 
	
	// how much effort; 
	effort = atoi(argv[2]); 

	// what output format
	lp.opform = atoi(argv[3]);

        // Lili added: by default, no constant variables 
        lp.const_var = 0;

        // Lili added: by default, no variable lower bounds
        lp.var_LBs = 0;
        
	//Modeified by Yi Li to be consistent with lowerbound
	//if ((prob.multipath == 0) && (lp.opform != OPFORM_LPSOLVE)) {
	if ((prob.multipath == 0) && ((lp.opform == OPFORM_MATLAB_SPARSE)||(lp.opform == OPFORM_MATLAB))) {
		printf ("matlab can not solve single path problem\n");
		exit(-1); 
	}

	if (ll.ifmodel != IFMODEL_PROTO) {
		printf ("upper bound for physical model not implemented yet\n");
		exit(1);
	}

	srand(atoi(argv[5]));

        if (strcmp(argv[8], "NULL") == 0) {
          // find cliques, making a certain number of attempts
          findCliques (ll, &scl, effort);
          prob.clique_const_type = CLIQUE_OPT_SCHEDULE;
        }
        else {
          // read cliques from input file argv[7]
          readCliques(argv[8], ll, &scl);
          prob.clique_const_type = CLIQUE_802_11;
        }
        
	//printCliques (scl);
	
	// open the files needed for output
	OpenFiles (&(lp.fp), lp.opform, argv[4]); 

                        
	// generate the linear program
        prob.obj_type = atoi(argv[6]);
        prob.lambda = atof(argv[7]);
        
        if (argc >= 10)
          readLoss(argv[9], &ll);

        if (argc >= 11)
          prob.epsilon = atof(argv[10]);

        if (argc >= 12)
          readRoute(argv[11], prob, ll, &lp);

        if (argc == 13)
          readFlowLowerBound(argv[12], prob, ll, &lp);
        
	genUpperBoundLinProg (ll, scl, prob, &lp);

	// close output files 
	CloseFiles (&(lp.fp), lp.opform); 
	return 0;
}