Labelbox documentation

Tiled imagery

In order to use our Tiled Imagery Editor to label geospatial data, you'll need to use a tile service such as QGIS or gdal2tiles to generate the map tiles.

Use QGIS to convert GeoTIFF to image tiles

If you have GeoTIFF files that you would like to import and label, you will need to convert them into XYZ tiles first.

To generate XYZ image tiles using the QGIS tool, follow these steps:

  1. Download and install QGIS.

  2. Open QGIS. From the Plugins menu at the top, install Lat Lon Tools.

  3. Open your GeoTIFF file in QGIS. The easiest way to do this is to find the file Finder or Explorer, right-click on the image, and select open with QGIS.

  4. From the Processing menu at the top, click Toolbox. This will open the Processing toolbox panel.

  5. In the Processing Toolbox, search for Generate XYZ tiles (Directory) and double click to open the Generate XYZ tiles window.

  6. Ensure the entire TIFF image showing in the view panel.

  7. In the Generate XYZ Tiles (Directory) window, do the following:

    1. For Extent, choose Use Map Canvas Extent.

    2. Select the Minimum zoom and Maximum zoom. We suggest starting with values of min: 10 and max: 20. depending on the size of your image, this may need to be adjusted and re-tiled.

    3. For Tile format, choose PNG.

    4. Select your Output directory and Output html directory.

    5. Select Run to process your tiles.

  8. Upload your image files to a cloud environment (AWS S3, Google Cloud Services, etc). Upload all necessary folders corresponding to zoom levels.

  9. Create your import file. See the sections below for sample JSON imports.

  10. If you choose to secure your URLs with IP whitelisting, make sure to include the Labelbox backend (35.223.142.181) so the image tiles can be rendered in the Editor. Contact Labelbox support for additional information on IP whitelisting.

  11. Go to app.labelbox.com/new-data and drag and drop your JSON file to import.

Large imagery
[
    {
        "tileLayerUrl": "https://labelbox.s3-us-west-2.amazonaws.com/pathology/{z}/{x}/{y}.png",
        "minZoom": 1,
        "maxZoom": 8.5,
        "bounds": [
            [0, 0],
            [135, 128]
        ],
        "epsg": "Simple"
    },
    {
        "tileLayerUrl": "https://s3-us-west-2.amazonaws.com/labelbox/tiler/efb292d2a04e/{z}/{x}/{y}.png",
        "minZoom": 5,
        "maxZoom": 8,
        "bounds": [
            [0, 0],
            [120, 130]
        ],
        "epsg": "Simple"
    }
]
Map sections

Depending on how you want to distribute the labeling work, you may section your map data by creating an object for each section in your JSON file and defining the bounds coordinates for each section. When you import the dataset and attach it to a project, each section will get treated as a separate asset to be distributed among labelers.

map-sections.png
[
{
  "tileLayerUrl": "https://public-tiles.dronedeploy.com/1499994155_DANIELOPENPIPELINE_ortho_qfs/{z}/{x}/{y}.png?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wdWJsaWMtdGlsZXMuZHJvbmVkZXBsb3kuY29tLzE0OTk5OTQxNTVfREFOSUVMT1BFTlBJUEVMSU5FX29ydGhvX3Fmcy8qIiwiQ29uZGl0aW9uIjp7IkRhdGVMZXNzVGhhbiI6eyJBV1M6RXBvY2hUaW1lIjoyMTQ1OTE0MTE4fX19XX0_&Signature=O~50rrGXdEC6Hi8jPJ3dbT~UtBd7Cw6iQPTxdJ8LU2IaoxeP22R3JpKPkLN3T3~Lcw3CyX7uft2Baj0MH93qUoCYyN~~jNX3OMkYV2jbrHDezf6zQRHAabXX-L2bL-JEGfFL6z3DWccOFeCH56CuhgC29k5CJx7I34P-LQJdnAUsA-KaqKH1IyYsHStRIfmMzdXNAWU58FTfqVljq9SbKXxfgdr2SZ~7VgLaZ8IhA0WnlKUo-JgqTd~jYa5mGCpR8351IMK0aMuY4Mld4SOXssQ-rOtlZtypvo8FDp474TlGIEGz5PHxGOPsqLPF19hEYTgoPqsUj8QEuiTfg-cmsg__&Key-Pair-Id=APKAJXGC45PGQXCMCXSA",
  "bounds": [
    [
      37.87488726890353,
      -122.32488870620728
    ],
    [
      37.87280390440759,
      -122.32154130935669
    ]
  ],
  "minZoom": 10,
  "maxZoom": 23,
  "epsg": "EPSG4326"
},
{
  "tileLayerUrl": "https://public-tiles.dronedeploy.com/1499994155_DANIELOPENPIPELINE_ortho_qfs/{z}/{x}/{y}.png?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wdWJsaWMtdGlsZXMuZHJvbmVkZXBsb3kuY29tLzE0OTk5OTQxNTVfREFOSUVMT1BFTlBJUEVMSU5FX29ydGhvX3Fmcy8qIiwiQ29uZGl0aW9uIjp7IkRhdGVMZXNzVGhhbiI6eyJBV1M6RXBvY2hUaW1lIjoyMTQ1OTE0MTE4fX19XX0_&Signature=O~50rrGXdEC6Hi8jPJ3dbT~UtBd7Cw6iQPTxdJ8LU2IaoxeP22R3JpKPkLN3T3~Lcw3CyX7uft2Baj0MH93qUoCYyN~~jNX3OMkYV2jbrHDezf6zQRHAabXX-L2bL-JEGfFL6z3DWccOFeCH56CuhgC29k5CJx7I34P-LQJdnAUsA-KaqKH1IyYsHStRIfmMzdXNAWU58FTfqVljq9SbKXxfgdr2SZ~7VgLaZ8IhA0WnlKUo-JgqTd~jYa5mGCpR8351IMK0aMuY4Mld4SOXssQ-rOtlZtypvo8FDp474TlGIEGz5PHxGOPsqLPF19hEYTgoPqsUj8QEuiTfg-cmsg__&Key-Pair-Id=APKAJXGC45PGQXCMCXSA",
  "bounds": [
    [
      37.8749042065848,
      -122.32149839401245
    ],
    [
      37.87278696624341,
      -122.31810808181763
    ]
  ],
  "minZoom": 10,
  "maxZoom": 23,
  "epsg": "EPSG4326"
},
{
  "tileLayerUrl": "https://public-tiles.dronedeploy.com/1499994155_DANIELOPENPIPELINE_ortho_qfs/{z}/{x}/{y}.png?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wdWJsaWMtdGlsZXMuZHJvbmVkZXBsb3kuY29tLzE0OTk5OTQxNTVfREFOSUVMT1BFTlBJUEVMSU5FX29ydGhvX3Fmcy8qIiwiQ29uZGl0aW9uIjp7IkRhdGVMZXNzVGhhbiI6eyJBV1M6RXBvY2hUaW1lIjoyMTQ1OTE0MTE4fX19XX0_&Signature=O~50rrGXdEC6Hi8jPJ3dbT~UtBd7Cw6iQPTxdJ8LU2IaoxeP22R3JpKPkLN3T3~Lcw3CyX7uft2Baj0MH93qUoCYyN~~jNX3OMkYV2jbrHDezf6zQRHAabXX-L2bL-JEGfFL6z3DWccOFeCH56CuhgC29k5CJx7I34P-LQJdnAUsA-KaqKH1IyYsHStRIfmMzdXNAWU58FTfqVljq9SbKXxfgdr2SZ~7VgLaZ8IhA0WnlKUo-JgqTd~jYa5mGCpR8351IMK0aMuY4Mld4SOXssQ-rOtlZtypvo8FDp474TlGIEGz5PHxGOPsqLPF19hEYTgoPqsUj8QEuiTfg-cmsg__&Key-Pair-Id=APKAJXGC45PGQXCMCXSA",
  "bounds": [
    [
      37.8749042065848,
      -122.31806516647339
    ],
    [
      37.87278696624341,
      -122.31529712677002
    ]
  ],
  "minZoom": 10,
  "maxZoom": 23,
  "epsg": "EPSG4326"
},
{
  "tileLayerUrl": "https://public-tiles.dronedeploy.com/1499994155_DANIELOPENPIPELINE_ortho_qfs/{z}/{x}/{y}.png?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wdWJsaWMtdGlsZXMuZHJvbmVkZXBsb3kuY29tLzE0OTk5OTQxNTVfREFOSUVMT1BFTlBJUEVMSU5FX29ydGhvX3Fmcy8qIiwiQ29uZGl0aW9uIjp7IkRhdGVMZXNzVGhhbiI6eyJBV1M6RXBvY2hUaW1lIjoyMTQ1OTE0MTE4fX19XX0_&Signature=O~50rrGXdEC6Hi8jPJ3dbT~UtBd7Cw6iQPTxdJ8LU2IaoxeP22R3JpKPkLN3T3~Lcw3CyX7uft2Baj0MH93qUoCYyN~~jNX3OMkYV2jbrHDezf6zQRHAabXX-L2bL-JEGfFL6z3DWccOFeCH56CuhgC29k5CJx7I34P-LQJdnAUsA-KaqKH1IyYsHStRIfmMzdXNAWU58FTfqVljq9SbKXxfgdr2SZ~7VgLaZ8IhA0WnlKUo-JgqTd~jYa5mGCpR8351IMK0aMuY4Mld4SOXssQ-rOtlZtypvo8FDp474TlGIEGz5PHxGOPsqLPF19hEYTgoPqsUj8QEuiTfg-cmsg__&Key-Pair-Id=APKAJXGC45PGQXCMCXSA",
  "bounds": [
    [
      37.87273615172751,
      -122.32486724853514
    ],
    [
      37.870584971740065,
      -122.32154130935669
    ]
  ],
  "minZoom": 10,
  "maxZoom": 23,
  "epsg": "EPSG4326"
},
{
  "tileLayerUrl": "https://public-tiles.dronedeploy.com/1499994155_DANIELOPENPIPELINE_ortho_qfs/{z}/{x}/{y}.png?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wdWJsaWMtdGlsZXMuZHJvbmVkZXBsb3kuY29tLzE0OTk5OTQxNTVfREFOSUVMT1BFTlBJUEVMSU5FX29ydGhvX3Fmcy8qIiwiQ29uZGl0aW9uIjp7IkRhdGVMZXNzVGhhbiI6eyJBV1M6RXBvY2hUaW1lIjoyMTQ1OTE0MTE4fX19XX0_&Signature=O~50rrGXdEC6Hi8jPJ3dbT~UtBd7Cw6iQPTxdJ8LU2IaoxeP22R3JpKPkLN3T3~Lcw3CyX7uft2Baj0MH93qUoCYyN~~jNX3OMkYV2jbrHDezf6zQRHAabXX-L2bL-JEGfFL6z3DWccOFeCH56CuhgC29k5CJx7I34P-LQJdnAUsA-KaqKH1IyYsHStRIfmMzdXNAWU58FTfqVljq9SbKXxfgdr2SZ~7VgLaZ8IhA0WnlKUo-JgqTd~jYa5mGCpR8351IMK0aMuY4Mld4SOXssQ-rOtlZtypvo8FDp474TlGIEGz5PHxGOPsqLPF19hEYTgoPqsUj8QEuiTfg-cmsg__&Key-Pair-Id=APKAJXGC45PGQXCMCXSA",
  "bounds": [
    [
      37.87275308990337,
      -122.32149839401245
    ],
    [
      37.870534155705414,
      -122.31812953948973
    ]
  ],
  "minZoom": 10,
  "maxZoom": 23,
  "epsg": "EPSG4326"
},
{
  "tileLayerUrl": "https://public-tiles.dronedeploy.com/1499994155_DANIELOPENPIPELINE_ortho_qfs/{z}/{x}/{y}.png?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wdWJsaWMtdGlsZXMuZHJvbmVkZXBsb3kuY29tLzE0OTk5OTQxNTVfREFOSUVMT1BFTlBJUEVMSU5FX29ydGhvX3Fmcy8qIiwiQ29uZGl0aW9uIjp7IkRhdGVMZXNzVGhhbiI6eyJBV1M6RXBvY2hUaW1lIjoyMTQ1OTE0MTE4fX19XX0_&Signature=O~50rrGXdEC6Hi8jPJ3dbT~UtBd7Cw6iQPTxdJ8LU2IaoxeP22R3JpKPkLN3T3~Lcw3CyX7uft2Baj0MH93qUoCYyN~~jNX3OMkYV2jbrHDezf6zQRHAabXX-L2bL-JEGfFL6z3DWccOFeCH56CuhgC29k5CJx7I34P-LQJdnAUsA-KaqKH1IyYsHStRIfmMzdXNAWU58FTfqVljq9SbKXxfgdr2SZ~7VgLaZ8IhA0WnlKUo-JgqTd~jYa5mGCpR8351IMK0aMuY4Mld4SOXssQ-rOtlZtypvo8FDp474TlGIEGz5PHxGOPsqLPF19hEYTgoPqsUj8QEuiTfg-cmsg__&Key-Pair-Id=APKAJXGC45PGQXCMCXSA",
  "bounds": [
    [
      37.87270227536411,
      -122.31806516647339
    ],
    [
      37.870534155705414,
      -122.31531858444212
    ]
  ],
  "minZoom": 10,
  "maxZoom": 23,
  "epsg": "EPSG4326"
}]
Alternative layers

As an admin, you can add as many image layers as you need to your Tiled imagery project. Labelers can toggle between layers by clicking on the dropdown menu at the top.

This example has a default image and 2 alternative layers.

[
     {
         "tileLayerUrl": "https://labelbox.s3-us-west-2.amazonaws.com/tiler/drone-map/rgb/{z}/{x}/{y}.png",
         "bounds": [
             [17.983835501492813,74.41417694091798],
             [17.996825561127697, 74.44644927978517]
         ],
         "minZoom": 8,
         "maxZoom": 22,
         "maxNativeZoom": 22,
         "epsg": "EPSG3857",
        "alternativeLayers": [
             {
                 "tileLayerUrl": "https://labelbox.s3-us-west-2.amazonaws.com/tiler/drone-map/ndvi/{z}/{x}/{y}.png",
                 "name": "NDVI"
             },
             {
                 "tileLayerUrl": "https://labelbox.s3-us-west-2.amazonaws.com/tiler/drone-map/dtm/{z}/{x}/{y}.png",
                 "name": "DTM"
             }
         ]
     }
]

This example includes a default layer of sample synthetic aperture radar data plus one additional layer.

[
     {
         "tileLayerUrl": "https://labelbox.s3-us-west-2.amazonaws.com/tiler/seuz-canal-black/{z}/{x}/{y}.png",
         "bounds": [
             [31.0, 31.9],
             [31.7, 33.0]
         ],
         "minZoom": 10,
         "maxZoom": 16,
         "maxNativeZoom": 17,
         "epsg": "EPSG4326",
         "alternativeLayers": [
             {
                 "tileLayerUrl": "https://labelbox.s3-us-west-2.amazonaws.com/tiler/seuz-canal-white/{z}/{x}/{y}.png",
                 "name": "White"
             }
        ]
    },
    {
         "tileLayerUrl": "https://labelbox.s3-us-west-2.amazonaws.com/tiler/tokyo-black/{z}/{x}/{y}.png",
         "bounds": [
             [35.0, 139.6],
             [35.9, 140.2]
         ],
         "minZoom": 10,
         "maxZoom": 16,
         "maxNativeZoom": 17,
         "epsg": "EPSG4326",
        "alternativeLayers": [
             {
                 "tileLayerUrl": "https://labelbox.s3-us-west-2.amazonaws.com/tiler/tokyo-white/{z}/{x}/{y}.png",
                 "name": "White"
             }
        ]
    }
]
Add attachments

This sample JSON includes a TEXT attachment in the import file. To learn more about the different attachment types supported, see Adding attachments.

[
    {
        "tileLayerUrl": "https://public-tiles.dronedeploy.com/1499994155_DANIELOPENPIPELINE_ortho_qfs/{z}/{x}/{y}.png?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wdWJsaWMtdGlsZXMuZHJvbmVkZXBsb3kuY29tLzE0OTk5OTQxNTVfREFOSUVMT1BFTlBJUEVMSU5FX29ydGhvX3Fmcy8qIiwiQ29uZGl0aW9uIjp7IkRhdGVMZXNzVGhhbiI6eyJBV1M6RXBvY2hUaW1lIjoyMTQ1OTE0MTE4fX19XX0_&Signature=O~50rrGXdEC6Hi8jPJ3dbT~UtBd7Cw6iQPTxdJ8LU2IaoxeP22R3JpKPkLN3T3~Lcw3CyX7uft2Baj0MH93qUoCYyN~~jNX3OMkYV2jbrHDezf6zQRHAabXX-L2bL-JEGfFL6z3DWccOFeCH56CuhgC29k5CJx7I34P-LQJdnAUsA-KaqKH1IyYsHStRIfmMzdXNAWU58FTfqVljq9SbKXxfgdr2SZ~7VgLaZ8IhA0WnlKUo-JgqTd~jYa5mGCpR8351IMK0aMuY4Mld4SOXssQ-rOtlZtypvo8FDp474TlGIEGz5PHxGOPsqLPF19hEYTgoPqsUj8QEuiTfg-cmsg__&Key-Pair-Id=APKAJXGC45PGQXCMCXSA",
        "bounds": [
            [
                37.87488726890353,
                -122.32488870620728
            ],
            [
                37.87280390440759,
                -122.32154130935669
            ]
        ],
        "minZoom": 10,
        "maxZoom": 23,
        "epsg": "EPSG4326",
        "attachments": [
            {
                "type": "TEXT",
                "value": "Test Input"
            }
        ]
    }
]