- tinyworldmap ist eine Weltkarte für Offline-first- und Low-Bandwidth-Web-Apps und ist für die Nutzung mit Leaflet konzipiert
- Sie unterstützt alle Zoomstufen; die vollständigste Version ist 450 KB gzip groß. Clientseitiges Rendering wurde auf zehn Jahre alten Low-End-Smartphones profiliert und getestet, ohne spürbare Verzögerung
- Die Standardkarte zeigt die 10.000 bevölkerungsreichsten Städte, die in OpenStreetMap hinzugefügt wurden; zum Zeitpunkt der Erstellung umfasst dies Städte und Orte ab 48.000 Einwohnern
- Es gibt zwei Nutzungsweisen: als Basemap, die OpenStreetMap-Tiles ersetzt, oder als Fallback-Karte, die im Offline-Zustand OSM-Tile-Anfragen durch lokal erzeugte Tiles ersetzt
- Die Kartendaten stehen wie OpenStreetMap unter der ODBL-Lizenz; eine Namensnennung von OpenStreetMap und tinyworldmap ist etwa im Leaflet-Footer erforderlich
Zweck und Umfang von tinyworldmap
- tinyworldmap ist eine Weltkarte für Offline-first- und Low-Bandwidth-Web-Apps
- Sie ist für die Nutzung mit Leaflet konzipiert und unterstützt alle Zoomstufen
- Die vollständigste Version ist 450 KB gzip groß, entpackt 1,1 MB
- Das clientseitige Rendering wurde auf zehn Jahre alten Low-End-Smartphones umfangreich profiliert und getestet; es gab keine spürbare Verzögerung
- Demos gibt es als Nightly demo, Stable demo und v3 announcement
Standard-Kartendaten
- In der Standardeinstellung werden die 10.000 bevölkerungsreichsten Städte angezeigt, die in OpenStreetMap hinzugefügt wurden
- Zum Zeitpunkt der Erstellung umfasst dieser Bereich alle Städte und Orte mit 48.000 oder mehr Einwohnern
Zwei Nutzungsarten in Leaflet
Kartenstil und angepasste Karten
- Der Konstruktor akzeptiert die Option
render, mit der sich das Aussehen der Karte ändern lässt
- Die Option
style jeder Ebene wird auf Canvas’ CanvasRenderingContext2D angewendet
- Beispielsweise kann man dem Layer
state_borders ein fillStyle zuweisen, um den Stil zu ändern
let render = {
state_borders: {
style: {fillStyle: '#f00'}
}
}
new L.GridLayer.TinyWorld({maxZoom: 19, render}).addTo(map)
- Wenn eine Organisation eine Straßenkarte, Stadtkarte, Karte in einer anderen Sprache oder eine Karte mit maßgeschneiderten Inhalten einschließlich OSM- oder Nicht-OSM-Daten benötigt, kann sie unter
business@tinyworldmap.com ein Angebot anfragen
Optionen für kleinere Kartendateien
-
Version ohne Grenzen
tiny-world-cities-10000.js(on) enthält die Daten der vollständigen Version ohne Bundesstaatsgrenzen, Ländergrenzen und Küstenlinien
- Diese Version spart 300 KB gzip bzw. 825 KB entpackt
- Der Vorteil der Version ohne Grenzen ist, dass alle enthaltenen Daten präzise sind
- Die Ländergrenzen der vollständigen Version sind bei hohen Zoomstufen nicht genau, sodass Overlays mit Formen, die an Ländergrenzen oder Küstenlinien ausgerichtet sind, unpassend wirken können
- In solchen Fällen sieht die Version ohne Grenzen oft besser aus
-
Version ohne Stadtlabels
- Es gibt zwei Dateien ohne Stadtlabels
tiny-world-borders.js(on): lässt Bundesstaatsgrenzen weg
tiny-world-nocities.js(on): behält Bundesstaatsgrenzen bei
- Stadtlabels belegen entpackt 410 KB und komprimiert 172 KB
-
Version mit weniger Städten
- Dateien mit Stadtlabels sind auch in Versionen mit 2.000 und 4.000 Städten verfügbar
- Dazu ersetzt man im Dateinamen
10000 durch 2000 oder 4000
- | Anzahl enthaltener Städte | Bevölkerungsgrenze |
- | --- | --- |
- | 10.000 | über 48.000 Einwohner |
- | 4.000 | über 137.000 Einwohner |
- | 2.000 | über 287.000 Einwohner |
Lizenz und Attribution
- Die Daten von tinyworldmap stehen wie OpenStreetMap-Daten unter der ODBL-Lizenz
- ODBL verlangt Attribution
- Wenn die Einrichtung wie beschrieben erfolgt ist, sollte der Leaflet-Footer die Attribution für OpenStreetMap und tinyworldmap enthalten
- Andernfalls muss die Attribution für OpenStreetMap und tinyworldmap separat hinzugefügt werden
1 Kommentare
Meinungen auf Hacker News
Mir gefällt die Idee. Sie löst das Problem, dass man sehr weit herauszoomt und dann warten muss, bis der Server die gerade angeforderten Kontinent-Kacheln rendert.
Allerdings verstehe ich nicht ganz, welcher Use Case es ist, bei dem man die relative Lage von West Bloomfield Township und Waterford Charter Township, Vororten von Detroit, erkennen kann, aber nicht weiß, in welchem Bundesstaat sie liegen oder dass die Great Lakes existieren.
Ich fände es besser, deutlich mehr Daten für Küstenlinien zu verwenden und deutlich weniger für die Unterteilung von Metropolregionen.
Sie verdecken zu viele andere mögliche Informationen.
Schön, aber die Küstendetails sind viel zu gering. Einige Orte im Vereinigten Königreich schweben im Meer, während Greenland und Northern Canada umgekehrt alle Eckpunkte abbekommen.
Der Detailgrad entsprechend der Mercator-Projektion scheint bereits berücksichtigt zu sein, aber es wäre gut, Regionen mit kaum Bevölkerung niedriger zu priorisieren.
Die SQLite-DB von QRank war früher auch schon einmal auf HN.
[1] https://qrank.wmcloud.org/
[2] https://github.com/hikeratlas/qrank
Eine Provinz der Netherlands wird vom Festland des Landes abgetrennt und wie eine Insel dargestellt, obwohl das tatsächlich nicht so ist. Gleichzeitig kennt die Karte in dieser Provinz fünf Städtenamen, von denen einige fast überlappen.
Andererseits erscheint mir die Aufnahme des Afsluitdijk persönlich als unnötiges Detail, aber ich verstehe, dass es programmgesteuert schwer ist, zwischen Land, das gezeichnet werden soll, und einfacher maritimer Infrastruktur zu unterscheiden.
Eigentlich müsste ich im Issue-Tracker ein Ticket eröffnen, aber da ich auf dem Handy nicht eingeloggt bin, ist ein HN-Kommentar im Moment das Beste. Wenn jemand ähnlich empfindet, kann er gern auf Grundlage dieses Kommentars Verbesserungen vorschlagen, etwa eine Anpassung des Verhältnisses, einen Mindestabstand zwischen Städten oder eine Verkleinerung der Gesamtdatei.
French Polynesia existiert auf der Karte nicht einmal.
Der ursprüngliche Grund, es nicht so zu machen, war, dass ältere Smartphones, insbesondere Firefox for Android, beim Zeichnen vieler Polygone abstürzen konnten. Seitdem wurde der Zeichenprozess optimiert, aber Vorsicht ist weiterhin nötig.
[1] https://tinyworldmap.com/beta.html
Das ist etwas, das bei grundlegender Qualitätskontrolle auffallen müsste.
Ich habe etwas Ähnliches gebaut. Offline-first, sehr klein und vektorbasiert, mit Schwerpunkt auf Internationalisierung.
Es ist in allen UN-Sprachen verfügbar. Spanish habe ich allerdings einfach vergessen und ausgelassen; es ließe sich in ein paar Stunden erstellen, was mir peinlich ist.
Für Länder- und Städtenamen werden die bei der UN registrierten offiziellen Bezeichnungen verwendet. Deshalb lautet der offizielle Kurzname des UK „United Kingdom of Great Britain and Northern Ireland“.
https://map.ache.one/en
Eine leichte Karte zu zeichnen und Internationalisierung zu handhaben war vergleichsweise einfach, weil es mehrere offene Datenquellen und Libraries dafür gibt.
Der wirklich schwierige Teil sind rein administrative Definitionen. Wenn man Daten hat, die mit den meisten Ländern verknüpft sind, gibt es zwangsläufig Abweichungen zur Kartenquelle, und am Ende muss man eine eigene angepasste Karte erstellen.
Es gibt keinen Konsens darüber, was ein „Land“ ist. Western Sahara ist offiziell ein Land, wird faktisch aber weiterhin von Morocco besetzt; Somalia hat mit Somaliland und Puntland Gebiete, die faktisch wie unabhängige Staaten agieren, aber nicht offiziell anerkannt sind. Greenland, Niue und andere liegen irgendwo dazwischen.
Aus eigener Erfahrung auf Länderebene war es ein manueller Prozess mit schmutzigen Hacks, und am schwierigsten war es, zu testen, ob alles richtig passt. Besonders schwierig sind ein angemessener Generalisierungsgrad und das, was Menschen von einer Karte ihrer eigenen Region erwarten.
Mich würde interessieren, ob du den Aufwand für eine deutliche Verbesserung dieser Karte für lohnenswert hältst.
Der Stern steht bei Dar Es Salaam, das Label lautet aber Dodoma. Dodoma ist tatsächlich die Hauptstadt, liegt aber weiter in Richtung Landesmitte.
Niedlich. Ich habe früher einmal etwas Ähnliches gebaut, wenn auch nicht ganz dasselbe.
https://web.archive.org/web/20020611095429/http://www.cs.man.ac.uk/~hancockd/CityZen/index.html
20.000 Liniensegmente, 3.350 Orte, Viewer und Quiz eingeschlossen: insgesamt 162 KB.
Danke für das Feedback. Zur Erklärung der Auswahl: Bis vor Kurzem lag der Hauptfokus dieses Projekts nicht auf Länderformen.
Lange Zeit war die Version ohne Grenzen, die im README stand, die einzige Version, und ich dachte nicht, dass es möglich wäre, die ganze Welt hinzuzufügen. Aber es war möglich.
Ich habe eine Nightly-Version veröffentlicht, in der die Fjorde entfernt wurden und dafür an anderer Stelle mehr Details enthalten sind, darunter häufig gewünschte Inseln. Insgesamt ist auch die Auflösung höher.
Der ursprüngliche Grund, es nicht so zu machen, war, dass ältere Smartphones, insbesondere mit Firefox for Android, beim Zeichnen vieler Polygone abstürzen konnten. Seitdem habe ich den Zeichenablauf optimiert, aber Vorsicht ist weiterhin geboten.
[1] https://tinyworldmap.com/beta.html
Ich bin mir nicht sicher, ob die 10.000 bevölkerungsreichsten Städte der beste Filter sind.
Dieser Ansatz bevorzugt Städte in großen Ländern, während in kleinen Ländern die meisten Städte wahrscheinlich herausfallen.
Es sollte einen zusätzlichen Filter geben, der die jeweils größten X Städte pro Land aufnimmt. So würden wohl auch die wichtigsten Städte kleiner Länder erfasst.
Kriterien wie nationale Hauptstadt, regionale Hauptstadt, Weltstadt oder Zentralität innerhalb einer Region könnten die Grundvoraussetzungen sinnvoll ergänzen.
In dieser Diskussion könnten Geografen und Kartografen vermutlich nützlichere Ratschläge geben.
Interessant fand ich, dass man bei der Auswahl der 10.000 größten Siedlungen der Welt bis zu 48.000 Einwohnern hinunterkommt.
Ich bin noch dabei einzuordnen, ob diese Zahl überraschend ist oder nicht.
Selbst wenn man auf 200 erweitert, liegt man immer noch über 100.000. Laut Wikipedia hat Daly City, CA, auf Platz 333 eine Bevölkerung von 100.007: <https://en.wikipedia.org/wiki/List_of_United_States_cities_b...>
Solche Größenverteilungen sind, wie in vielen anderen Skalierungssituationen, in einem Log-Log-Diagramm im Allgemeinen nahezu linear.
In China muss man bis Platz 106 gehen, bevor eine Stadt mit weniger als 1 Mio. Einwohnern auftaucht. In den USA gibt es nur 9 solche Städte.
Bei India habe ich gerade nachgesehen: Es gibt 46 Städte mit mehr als 1 Mio. Einwohnern; Malegaon auf Platz 100 hat 471.000 Einwohner, und Aurangabad auf Platz 300 liegt immer noch über 100.000.
Allerdings ist „Stadt“ eine sehr willkürliche Definition. Einige der größten Städte der Welt würden nach den Maßstäben anderer Länder als Metropolregionen gelten, teils sogar als Bundesstaaten oder Provinzen.
Die flächenmäßig größten Städte haben dagegen sehr wenige Einwohner. Sermersooq in Greenland hat 24.148 Einwohner und eine Fläche von 575.300 km², etwa 144-mal so groß wie Rhode Island; unter den US-Bundesstaaten sind nur Texas und Alaska größer. Alaska ist auch nur etwa 12 % größer.
Stadtgeografie ist ein komplexes Feld, in dem man üblicherweise mehrere Skalen und Definitionen wie Metropolregionen, bebaute Fläche und Bevölkerung gemeinsam vergleicht. So lässt sich die Willkür politischer Grenzen abmildern und die gesamte Bevölkerungs- und Wirtschaftswirkung besser abbilden.
Es ist ziemlich erstaunlich, dass die Dateigröße trotz derart grober Grenzen so niedrig ist.
Die Gesamtdatenmenge scheint deutlich unter dem Punkt zu liegen, an dem Nutzen und Dateigröße gut ausbalanciert wären. Bei doppelter Größe wären die Grenzen zum Beispiel wohl nicht so zackig.
Aus der Beschreibung „enthält alle Daten der vollständigen Version außer Grenzen und Küstenlinien, wodurch die Größe um 200 KB sinkt“ ergibt sich, dass etwa 29 % auf Grenz- und Küstendaten entfallen und 71 % auf Städtenamen und Positionen.
Persönlich glaube ich, dass man viele Städte entfernen könnte. Besonders Städte, die sich gegenseitig überlappen, sieht man ohnehin erst, wenn man so weit hineinzoomt, dass die graue Landmasse und die Stadtnamen sichtbar werden; stattdessen wäre es besser, die Küstenlinien genauer zu machen.
Ich bin auch nicht sicher, wie oft man die Position auf einer allgemeinen Weltkarte wirklich braucht. Wäre nicht zum Beispiel auf der Website eines Points of Interest, den man gerade ansieht, häufiger eine schlanke Karte mit den umliegenden Autobahnen und ÖPNV-Linien nützlich, um dorthin zu gelangen?
Wenn man eine Version erstellt, die die gesamte Erde in Einheiten von einigen km² unterteilt, könnte man wohl schon mit einem Zehntel der Größe ziemlich nützliche Details unterbringen. Eine globale Low-Polygon-Karte der ganzen Erde hat zwar Anwendungsfälle wie das Tracking der Internationalen Raumstation, scheint aber viel seltener gebraucht zu werden.
Auch wenn die Einwohnerzahl unter 40.000 liegt, sollten Hauptstädte unbedingt enthalten sein und in irgendeiner Form mit einem Stern markiert werden.
Wirklich großartig. Es ist beeindruckend, wie schnell das auf dem Smartphone lädt.
Die Idee, Geodaten als Paths zu komprimieren, ist sehr gut.
Wenn man die ODbL-Lizenz vermeiden will, wäre es auch gut, statt OSM Natural-Earth-Daten zu verwenden.
Es wäre wirklich schön, wenn auch ein Tool enthalten wäre, das Geodaten in Paths umwandelt.