| 320 | |
| 321 | |
| 322 | void EsriReader::ready(PointTableRef table) |
| 323 | { |
| 324 | //output arguments for debugging |
| 325 | log()->get(LogLevel::Debug) << "filename: " << |
| 326 | m_filename << std::endl; |
| 327 | log()->get(LogLevel::Debug) << "threads: " << |
| 328 | m_args->threads << std::endl; |
| 329 | log()->get(LogLevel::Debug) << "obb: " << |
| 330 | m_args->obb << std::endl; |
| 331 | log()->get(LogLevel::Debug) << "min_density: " << |
| 332 | m_args->min_density << std::endl; |
| 333 | log()->get(LogLevel::Debug) << "max_density: " << |
| 334 | m_args->max_density << std::endl; |
| 335 | log()->get(LogLevel::Debug) << "dimensions: " << std::endl; |
| 336 | |
| 337 | for (std::string& dim : m_args->dimensions) |
| 338 | log()->get(LogLevel::Debug) << " -" << dim <<std::endl; |
| 339 | |
| 340 | /* |
| 341 | -3Dscenelayerinfo: <scene-server-url/layers/<layer-id> |
| 342 | -node index document: <layer-url >/nodepages/<iterative node page id> |
| 343 | -shared resources: <node-url>/shared/ |
| 344 | -feature data: <node-url>/features/<feature-data-bundle-id> |
| 345 | -geometry data: <node-url>/geometries/<geometry-data-bundle-id> |
| 346 | -texture data: <node-url>/textures/<texture-data-bundle-id> |
| 347 | */ |
| 348 | |
| 349 | // Before version 2, page indexes were the first item on the page, rather than the |
| 350 | // actual page number, so we use the page size (m_nodeCap) as a factor from the page |
| 351 | // index to get the proper filename for a page. |
| 352 | int indexFactor = m_version >= Version("2.0") ? 1 : m_nodeCap; |
| 353 | m_pageManager.reset(new PageManager(100, 4, indexFactor, |
| 354 | [this](std::string src) { return m_interface->fetchJson(src); })); |
| 355 | PagePtr p = m_pageManager->getPage(0); |
| 356 | traverseTree(p, 0); |
| 357 | m_pool->await(); |
| 358 | |
| 359 | // If we're running in standard mode, queue up all the requests for data. |
| 360 | // In streaming mode, queue up at most 4 to avoid having a ton of data |
| 361 | // show up at once. Others requests will be queued as the results |
| 362 | // are handled. |
| 363 | m_tilesToProcess = m_nodes.size(); |
| 364 | m_pointId = 0; |
| 365 | if (table.supportsView()) |
| 366 | { |
| 367 | for (int i : m_nodes) |
| 368 | load(i); |
| 369 | } |
| 370 | else |
| 371 | { |
| 372 | int count = 4; |
| 373 | m_curNodeIdx = 0; |
| 374 | while (m_curNodeIdx < m_nodes.size() && count) |
| 375 | { |
| 376 | load(m_nodes[m_curNodeIdx++]); |
| 377 | count--; |
| 378 | } |
| 379 | } |