Skip to content

hkrishna/mapbox-vector-tile

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mapbox Vector Tile

Installation

mapbox-vector-tile is compatible with Python 2.6, 2.7, 3.2, 3.3, and 3.4. It is listed on PyPi as 'mapbox-vector-tile'. The recommended way to install is via pip:

$ pip install mapbox-vector-tile

Encoding

Encode method expects an array of layers or atleast a single valid layer. A valid layer is a dictionary with the following keys

  • name: layer name
  • features: an array of features. A feature is a dictionary with the following keys:
    • geometry: representation of the feature geometry in WKT or WKB
    • properties: a dictionary with a few keys and their corresponding values.
>>> import mapbox_vector_tile

# Using WKT
>>> mapbox_vector_tile.encode([
    {
      "name": "water", 
      "features": [
        {
          "geometry":"POLYGON ((0 0, 0 1, 1 1, 1 0, 0 0))", 
          "properties":{
            "uid":123, 
            "foo":"bar", 
            "cat":"flew"
          }
        }
      ]
    },
    {
      "name": "air", 
      "features": [
        {
          "geometry":"LINESTRING(-71.160281 42.258729,-71.160837 42.259113,-71.161144 42.25932)", 
          "properties":{
            "uid":1234, 
            "foo":"bar", 
            "cat":"flew"
          }
        }
      ]
    }
  ]) 

'\x1aJ\n\x05water\x12\x1a\x08\x01\x12\x06\x00\x00\x01\x01\x02\x02\x18\x03"\x0c\t\x00\x80@\x1a\x00\x01\x02\x00\x00\x02\x0f\x1a\x03foo\x1a\x03uid\x1a\x03cat"\x05\n\x03bar"\x02 {"\x06\n\x04flew(\x80 x\x02\x1aW\n\x03air\x12\x1a\x08\x01\x12\x08\x00\x00\x01\x01\x02\x02\x03\x03\x18\x02"\n\t\x8d\x01\xaa?\x12\x00\x00\x00\x00\x1a\x03foo\x1a\x03uid\x1a\x05balls\x1a\x03cat"\x05\n\x03bar"\x03 \xd2\t"\x05\n\x03foo"\x06\n\x04flew(\x80 x\x02'


# Using WKB
>>> mapbox_vector_tile.encode([
    {
      "name": "water", 
      "features": [
        {
          "geometry":"\001\003\000\000\000\001\000\000\000\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\360?\000\000\000\000\000\000\360?\000\000\000\000\000\000\360?\000\000\000\000\000\000\360?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000", 
          "properties":{
            "uid":123, 
            "foo":"bar", 
            "cat":"flew"
          }
        }
      ]
    },
    {
      "name": "air", 
      "features": [
        {
          "geometry":"\001\003\000\000\000\001\000\000\000\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\360?\000\000\000\000\000\000\360?\000\000\000\000\000\000\360?\000\000\000\000\000\000\360?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000", 
          "properties":{
            "uid":1234, 
            "foo":"bar", 
            "cat":"flew"
          }
        }
      ]
    }
    ]) 

'\x1aJ\n\x05water\x12\x1a\x08\x01\x12\x06\x00\x00\x01\x01\x02\x02\x18\x03"\x0c\t\x00\x80@\x1a\x00\x01\x02\x00\x00\x02\x0f\x1a\x03foo\x1a\x03uid\x1a\x03cat"\x05\n\x03bar"\x02 {"\x06\n\x04flew(\x80 x\x02\x1aY\n\x03air\x12\x1c\x08\x01\x12\x08\x00\x00\x01\x01\x02\x02\x03\x03\x18\x03"\x0c\t\x00\x80@\x1a\x00\x01\x02\x00\x00\x02\x0f\x1a\x03foo\x1a\x03uid\x1a\x05balls\x1a\x03cat"\x05\n\x03bar"\x03 \xd2\t"\x05\n\x03foo"\x06\n\x04flew(\x80 x\x02'

Decoding

Decode method takes in a valid google.protobuf.message Tile and returns decoded string in the following format:

{
  layername: [
    {
      'geometry': 'list of points',
      'properties': 'dictionary of key/value pairs',
      'id': 'unique id for the given feature within the layer '
    },
    {
      # ...
    }
  ],
  layername2: [
    # ...
  ]
}
>>> import mapbox_vector_tile

>>> mapbox_vector_tile.decode('\x1aJ\n\x05water\x12\x1a\x08\x01\x12\x06\x00\x00\x01\x01\x02\x02\x18\x03"\x0c\t\x00\x80@\x1a\x00\x01\x02\x00\x00\x02\x0f\x1a\x03foo\x1a\x03uid\x1a\x03cat"\x05\n\x03bar"\x02 {"\x06\n\x04flew(\x80 x\x02\x1aY\n\x03air\x12\x1c\x08\x01\x12\x08\x00\x00\x01\x01\x02\x02\x03\x03\x18\x03"\x0c\t\x00\x80@\x1a\x00\x01\x02\x00\x00\x02\x0f\x1a\x03foo\x1a\x03uid\x1a\x05balls\x1a\x03cat"\x05\n\x03bar"\x03 \xd2\t"\x05\n\x03foo"\x06\n\x04flew(\x80 x\x02') 

{
  'water': [
    {
      'geometry': [[0, 0], [0, 1], [1, 1], [1, 0], [0, 0]], 
      'properties': {
        'foo': 'bar', 
        'uid': 123, 
        'cat': 'flew'
      }, 
      'id': 1
    }
  ], 
  'air': [
    {
      'geometry': [[0, 0], [0, 1], [1, 1], [1, 0], [0, 0]], 
      'properties': {
        'foo': 'bar', 
        'uid': 1234, 
        'balls': 'foo', 
        'cat': 'flew'
      }, 
      'id': 1
    }
  ]
}

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%