Beispiel #1
0
  void runConflateTest()
  {
    Settings testSettings = conf();
    testSettings.set("conflate.enable.old.roads", "false");

    OsmXmlReader reader;
    OsmMapPtr combinedMap(new OsmMap());
    reader.setDefaultStatus(Status::Unknown1);
    reader.setUseDataSourceIds(true);
    reader.read(
      inputPath + "PertyMatchScorerTest-combined-out-1.osm", combinedMap);

    PertyMatchScorer matchScorer;
    matchScorer.setConfiguration(testSettings);
    matchScorer.setSearchDistance(15.0);
    matchScorer.setApplyRubberSheet(true);
    //matchScorer.setConfiguration(testSettings);
    /*boost::shared_ptr<MatchComparator> result =*/
    matchScorer._conflateAndScoreMatches(
      combinedMap,
      outputPath + "PertyMatchScorerTest-conflated-out-1.osm");
    //const double score = result->getPertyScore();

    //MatchComparator test already covers testing the scoring, so not doing that here.
    HOOT_FILE_EQUALS(
      inputPath + "PertyMatchScorerTest-conflated-out-1.osm",
      outputPath + "PertyMatchScorerTest-conflated-out-1.osm");
  }
Beispiel #2
0
  void runCombineMapTest()
  {
    OsmXmlReader reader;
    OsmMapPtr referenceMap(new OsmMap());
    reader.setDefaultStatus(Status::Unknown1);
    reader.setUseDataSourceIds(true);
    reader.read(
      inputPath + "PertyMatchScorerTest-reference-out-1.osm", referenceMap);
    CPPUNIT_ASSERT_EQUAL(44, (int)referenceMap->getElementCount());

    PertyMatchScorer matchScorer;
    matchScorer.setSearchDistance(15.0);
    matchScorer.setApplyRubberSheet(false);
    OsmMapPtr combinedMap =
      matchScorer._combineMapsAndPrepareForConflation(
        referenceMap,
        inputPath + "PertyMatchScorerTest-perturbed-out-1.osm");

    //can't do a file comparison on the output here since the UUID's added to the file will be
    //different with each run
    CPPUNIT_ASSERT_EQUAL(100, (int)combinedMap->getElementCount());
    boost::shared_ptr<TagKeyCountVisitor> tagKeyCountVisitorRef1(new TagKeyCountVisitor(MetadataTags::Ref1()));
    combinedMap->visitRo(*tagKeyCountVisitorRef1);
    CPPUNIT_ASSERT_EQUAL(8, (int)tagKeyCountVisitorRef1->getStat());
    boost::shared_ptr<TagKeyCountVisitor> tagKeyCountVisitorRef2(new TagKeyCountVisitor(MetadataTags::Ref2()));
    combinedMap->visitRo(*tagKeyCountVisitorRef2);
    CPPUNIT_ASSERT_EQUAL(10, (int)tagKeyCountVisitorRef2->getStat());
  }
  void runUseIdTest()
  {
    OsmXmlReader uut;

    OsmMapPtr map(new OsmMap());
    uut.setUseDataSourceIds(true);
    uut.read("test-files/ToyTestA.osm", map);

    CPPUNIT_ASSERT_EQUAL(36,(int)map->getNodes().size());
    CPPUNIT_ASSERT_EQUAL(4, (int)map->getWays().size());

    long min = 1e9;
    long max = -1e9;
    for (NodeMap::const_iterator it = map->getNodes().begin();
         it != map->getNodes().end(); ++it)
    {
      const ConstNodePtr& n = it->second;
      min = std::min(min, n->getId());
      max = std::max(max, n->getId());
    }

    CPPUNIT_ASSERT_EQUAL(-1669793l, min);
    CPPUNIT_ASSERT_EQUAL(-1669723l, max);

    CPPUNIT_ASSERT(map->containsWay(-1669801));
    CPPUNIT_ASSERT(map->containsWay(-1669799));
    CPPUNIT_ASSERT(map->containsWay(-1669797));
    CPPUNIT_ASSERT(map->containsWay(-1669795));
  }
  void runUseStatusTest()
  {
    OsmXmlReader uut;

    OsmMapPtr map(new OsmMap());
    uut.setUseDataSourceIds(true);
    uut.setUseFileStatus(true);
    uut.setDefaultStatus(Status::Invalid);
    uut.read("test-files/io/OsmXmlReaderUseStatusTest.osm", map);

    CPPUNIT_ASSERT_EQUAL(104, (int)map->getNodes().size());
    CPPUNIT_ASSERT_EQUAL(17, (int)map->getWays().size());

    HOOT_STR_EQUALS(Status::Unknown1, map->getWay(-12)->getStatus().getEnum());
    HOOT_STR_EQUALS(Status::Conflated, map->getWay(-13)->getStatus().getEnum());
    HOOT_STR_EQUALS(Status::Unknown2, map->getWay(-51)->getStatus().getEnum());
    HOOT_STR_EQUALS(Status::EnumEnd + 1, map->getWay(-14)->getStatus().getEnum());
    HOOT_STR_EQUALS(Status::EnumEnd + 2, map->getWay(-15)->getStatus().getEnum());

    HOOT_STR_EQUALS(0, map->getWay(-12)->getStatus().getInput());
    HOOT_STR_EQUALS(1, map->getWay(-51)->getStatus().getInput());
    HOOT_STR_EQUALS(2, map->getWay(-14)->getStatus().getInput());
    HOOT_STR_EQUALS(3, map->getWay(-15)->getStatus().getInput());

    HOOT_STR_EQUALS("Unknown1", map->getWay(-12)->getStatus().toString());
    HOOT_STR_EQUALS("Unknown2", map->getWay(-51)->getStatus().toString());
    HOOT_STR_EQUALS("Input003", map->getWay(-14)->getStatus().toString());
    HOOT_STR_EQUALS("Input004", map->getWay(-15)->getStatus().toString());
  }
  //This test ensures that characters not allowed in well-formed XML get decoded as read in.
  //Qt's XML reading does this for us automatically.
  void runDecodeCharsTest()
  {
    OsmXmlReader uut;

    OsmMapPtr map(new OsmMap());
    uut.read("test-files/io/OsmXmlReaderTest/runDecodeCharsTest.osm", map);

    int wayCtr = 0;
    for (WayMap::const_iterator it = map->getWays().begin(); it != map->getWays().end(); ++it)
    {
      const ConstWayPtr& w = it->second;
      if (w->getTags().get("note2") == "1")
      {
        HOOT_STR_EQUALS("1 & 2", w->getTags().get("note"));
        wayCtr++;
      }
      else if (w->getTags().get("note2") == "2")
      {
        HOOT_STR_EQUALS("\"3\"", w->getTags().get("note"));
        wayCtr++;
      }
      else if (w->getTags().get("note2") == "3")
      {
        HOOT_STR_EQUALS("0", w->getTags().get("note"));
        wayCtr++;
      }
      else if (w->getTags().get("note2") == "4")
      {
        HOOT_STR_EQUALS("<2>", w->getTags().get("note"));
        wayCtr++;
      }
    }
    CPPUNIT_ASSERT_EQUAL(4, wayCtr);
  }
  void runUncompressTest()
  {
    const std::string cmd(
      "gzip -c test-files/ToyTestA.osm > test-output/ToyTestA_compressed.osm.gz");
    LOG_DEBUG("Running compress command: " << cmd);

    int retVal;
    if ((retVal = std::system(cmd.c_str())) != 0)
    {
      QString error = QString("Error %1 returned from compress command: %2").arg(retVal).
        arg(QString::fromStdString(cmd));
      throw HootException(error);
    }

    OsmXmlReader uut;
    OsmMapPtr map(new OsmMap());
    uut.setUseDataSourceIds(true);

    // Excercise the code
    uut.read("test-output/ToyTestA_compressed.osm.gz", map);

    // Check a few things
    CPPUNIT_ASSERT_EQUAL(36,(int)map->getNodes().size());
    CPPUNIT_ASSERT_EQUAL(4, (int)map->getWays().size());

    QFile f("test-output/ToyTestA_compressed.osm.gz");
    CPPUNIT_ASSERT(f.exists());
    CPPUNIT_ASSERT(f.remove());
  }
 OsmMapPtr _loadMap()
 {
   OsmXmlReader reader;
   OsmMapPtr map(new OsmMap());
   reader.setDefaultStatus(Status::Unknown1);
   reader.read("test-files/visitors/TagRenameKeyVisitorTest.osm", map);
   return map;
 }
  void runTest()
  {
    OsmXmlReader uut;

    OsmMapPtr map(new OsmMap());
    uut.read("test-files/ToyTestA.osm", map);

    CPPUNIT_ASSERT_EQUAL(36, (int)map->getNodes().size());
    CPPUNIT_ASSERT_EQUAL(4, (int)map->getWays().size());
  }
  void runString()
  {
    OsmXmlReader reader;
    OsmMapPtr map(new OsmMap());
    reader.setDefaultStatus(Status::Unknown1);
    reader.read("test-files/UndividedHighwayPreSplit.osm", map);

    QString output = OsmPgCsvWriter::toString(map);
    //  Compare the results
    HOOT_STR_EQUALS(expected_runString, output);
  }
  void runIsCandidateTest()
  {
    PoiPolygonMatchCreator uut;

    OsmMapPtr map = getTestMap1();
    CPPUNIT_ASSERT(
      uut.isMatchCandidate(map->getNode(FindNodesVisitor::findNodesByTag(map, "name", "foo")[0]), map));
    CPPUNIT_ASSERT(
      uut.isMatchCandidate(map->getWay(FindWaysVisitor::findWaysByTag(map, "name", "foo")[0]), map));

    OsmXmlReader reader;
    map.reset(new OsmMap());
    reader.setDefaultStatus(Status::Unknown1);
    reader.read("test-files/ToyTestA.osm", map);
    MapProjector::projectToPlanar(map);
    CPPUNIT_ASSERT(
      !uut.isMatchCandidate(map->getWay(FindWaysVisitor::findWaysByTag(map, "note", "1")[0]), map));
  }
  void runBasic()
  {
    OsmXmlReader reader;
    OsmMapPtr map(new OsmMap());
    reader.setDefaultStatus(Status::Unknown1);
    reader.read("test-files/ScoreMatchRef1.osm", map);

    OsmPgCsvWriter writer;
    writer.open("test-output/io/PgCsvWriter/runBasic.pgcsv");
    writer.write(map);
    writer.close();

    //  Check the results
    HOOT_FILE_EQUALS(QString("test-files/io/PgCsvWriter/runBasic-nodes.pgcsv"),
                     QString("test-output/io/PgCsvWriter/runBasic-nodes.pgcsv"));
    HOOT_FILE_EQUALS(QString("test-files/io/PgCsvWriter/runBasic-ways.pgcsv"),
                     QString("test-output/io/PgCsvWriter/runBasic-ways.pgcsv"));
    HOOT_FILE_EQUALS(QString("test-files/io/PgCsvWriter/runBasic-waynodes.pgcsv"),
                     QString("test-output/io/PgCsvWriter/runBasic-waynodes.pgcsv"));
    HOOT_FILE_EQUALS(QString("test-files/io/PgCsvWriter/runBasic-relations.pgcsv"),
                     QString("test-output/io/PgCsvWriter/runBasic-relations.pgcsv"));
    HOOT_FILE_EQUALS(QString("test-files/io/PgCsvWriter/runBasic-relationmembers.pgcsv"),
                     QString("test-output/io/PgCsvWriter/runBasic-relationmembers.pgcsv"));
  }