PostGIS 3.0.6dev-r@@SVN_REVISION@@
Loading...
Searching...
No Matches

◆ tile_feature_copy()

static VectorTile__Tile__Feature * tile_feature_copy ( const VectorTile__Tile__Feature *  feature,
int  key_offset,
int  value_offset 
)
static

Definition at line 1416 of file mvt.c.

1417{
1418 uint32_t i;
1419 VectorTile__Tile__Feature *nfeature;
1420
1421 /* Null in => Null out */
1422 if (!feature) return NULL;
1423
1424 /* Init object */
1425 nfeature = palloc(sizeof(VectorTile__Tile__Feature));
1426 vector_tile__tile__feature__init(nfeature);
1427
1428 /* Copy settings straight over */
1429 nfeature->has_id = feature->has_id;
1430 nfeature->id = feature->id;
1431 nfeature->has_type = feature->has_type;
1432 nfeature->type = feature->type;
1433
1434 /* Copy tags over, offsetting indexes so they match the dictionaries */
1435 /* at the Tile_Layer level */
1436 if (feature->n_tags > 0)
1437 {
1438 nfeature->n_tags = feature->n_tags;
1439 nfeature->tags = palloc(sizeof(uint32_t)*feature->n_tags);
1440 for (i = 0; i < feature->n_tags/2; i++)
1441 {
1442 nfeature->tags[2*i] = feature->tags[2*i] + key_offset;
1443 nfeature->tags[2*i+1] = feature->tags[2*i+1] + value_offset;
1444 }
1445 }
1446
1447 /* Copy the raw geometry data over literally */
1448 if (feature->n_geometry > 0)
1449 {
1450 nfeature->n_geometry = feature->n_geometry;
1451 nfeature->geometry = palloc(sizeof(uint32_t)*feature->n_geometry);
1452 memcpy(nfeature->geometry, feature->geometry, sizeof(uint32_t)*feature->n_geometry);
1453 }
1454
1455 /* Done */
1456 return nfeature;
1457}

Referenced by vectortile_layer_combine().

Here is the caller graph for this function: