Skip to content

Commit 5be5b95

Browse files
committed
📝 Add protomaps section
1 parent 4035309 commit 5be5b95

File tree

10 files changed

+909
-0
lines changed

10 files changed

+909
-0
lines changed

.pre-commit-config.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ repos:
1212
- id: end-of-file-fixer
1313
- id: check-yaml
1414
- id: check-added-large-files
15+
args: ['--maxkb=2048']
1516
- id: check-json
1617
types: [file] # override `types: [json]`
1718
files: \.(json|ipynb)$

docs/index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,3 +122,4 @@ Trainings:
122122
opengl/index
123123
d3js/index
124124
js/index
125+
protomaps/index

docs/protomaps/basemap.png

641 KB
Loading

docs/protomaps/berlin-pmtiles.png

1.43 MB
Loading

docs/protomaps/berlin.html

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
<html>
2+
<head>
3+
<meta charset="utf-8"/>
4+
<meta
5+
http-equiv="Content-Security-Policy"
6+
content="default-src 'self' 'nonce-n0nce' 'nonce-n0nce1'; worker-src blob: ; child-src blob: ; img-src data: blob: ;" />
7+
<link rel="stylesheet" href="maplibre-gl.css">
8+
<script src="maplibre-gl.js"></script>
9+
<script src="pmtiles.js"></script>
10+
<script src="basemaps.js"></script>
11+
</head>
12+
<body>
13+
<div id="map" style="height: 100%; width: 100%"></div>
14+
<script type="text/javascript">
15+
let protocol = new pmtiles.Protocol();
16+
maplibregl.addProtocol("pmtiles", protocol.tile);
17+
maplibregl.setRTLTextPlugin(
18+
"mapbox-gl-rtl-text.min.js",
19+
true,
20+
);
21+
const map = new maplibregl.Map({
22+
container: "map",
23+
zoom: 12,
24+
center: [13.424233,52.534675],
25+
style: {
26+
glyphs: "fonts/{fontstack}/{range}.pbf",
27+
sprite: "sprites/v4/light",
28+
version: 8,
29+
sources: {
30+
protomaps: {
31+
type: "vector",
32+
url: "pmtiles://berlin.pmtiles",
33+
attribution: '© <a href="https://openstreetmap.org">OpenStreetMap</a>'
34+
},
35+
},
36+
layers: basemaps.layers("protomaps", basemaps.namedFlavor("light"), {lang: "en"})
37+
},
38+
});
39+
</script>
40+
</body>
41+
</html>

docs/protomaps/cli.rst

Lines changed: 155 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,155 @@
1+
pmtiles-CLI-Referenz
2+
====================
3+
4+
``pmtiles show``
5+
----------------
6+
7+
:samp:`$ pmtiles show {FILE}.pmtiles`
8+
gibt die Header-Informationen und Metadaten eines lokalen Archivs aus.
9+
:samp:`$ pmtiles show https://maps.cusy.io/map.pmtiles`
10+
gibt die Header-Informationen und Metadaten eines entfernten HTTPS-Archivs
11+
aus.
12+
:samp:`$ pmtiles show {FILE}.pmtiles --bucket=s3://{BUCKET}`
13+
gibt die Header-Informationen und Metadaten eines Archivs aus, das sich auf
14+
einem S3-kompatiblen Bucket befindet.
15+
:samp:`$ pmtiles show {FILE}.pmtiles --header-json`
16+
gibt eine JSON-Repräsentation des Headers aus.
17+
:samp:`$ pmtiles show {FILE}.pmtiles --metadata`
18+
gibt die JSON-Metadaten aus.
19+
20+
.. note::
21+
URLs mit Zeichen wie ``?`` und ``&``, sollten mit einem Backslash ``\``
22+
escaped werden.
23+
24+
``pmtiles tile``
25+
----------------
26+
27+
:samp:`$ pmtiles tile {FILE}.pmtiles 0 0 0`
28+
gibt den Inhalt einer einzelnen Kachel aus.
29+
30+
``pmtiles verify``
31+
------------------
32+
33+
:samp:`$ pmtiles verify {FILE}.pmtiles`
34+
überprüft, ob ein Archiv richtig geordnet ist und korrekte
35+
Header-Informationen enthält.
36+
37+
``pmtiles extract``
38+
-------------------
39+
40+
:samp:`$ pmtiles extract`
41+
erstellt ein kleineres Archiv aus einem größeren, wobei da Quellarchiv
42+
geclustert sein muss:
43+
44+
:samp:`$ pmtiles extract {IN}.pmtiles {OUT}.pmtiles --bbox=MIN_LON,MIN_LAT,MAX_LON,MAX_LAT`
45+
Den Begrenzungsrahmen mit ``MIN_LON``, ``MIN_LAT``, ``AX_LON`` und
46+
``MAX_LAT`` könnt ihr :abbr:`z.B. (zum Beispiel)` mit `bboxfinder.com
47+
<https://bboxfinder.com/>`_ ermitteln.
48+
49+
:samp:`$ pmtiles extract {IN}.pmtiles {OUT}.pmtiles --region={REGION}.geojson`
50+
Mit ``--region`` kann ein GeoJSON ``Polygon``-, ``Multipolygon``-,
51+
``Feature``- oder ein ``FeatureCollection``-Objekt angegeben werden.
52+
53+
:samp:`$ pmtiles extract https://{EXAMPLE.COM}/{IN}.pmtiles {OUT}.pmtiles --maxzoom={MAXZOOM} --download-threads=4`
54+
``--maxzoom`` extrahiert nur eine Teilmenge der Zoomstufen.
55+
56+
``--download-threads`` gibt die Anzahl der parallelen Anfragen zur
57+
Beschleunigung der Downloads an.
58+
59+
:samp:`$ pmtiles extract {IN}.pmtiles {OUT}.pmtiles --maxzoom=MAXZOOM --bucket=s3://{BUCKET}`
60+
61+
Weitere Optionen sind:
62+
63+
``--minzoom``
64+
extrahiert nur einen Teil der Pyramide, was jedoch viel mehr Anfragen
65+
erfordern kann als die Standardeinstellung ``--minzoom=0``. Da dies die
66+
Übersichts-Zoomstufen entfernt, sollte es nur in bestimmten Situationen
67+
verwendet werden.
68+
``--overfetch``
69+
läd zusätzliche Daten herunter, um kleine Anfragen zu bündeln: ``0.05``
70+
entspricht 5 %.
71+
72+
``pmtiles serve``
73+
-----------------
74+
75+
:samp:`$ pmtiles serve`
76+
ist ein einfacher Weg, PMTiles zusammen mit `pmtiles.js
77+
<https://www.npmjs.com/package/pmtiles>`_ im Web bereitzustellen:
78+
79+
:samp:`$ pmtiles serve {PATH}`
80+
liefert eine :samp:`{TILESET}.pmtiles`-Datei aus dem Verzeichnis
81+
:samp:`{PATH}` unter der URL
82+
:samp:`http://localhost:8080/{TILESET}/{Z}/{X}/{Y}.mvt|png|jpg|webp|avif`
83+
aus, wobei der Suffix dem Kacheltyp im Archiv entsprechen muss.
84+
85+
:samp:`$ pmtiles serve . --public-url=localhost`
86+
erlaubt die Ausgabe von `TileJSON
87+
<https://github.com/mapbox/tilejson-spec/tree/master/3.0.0>`_ unter der
88+
URL :samp:`http://localhost:8080/{TILESET}.json`.
89+
90+
``pmtiles convert``
91+
-------------------
92+
93+
:samp:`$ pmtiles convert`
94+
konvertiert ein `MBTiles
95+
<https://docs.mapbox.com/help/glossary/mbtiles/>`_-Archiv in PMTiles:
96+
97+
:samp:`$ pmtiles convert {IN}.mbtiles {OUT}.pmtiles`
98+
99+
:samp:`--no-deduplication`
100+
Kachelinhalte sollten üblicherweise de-dupliziert werden. Verwendet dies
101+
nur, wenn ihr wisst, dass die Eingabe nur einzigartige Kacheln enthält
102+
und die Konvertierung beschleunigt werden soll.
103+
:samp:`--tmpdir`
104+
erlaubt die Angabe des temporären Verzeichnisses.
105+
106+
``pmtiles cluster``
107+
-------------------
108+
109+
:samp:`pmtiles cluster {IN}.pmtiles`
110+
clustert ein bestehendes Archiv, wobei die Größe und das Layout optimiert
111+
werden. Mit `tippecanoe <https://github.com/felt/tippecanoe>`_,
112+
`planetiler <https://github.com/onthegomap/planetiler>`_ und pmtiles CLI
113+
erstellte Archive sind bereits geclustert.
114+
115+
:samp:`--no-deduplication`
116+
Kachelinhalte sollten üblicherweise de-dupliziert werden. Verwendet dies
117+
nur, wenn ihr wisst, dass die Eingabe nur einzigartige Kacheln enthält
118+
und die Konvertierung beschleunigt werden soll.
119+
120+
``pmtiles upload``
121+
------------------
122+
123+
:samp:`pmtiles upload {IN}.pmtiles {REMOTE}.pmtiles --bucket=s3://{BUCKET}`
124+
lädt ein Archiv in den Cloud-Speicher hoch.
125+
126+
``pmtiles edit``
127+
----------------
128+
129+
:samp:`pmtiles edit NAME.pmtiles --header-json={HEADER}.json --metadata={METADATA}.json`
130+
ändert Teile des Archiv-Headers, oder ersetzt die JSON-Metadaten des
131+
Archivs. Wenn ihr nur den Header bearbeitet, wird die Datei an Ort und
132+
Stelle geändert; das Schreiben der JSON-Metadaten erfordert jedoch das
133+
Schreiben einer neuen Kopie des Archivs, die dann :samp:`NAME.pmtiles`
134+
ersetzt.
135+
136+
.. hint::
137+
Ihr könnt die bestehenden Header-Informationen und Metadaten in die
138+
Dateien :samp:`{HEADER}.json` und :samp:`{METADATA}.json` schreiben mit:
139+
140+
:samp:`pmtiles show {NAME}.pmtiles --header-json > {HEADER}.json`
141+
142+
:abbr:`bzw. (beziehungsweise)`
143+
144+
:samp:`pmtiles show {NAME}.pmtiles --metadata > {METADATA}.json`
145+
146+
.. hint::
147+
Die Felder ``tile_type``, ``tile_compresssion``, ``minzoom``,
148+
``maxzoom``, ``bounds`` und ``center`` des Headers können bearbeitet
149+
werden; andere Felder sind jedoch nicht bearbeitbar.
150+
151+
``pmtiles version``
152+
-------------------
153+
154+
:samp:`pmtiles version`
155+
gibt die Version von pmtiles aus.

0 commit comments

Comments
 (0)