HN user

jleedev

28 karma
Posts0
Comments17
View on HN
No posts found.

There are 239 Wikipedia articles about Barack Obama, but only one Wikidata concept.

Comes in handy when updating the interwiki language links, or being able to automatically fill out those infoboxes.

A single ocean tile on mapbox is 39 bytes:

  1a25 7802 0a05 7761 7465 7228 8020 1217
  1803 2213 0980 69e0 7f1a dfa8 0100 00bf
  bf01 e0a8 0100 0f
Decodes to this protobuf:
  layers {                                                                                                                                                                                         
    name: "water"                                                                                                                                                                                  
    features {
      type: POLYGON
      geometry: 9
      geometry: 13440
      geometry: 16352
      geometry: 26
      geometry: 21599
      geometry: 0
      geometry: 0
      geometry: 24511
      geometry: 21600
      geometry: 0
      geometry: 15
    }
    extent: 4096
    version: 2
  }
Geometry interpretation is here: https://github.com/mapbox/vector-tile-spec/tree/master/2.1#4...

And produces this geometry before reprojecting to the tile coordinates:

  Layer name: water
  Geometry: Polygon
  Feature Count: 1
  Extent: (0.000000, 0.000000) - (4096.000000, 4096.000000)
  Layer SRS WKT:
  (unknown)
  mvt_id: Integer64 (0.0)
  OGRFeature(water):0
    POLYGON ((0 0,0 4096,4096 4096,4096 0,0 0))
But of course, this doesn't specify a color, just "the ocean is a rectangle".

For comparison, Cloud Optimized GeoTIFF (COG) is specifically designed to be readable with HTTP Range requests, so the single file can be placed on S3 and be immediately usable.

As others pointed out, the MVTs inside can be unpacked for static serving. But a SQLite database is not itself usable in this way.

Mysql also applies additional rounding to floats if you're not careful:

  mysql> create table t(f float);
  Query OK, 0 rows affected (0.02 sec)

  mysql> insert into t(f) values (999999),(1000000),(1000001);
  Query OK, 3 rows affected (0.00 sec)
  Records: 3  Duplicates: 0  Warnings: 0

  mysql> select distinct f from t;
  +---------+
  | f       |
  +---------+
  |  999999 |
  | 1000000 |
  | 1000000 |
  +---------+
  3 rows in set (0.00 sec)

  mysql>