MCPcopy Create free account
hub / github.com/Tencent/TAD_Sim / insertObjectGeoms

Method insertObjectGeoms

common/map_sdk/mapdb/src/sqlite_operation.cpp:1512–1567  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1510}
1511
1512bool sqliteOperation::insertObjectGeoms(hadmap::tx_object_geom_vec& geoms) {
1513 char sql[512];
1514 sprintf(sql,
1515 "INSERT INTO %s(type, srs, dimension, style, color, text, size, image, geom) \
1516 VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)",
1517 OBJECT_GEOM_TABLE);
1518
1519 sqliteStmtPtr stmt(dbPtr, sql);
1520 if (!stmt.status()) {
1521 std::cerr << "failed to prepare insert object geometries." << std::endl;
1522 return false;
1523 }
1524
1525 std::vector<double> sizes;
1526 hadmap::Points3d linestring;
1527 sqlite3_blob_data blob;
1528 sqlite3_exec(dbPtr, "begin;", 0, 0, 0);
1529 bool complete = true;
1530 for (hadmap::tx_object_geom_vec::iterator iter = geoms.begin(); iter != geoms.end(); ++iter) {
1531 int index = 0;
1532 sqlite3_bind_int(stmt, index + 1, iter->type);
1533 iter->srs = 4326;
1534 sqlite3_bind_int(stmt, index + 2, iter->srs);
1535 sqlite3_bind_int(stmt, index + 3, iter->dimension);
1536 sqlite3_bind_int(stmt, index + 4, iter->style);
1537 sqlite3_bind_int(stmt, index + 5, iter->color);
1538 sqlite3_bind_text(stmt, index + 6, iter->text, -1, SQLITE_TRANSIENT);
1539 if (iter->geom.size() > 0) {
1540 linestring.resize(iter->geom.size());
1541 sizes.resize(iter->geom.size() * 2);
1542 for (size_t k = 0; k < iter->geom.size(); ++k) {
1543 linestring[k].x = iter->geom[k].x;
1544 linestring[k].y = iter->geom[k].y;
1545 linestring[k].z = iter->geom[k].z;
1546 sizes[k * 2] = iter->geom[k].w;
1547 sizes[k * 2 + 1] = iter->geom[k].h;
1548 }
1549
1550 sqlite3_bind_blob(stmt, index + 7, &sizes[0], sizeof(double) * sizes.size(), SQLITE_TRANSIENT);
1551 sqlite3_bind_blob(stmt, index + 8, "", 0, SQLITE_TRANSIENT);
1552 createBlob(linestring, iter->srs, blob);
1553 sqlite3_bind_blob(stmt, index + 9, blob.data, blob.size, SQLITE_TRANSIENT);
1554 }
1555 int r = sqlite3_step(stmt);
1556 if (SQLITE_DONE != r) {
1557 std::cerr << "Insert Object Geom Error, Code " << r << std::endl;
1558 complete = false;
1559 }
1560 sqlite3_clear_bindings(stmt);
1561 sqlite3_reset(stmt);
1562 iter->pkid = sqlitePackage::getLastInsertedRowid(dbPtr);
1563 }
1564 sqlite3_exec(dbPtr, "commit;", 0, 0, 0);
1565
1566 return true;
1567}
1568
1569bool sqliteOperation::insertObjectGeomRels(hadmap::tx_object_geom_rel_vec& geom_rels) {

Callers 2

insertObjectsMethod · 0.80
saveMapMethod · 0.80

Calls 6

createBlobFunction · 0.85
statusMethod · 0.45
beginMethod · 0.45
endMethod · 0.45
sizeMethod · 0.45
resizeMethod · 0.45

Tested by

no test coverage detected