(self)
| 40 | pass |
| 41 | |
| 42 | def test_roundtrip(self): |
| 43 | with open("test_tmp.pmtiles", "wb") as f: |
| 44 | writer = Writer(f) |
| 45 | writer.write_tile(0, b"0") |
| 46 | writer.write_tile(1, b"1") |
| 47 | writer.write_tile(2, b"2") |
| 48 | writer.write_tile(3, b"3") |
| 49 | writer.write_tile(4, b"4") |
| 50 | writer.write_tile(5, b"5") |
| 51 | writer.write_tile(6, b"6") |
| 52 | writer.write_tile(7, b"7") |
| 53 | |
| 54 | header = { |
| 55 | "tile_type": TileType.MVT, |
| 56 | "tile_compression": Compression.GZIP, |
| 57 | "min_zoom": 0, |
| 58 | "max_zoom": 2, |
| 59 | "min_lon_e7": 0, |
| 60 | "max_lon_e7": 0, |
| 61 | "min_lat_e7": 0, |
| 62 | "max_lat_e7": 0, |
| 63 | "center_zoom": 0, |
| 64 | "center_lon_e7": 0, |
| 65 | "center_lat_e7": 0, |
| 66 | } |
| 67 | |
| 68 | metadata = { |
| 69 | "vector_layers": ['vector','layers'], |
| 70 | "tilestats":{'tile':'stats'}, |
| 71 | } |
| 72 | metadata["minzoom"] = header["min_zoom"] |
| 73 | metadata["maxzoom"] = header["max_zoom"] |
| 74 | min_lon = header["min_lon_e7"] / 10000000 |
| 75 | min_lat = header["min_lat_e7"] / 10000000 |
| 76 | max_lon = header["max_lon_e7"] / 10000000 |
| 77 | max_lat = header["max_lat_e7"] / 10000000 |
| 78 | metadata["bounds"] = f"{min_lon},{min_lat},{max_lon},{max_lat}" |
| 79 | center_lon = header["center_lon_e7"] / 10000000 |
| 80 | center_lat = header["center_lat_e7"] / 10000000 |
| 81 | center_zoom = header["center_zoom"] |
| 82 | metadata["center"] = f"{center_lon},{center_lat},{center_zoom}" |
| 83 | metadata["format"] = "pbf" |
| 84 | |
| 85 | writer.finalize( |
| 86 | header, |
| 87 | metadata, |
| 88 | ) |
| 89 | |
| 90 | pmtiles_to_mbtiles("test_tmp.pmtiles", "test_tmp.mbtiles") |
| 91 | conn = sqlite3.connect('test_tmp.mbtiles') |
| 92 | cursor = conn.cursor() |
| 93 | res = cursor.execute("SELECT value from metadata where name = 'json'") |
| 94 | data = res.fetchone()[0] |
| 95 | json_metadata = json.loads(data) |
| 96 | self.assertEqual(json_metadata['vector_layers'], ['vector', 'layers']) |
| 97 | self.assertEqual(json_metadata['tilestats'], {'tile':'stats'}) |
| 98 | |
| 99 | mbtiles_to_pmtiles("test_tmp.mbtiles", "test_tmp_2.pmtiles", 3) |
nothing calls this directly
no test coverage detected