MVT:地图框矢量平铺

2.3 新版功能.

司机简称

MVT

生成依赖项

(需要SQLite和GEOS提供写支持)

MVT驱动程序可以读写Mapbox矢量平铺文件,作为独立文件、未压缩文件或gzip压缩文件(典型的扩展名是.pbf、.MVT、.MVT.gz)或给定缩放级别的平铺文件。写支持需要用libsqlite3和GEOS支持构建GDAL。

存储在符合MBTiles格式的SQLite容器中的Mapbox矢量块由 MBTiles 驱动程序。

Tilesets of MVT files can for example be generated by tippecanoe or tileserver-gl. The output file hierarchy will contain a metadata.json file at its root and {z}/{x}/{y}.pbf files with the tiles, where z is the zoom level and (x, y) the coordinate of the tile in a given zoom level. The origin of the tiling system is the top-left tile (XYZ convention). For example, for zoom levels 0 and 1 :

/metadata.json
/0/
   0/
     0.pbf
/1/
   0/
     0.pbf
     1.pbf
   1/
     0.pbf
     1.pbf

默认情况下,如果打开的文件名为{Z}/{X}/{Y}.pbf或{Z}-{X}-{Y}.pbf名称或tileset的缩放级别,驱动程序将采用EPSG:3857(WebMercator)空间引用系统和Z/X/Y平铺结构。否则将报告整数坐标。

注意:当打开平铺集的缩放级别时,驱动程序将不费力地将重叠多个平铺的要素的几何图形缝合在一起。

驱动程序功能

Supports Create()

This driver supports the GDALDriver::Create() operation

Supports Georeferencing

This driver supports georeferencing

Supports VirtualIO

This driver supports virtual I/O operations (/vsimem/, etc.)

连接字符串

支持以下连接字符串:

  • /path/to/some.pbf

  • [MVT:http[s]://path/to/some.pbf]

  • /path/to/{Z}: where {Z} is a zoom level between 0 and 30, tiles are in /path/to/{Z}/{X}/{Y}.pbf files, and /path/to/metadata.json or /path/to.json should typically exist.

  • [MVT:http[s]://path/to/{{Z]]

可以在文件名或目录名之前添加MVT:前缀,以帮助在非引导标识可能失败的少数情况下强制标识数据集。

metadata.json

此文件通常由tippecanoe生成,包含以下内容:

{
    "name": "my_layername",
    "description": "my_layername",
    "version": "2",
    "minzoom": "0",
    "maxzoom": "0",
    "center": "2.500000,49.500000,0",
    "bounds": "2.000000,49.000000,3.000000,50.000000",
    "type": "overlay",
    "format": "pbf",
    "json": "{
        \"vector_layers\": [ {
            \"id\": \"my_layername\",
            \"description\": \"\",
            \"minzoom\": 0,
            \"maxzoom\": 0,
            \"fields\": {
                \"bool_false\": \"Boolean\",
                \"bool_true\": \"Boolean\",
                \"float_value\": \"Number\",
                \"pos_int_value\": \"Number\",
                \"pos_int64_value\": \"Number\",
                \"neg_int_value\": \"Number\",
                \"neg_int64_value\": \"Number\",
                \"pos_sint_value\": \"Number\",
                \"pos_sint64_value\": \"Number\",
                \"neg_sint_value\": \"Number\",
                \"neg_sint64_value\": \"Number\",
                \"real_value\": \"Number\",
                \"string_value\": \"String\",
                \"uint_value\": \"Number\",
                \"uint64_value\": \"Number\"
            }
        } ],
        \"tilestats\": {
            \"layerCount\": 1,
            \"layers\": [
                {
                \"layer\": \"my_layername\",
                \"count\": 2,
                \"geometry\": \"Point\",
                \"attributeCount\": 0,
                \"attributes\": []
                }
            ]
        }
    }}"
}

MVT驱动程序只使用“json”键来检索层名称、它们的字段和几何类型,以及层范围的“bounds”键。

如果找不到此文件,则通过扫描平铺的功能来建立层架构。

作为扩展,OGR通过使用 crstile_origin_upper_left_xtile_origin_upper_left_ytile_dimension_zoom_0 元数据项。例如,对于芬兰ETRS-TM35FIN(EPSG:3067)平铺方案:

{
  "...": "...",
  "crs":"EPSG:3067",
  "tile_origin_upper_left_x":-548576.0,
  "tile_origin_upper_left_y":8388608.0,
  "tile_dimension_zoom_0":2097152.0,
}

打开选项

以下打开选项可用:

  • X =int_值:EPSG:3857平铺的X坐标。

  • Y =int_值:EPSG的Y坐标:3857平铺。

  • Z =int_值:EPSG:3857平铺的Z坐标。

  • METADATA_FILE=filename: Filename of a metadata.json-like file. If opening a /path/to/{Z}/{X}/{Y}.pbf file, the driver will by default try to find /path/to/metadata.json. Setting the value to the empty string is a way of avoid the metadata.json file to be used.

  • CLIP =是/否:是否将矢量特征的几何图形剪裁到平铺范围。矢量平铺的生成器通常会创建具有超出平铺范围的小缓冲区的几何图形,以便与多个平铺相交的几何图形可以合并回来。默认为“是”,以便删除缓冲区并将几何图形精确剪裁到平铺范围。

  • TILE_EXTENSION =字符串:对于平铺集,平铺的扩展名。默认为pbf。

  • TILE_COUNT_TO_ESTABLISH_FEATURE_DEFN =int_value:对于没有元数据文件的tileset,用于建立层架构的最大tile数。默认为1000。

创建问题

默认情况下,使用WebMercator(EPSG:3857)投影生成平铺(自定义平铺方案可以使用“平铺方案”选项定义)。可以写几层。可以确定给定层的缩放级别范围。

默认情况下,部分转换是多线程的,使用的线程数与内核数相同。使用的线程数可以通过 GDAL_NUM_THREADS 配置选项。

数据集创建选项

  • NAME =字符串:Tileset名称。默认为输出文件/目录的基名。用于填充元数据记录。

  • DESCRIPTION =字符串:对tileset的描述。用于填充元数据记录。

  • TYPE =覆盖层/基础层:层类型。用于填充元数据记录。

  • FORMAT=DIRECTORY/MBTILES: Format into which tiles are written. DIRECTORY means that tiles are written in a hierarchy like out_dir/{z}/{x}/{y}.pbf. MBTILES is for a MBTILES container. Defaults to DIRECTORY, unless the output filename has a .mbtiles extension

  • TILE_EXTENSION =string:对于作为文件目录的tiles集,tiles的扩展名。默认为pbf。

  • MINZOOM =整数:生成平铺的最小缩放级别。默认为0。

  • MAXZOOM =整数:生成平铺的最大缩放级别。默认为5。支持的最大值为22

  • CONF =string:层配置为JSon序列化字符串。或者,从GDAL 3.0.1开始,包含JSon配置的文件名。

  • SIMPLIFICATION =float:线性或多边形几何图形的简化因子。单位是将几何坐标量化为平铺坐标后的整型平铺单位。适用于所有缩放级别,除非还定义了“简化最大缩放”。

  • SIMPLIFICATION_MAX_ZOOM =float:线性或多边形几何体的简化因子,仅适用于最大缩放级别。

  • EXTENT =正整数。平铺中的单位数。几何坐标越大,越精确(以牺牲平铺字节大小为代价)。默认为4096

  • BUFFER =正整数。几何缓冲的单位数。此值对应于一个平铺的每一侧周围的缓冲区,几何图形将被提取并剪裁到该缓冲区中。这用于正确渲染某些渲染客户端覆盖平铺边界的几何图形。如果区段=4096,则默认为80。

  • COMPRESS =是/否。是否使用Deflate/GZip算法压缩平铺。默认为“是”。对于FORMAT=MBTILES,应保留为YES。

  • TEMPORARY_DB =字符串。用于生成磁贴的临时数据库的路径的文件名。默认情况下,这将是与输出文件/目录位于同一目录中的文件。

  • MAX_SIZE =整数。磁贴的最大大小(压缩后)。默认为50万。如果平铺大于此阈值,则将以较低的精度写入功能,或丢弃这些功能。

  • MAX_FEATURES =整数。每个磁贴的最大功能数。默认为200000。

  • BOUNDS =min_long、min_lat、max_long、max_lat。重写边界元数据项的默认值,该值是根据写入的功能范围计算的。

  • CENTER =长、横向、缩放级别。覆盖中心元数据项的默认值,该值是最小缩放级别的边界中心。

  • TILING_SCHEME =crs,tile_origin_upper_left_x,tile_origin_upper_left_y,tile_dimension_zoom_0:定义自定义平铺方案,其中crs(通常给定为EPSG:XXXX)、crs中左上平铺的左上角坐标(0,0)和缩放级别为0的平铺尺寸。仅对FORMAT=目录可用。标准的WebMercator瓷砖方案定义为“EPSG:3857,-20037508.34320037508.3434007508.34340075016.686”。WGS84大地测量的平铺方案可以是“EPSG:4326,-180180360”。芬兰ETRS-TM35FIN(EPSG:3067)的瓷砖方案为“EPSG:3067,-54857683886082097152”。在使用自定义平铺方案时,“crs”、“tile_origin_upper_left_x”、“tile_origin_upper_left_y”和“tile_dimension_zoom_0”条目将添加到metadata.json中,并由OGR MVT阅读器执行。

层配置

上面提到的CONF dataset creation选项可以设置为一个字符串,该字符串的值是一个JSon序列化文档,如下所示:

{
    "boundaries_lod0": {
        "target_name": "boundaries",
        "description": "Country boundaries",
        "minzoom": 0,
        "maxzoom": 2
    },
    "boundaries_lod1": {
        "target_name": "boundaries",
        "minzoom": 3,
        "maxzoom": 5
    }
}

boundaries_lod0boundaries_lod1 是在目标MVT数据集中创建的OGR层的名称。它们被映射到MVT目标层 边界 .

也可以通过下面的层创建选项获得相同的行为,尽管在ogr2ogr用例中这并不方便。

图层创建选项

  • MINZOOM =整数:生成平铺的最小缩放级别。默认为数据集创建选项MINZOOM value。

  • MAXZOOM =整数:生成平铺的最小缩放级别。默认为数据集创建选项MAXZOOM值。支持的最大值为22

  • NAME =字符串:目标层名称。默认为层名称,但可以被重写,以便多个OGR层映射到单个目标MVT层。典型的用例是具有不同的OGR层,用于相互排斥的缩放级别范围。

  • DESCRIPTION =字符串:层的描述。

实例

ogrinfo MVT:https://free.tilehosting.com/data/v3/1 -oo tile_extension="pbf.pict?key=${YOUR_KEY}" --debug on -oo metadata_file="https://free.tilehosting.com/data/v3.json?key=${YOUR_KEY}"
ogr2ogr -f MVT mytileset source.gpkg -dsco MAXZOOM=10

参见: