void runJavaScriptTranslateTest()
    {
      OgrReader uut;

      Progress progress("runBasicTest");
      shared_ptr<OsmMap> map(new OsmMap());
      uut.setTranslationFile("translations/cloudmade.js");
      uut.read("test-files/jakarta_raya_coastline.shp", "", map, progress);

      CPPUNIT_ASSERT_EQUAL(604, map->getNodeMap().size());
      CPPUNIT_ASSERT_EQUAL(6, (int)map->getWays().size());

      int shoreline = 0;
      int water = 0;
      for (WayMap::const_iterator it = map->getWays().begin(); it != map->getWays().end(); ++it)
      {
        shared_ptr<Way> w = it->second;
        if (w->getTags()["natural"] == "shoreline")
        {
          shoreline++;
        }
        if (w->getTags()["natural"] == "water")
        {
          water++;
        }
      }
      CPPUNIT_ASSERT_EQUAL(5, shoreline);
      CPPUNIT_ASSERT_EQUAL(1, water);
    }
Beispiel #2
0
QString AttributeCount::Count(QString input)
{
  QString finalText;
  int maxAttributes = ConfigOptions().getAttributeCountValues();

  OgrReader reader;
  reader.setTranslationFile(QString(getenv("HOOT_HOME")) + "/translations/quick.js");

  QStringList layers;
  if (input.contains(";"))
  {
    QStringList list = input.split(";");
    input = list.at(0);
    layers.append(list.at(1));
  }
  else
  {
    layers = reader.getFilteredLayerNames(input);
  }

  if (layers.size() == 0)
  {
    LOG_WARN("Could not find any valid layers to read from in " + input + ".");
  }

  for (int i = 0; i < layers.size(); i++)
  {
    AttributeCountHash result;

    LOG_DEBUG("Reading: " + input + " " + layers[i]);

    shared_ptr<ElementIterator> iterator(reader.createIterator(input, layers[i]));

    while(iterator->hasNext())
    {
      shared_ptr<Element> e = iterator->next();

      //        // Interesting problem: If there are no elements in the file, e == 0
      //        // Need to look at the ElementIterator.cpp file to fix this.
      //        if (e == 0)
      //        {
      //          LOG_WARN("No features in: " + input + " " + layer);
      //          break;
      //        }

      Tags t = e->getTags();
      for (Tags::const_iterator it = e->getTags().begin(); it != e->getTags().end(); ++it)
      {
        if (it.value() == "") // Drop empty values
        {
          continue;
        }

        // Drop Hoot metadata tags
        if (it.key() == "source:ingest:datetime")
        {
          continue;
        }

        // The default is 30 values
        if (result.value(it.key()).size() < maxAttributes )
        {
          result[it.key()][it.value()]++;
        }
      }
    } // End Layer

    QString tmpText = _printJSON(layers[i], result);

    // Skip empty layers
    if (tmpText == "")
    {
      continue;
    }

    finalText += tmpText;

    if (i != (layers.size() - 1))
    {
      finalText += ",\n";
    }

  } // End layer list

  return finalText;
} // End AttributeCount