Рендеринг файлов 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? Спасибо