Рендеринг файлов openmaptiles с использованием mapnik

Я скачал базу данных openmaptile mbtile и хотел отрисовать эти файлы, используя mapnik, я пытался использовать векторные плитки mapnik, но кажется, что я делаю что-то не так, вот мой код

//read from db

           QString dbName( "/home/m/vec/2017-07-03_asia_iran.mbtiles" );
           QSqlDatabase db = QSqlDatabase::addDatabase( "QSQLITE" );
           db.setDatabaseName( dbName );
           db.open();
           QSqlQuery query( db );

           // Get image data back from database
           if( !query.exec( "select tile_data from package_tiles where id=14" ))
               QTextStream(stdout) << "Error getting image from table:\n" << endl;

           query.first();

           QByteArray outByteArray = query.value( 0 ).toByteArray();
           std::string vector= outByteArray.toStdString();

           db.close();



//return;
timer2.start();
       // Create map
       mapnik::Map map(256,256,"+init=epsg:3857");
       // Load XML with style
       mapnik::load_map(map,"/home/m/3.0.16/demo/c++/osm_bright_style.xml");

       mapnik::vector_tile_impl::processor ren2(map);
       //mapnik::vector_tile_impl::tile out_tile2 = ren2.create_tile(x,y,z,tile_size);

       mapnik::vector_tile_impl::merc_tile out_tile3 = ren2.create_tile(x,y,z,tile_size);
       out_tile3.clear();
     //  mapnik::vector_tile_impl::merge_from_buffer(out_tile3,buffer.c_str(),buffer.size());
       mapnik::vector_tile_impl::merge_from_compressed_buffer(out_tile3,vector.c_str(),vector.size());


if(out_tile3.is_empty()){
    QTextStream(stdout) << "it is empty" << endl;


}

if(out_tile3.is_painted()){

    QTextStream(stdout) << "is_painted" << endl;

}

   std::vector<std::string> layers= out_tile3.get_layers();

Приведенный выше код работает, но layers пустой. Есть ли способ прочитать эти pbf файлы, использующие mapnik-vector-tile? Спасибо

0 ответов

Другие вопросы по тегам