Browse Source

The names of products and datasets are obtained from the href field, not the title field

master
Michael Uleysky 1 month ago
parent
commit
c00ce94180
  1. 24
      src/copcat.cpp

24
src/copcat.cpp

@ -48,9 +48,14 @@ RetVal<std::vector<MString>> CopernicusCatalog::ProductList() const
for(Json::ArrayIndex i = 0; i < links.size(); i++) for(Json::ArrayIndex i = 0; i < links.size(); i++)
{ {
const auto& rel = links[i]["rel"]; const auto& rel = links[i]["rel"];
const auto& titl = links[i]["title"]; const auto& href = links[i]["href"];
if(rel.type() == Json::stringValue && titl.type() == Json::stringValue && rel.asString() == "child") out.emplace_back(titl.asString().c_str()); if(rel.type() == Json::stringValue && href.type() == Json::stringValue && rel.asString() == "child")
{
auto str = href.asString();
str.erase(str.find('/'));
out.emplace_back(str.c_str());
}
} }
return out; return out;
} }
@ -66,9 +71,8 @@ RetVal<MString> CopernicusCatalog::ProductURL(const MString& prod) const
for(Json::ArrayIndex i = 0; i < links.size(); i++) for(Json::ArrayIndex i = 0; i < links.size(); i++)
{ {
const auto& titl = links[i]["title"];
const auto& href = links[i]["href"]; const auto& href = links[i]["href"];
if(titl.type() == Json::stringValue && href.type() == Json::stringValue && titl.asString().c_str() == prod) return DirName(caturl) + "/" + MString(href.asString().c_str()); if(href.type() == Json::stringValue && href.asString() == (prod + "/product.stac.json").Buf()) return DirName(caturl) + "/" + MString(href.asString().c_str());
} }
return {pref, "unknown product: " + prod}; return {pref, "unknown product: " + prod};
} }
@ -94,9 +98,14 @@ RetVal<std::vector<MString>> CopernicusCatalog::DatasetList(const MString& prod)
for(Json::ArrayIndex i = 0; i < links.size(); i++) for(Json::ArrayIndex i = 0; i < links.size(); i++)
{ {
const auto& rel = links[i]["rel"]; const auto& rel = links[i]["rel"];
const auto& titl = links[i]["title"]; const auto& href = links[i]["href"];
if(rel.type() == Json::stringValue && titl.type() == Json::stringValue && rel.asString() == "item") out.emplace_back(titl.asString().c_str()); if(rel.type() == Json::stringValue && href.type() == Json::stringValue && rel.asString() == "item")
{
auto str = href.asString();
str.erase(str.find('/'));
out.emplace_back(str.c_str());
}
} }
return out; return out;
} }
@ -120,9 +129,8 @@ RetVal<MString> CopernicusCatalog::DatasetURL(const MString& prod, const MString
for(Json::ArrayIndex i = 0; i < links.size(); i++) for(Json::ArrayIndex i = 0; i < links.size(); i++)
{ {
const auto& titl = links[i]["title"];
const auto& href = links[i]["href"]; const auto& href = links[i]["href"];
if(titl.type() == Json::stringValue && href.type() == Json::stringValue && titl.asString().c_str() == dataset) return DirName(url) + "/" + MString(href.asString().c_str()); if(href.type() == Json::stringValue && href.asString() == (dataset + "/dataset.stac.json").Buf()) return DirName(url) + "/" + MString(href.asString().c_str());
} }
return {pref, "unknown dataset: " + dataset}; return {pref, "unknown dataset: " + dataset};
} }

Loading…
Cancel
Save