Speicherplatz und Anzahl der Kacheln für die Weltschicht


9

Ich denke darüber nach, die Kachelgenerierung einer Weltschicht für das Webmapping zu testen.

In diesem Zusammenhang möchte ich wissen, wie ich die Anzahl der Kacheln berechnen kann (256 x 256 für Tilecache, wenn ich mich erinnere), die ich für n Ebenen in WGS84-Koordinaten benötige.

Vielleicht verwende ich eine zusammengesetzte Lösung mit vorgenerierten Kacheln und im laufenden Betrieb, aber ich muss am Ende den verfügbaren Speicherplatz kennen, wenn alle Kacheln generiert werden, und die Anzahl der Dateien, die sie darstellen.

Es gibt zwei Ziele: Zeitaufwand und Speicherplatzbedarf.

Alle Informationen sind willkommen

Bearbeiten:

Ich habe dieses Skript gefunden, um die Anzahl der zu generierenden Kacheln in Abhängigkeit von den Zoomstufen und Ihrem Datenumfang zu berechnen. Siehe diese Zusammenfassung https://gist.github.com/1675606


Antworten:



5

Ich habe einen Spickzettel erstellt , in dem die Gesamtzahl der Kacheln für bestimmte Zoomstufen aufgeführt ist.

Es hat zwei Tabellen. Eine zeigt die Anzahl der Zoomstufen, die erforderlich sind, um Dinge in einem bestimmten Maßstab anzuzeigen, beginnend mit einer Kachel, die Personen zeigt.

level 1: 1 # Person
level 2: 5 # Car
level 3: 21 # House building
level 4: 85 # Square
level 5: 341 # Small neighbourhood
level 6: 1,365 # Football stadium
level 7: 5,461 # Small farm
level 8: 21,845 # Central park New York
level 9: 87,381 # Entire airport
level 10: 349,525 # Small city (Copenhagen)
level 11: 1,398,101 # Medium city (Amsterdam)
level 12: 5,592,405 # Large city (London)
level 13: 22,369,621 # Medium Island (Mallorca)
level 14: 89,478,485 # Large Island (Sicily)
level 15: 357,913,941 # Small country (Denmark, Estonia, Taiwan)
level 16: 1,431,655,765 # Medium Country (Korea, Greece)
level 17: 5,726,623,061 # Region (Southern Europe, Arabian Peninsula)
level 18: 22,906,492,245 # Small continent or large country (China)
level 19: 91,625,968,981 # Medium continent (Africa) or huge country (Russia) 
level 20: 366,503,875,925 # Asia
level 21: 1,466,015,503,701 # The World

Die andere zeigt die Anzahl der erforderlichen Zoomstufen, wenn mit einer Weltkarte begonnen wird, und progressive Detailebenen:

level 1: 1 # The World
level 2: 5 # Large contenents
level 3: 21 # Medium continents, huge countries
level 4: 85 # Small continents, large countries
level 5: 341 # Region (Southern Europe, Arabian Peninsula)
level 6: 1,365 # Medium Country (Korea, Greece)
level 7: 5,461 # Small country (Denmark, Estonia, Taiwan)
level 8: 21,845 # Large Island (Sicily)
level 9: 87,381 # Medium Island (Mallorca)
level 10: 349,525 # Large city (London)
level 11: 1,398,101 # Medium city (Amsterdam)
level 12: 5,592,405 # Small city (Copenhagen)
level 13: 22,369,621 # Entire airport
level 14: 89,478,485 # Central park New York
level 15: 357,913,941 # Small farm
level 16: 1,431,655,765 # Football stadium
level 17: 5,726,623,061 # Small neighbourhood
level 18: 22,906,492,245 # Square
level 19: 91,625,968,981 # House building 
level 20: 366,503,875,925 # Car
level 21: 1,466,015,503,701 # Person

1

Dies ist eine sehr alte Frage, aber es gibt (mindestens) zwei wichtige Vorbehalte, abhängig von der jeweiligen Aufgabe.

  1. Die Aufgabe kann dazu führen, dass eine (sehr) große Anzahl leerer Kacheln ohne spezifische Verwaltung des Kachelerstellungsprozesses gerendert wird.
  2. Die Größe einer Kachelpyramide auf der Festplatte kann aufgrund der minimalen Clustergröße von 4 KB (auch als Blockgröße bezeichnet) auf den meisten Speichern viel (mehr als 100%) größer sein als erwartet.

(2) ist so ziemlich bereits erklärt, aber als Beispiel habe ich eine Kachelpyramide, bei der die Gesamtdateigröße 168 MB beträgt, die Größe auf der Festplatte jedoch über 600 MB. Es macht es viel wichtiger, (1) richtig zu machen.

Zu (1): Überlegen Sie, ob Ihr 'World File'-Job nur Ländergrenzen umfasst.

Jede Kachel, die keine Grenze darstellt, kann mit einer von zwei "Alt" -Kacheln bedient werden - einer "See" -Kachel (blau) für Orte außerhalb eines Landes oder einer "Block" -Kachel (Füllkachel) für Kacheln, die sich vollständig innerhalb eines Landes befinden nationale Grenze. Es müssen nur Kacheln gerendert werden, die ein Rahmensegment enthalten. Der Rest kann standardmäßig entfernt werden.

Warum ist das? Weil alle Blockkacheln eines bestimmten Typs (Typ in (Meer, Land) oder Typ in (Meer, Land a, Land b usw.)) identisch sind.

Die Blockkachel kann eine Farbe für jedes Land oder eine Farbe für die ganze Welt oder eine leere Kachel sein (wenn Sie die Umrisse des Landes auf einem Hintergrund überlagern).

' Block' -Kacheln müssen nur einmal gerendert werden (z. B. 1 256x256-Kachel, die vollständig mit der gewünschten Farbe gefüllt ist).

Wenn die Kacheln erstellt werden, können Sie testen

(a) wenn sein "Elternteil" - die Kachel mit einer Zoomstufe weniger - vorhanden ist; und

(b) wenn es sich um eine Blockkachel handelt (dh sie ist vollständig mit einer Farbe gefüllt).

In Fall (a) muss die Kachel nicht gerendert werden; Wenn das übergeordnete Element nicht vorhanden ist, lag es daran, dass das übergeordnete Element vollständig eine Blockkachel war und gelöscht wurde.

In Fall (b) (wo das übergeordnete Element vorhanden ist, sodass die Kachel getestet werden muss) kann es, wenn es sich um eine Blockkachel handelt, sicher aus der Kachelpyramide gelöscht werden. (Der Test für die Blockkacheln basiert einfach auf der Dateigröße. Eine 256x256-Kachel, die vollständig aus einer Farbe besteht, hat eine sehr genaue Größe, und die Wahrscheinlichkeit, dass eine Kachel mit dem richtigen Inhalt dieselbe Größe hat, ist Null.)

Das Löschen dieser Kacheln während des Erstellungsprozesses verlängert die Kachel-Rendering-Schleife nur minimal, spart jedoch viel Speicherplatz. Die Alternative besteht darin, alles zu rendern und dann rekursiv in der Pyramide nach Blockkacheln zu suchen und diese zu löschen. Dies dauert länger.

Sobald die Pyramide erstellt ist, kann die Kachelaufrufprozedur standardmäßig die Blockkachel verwenden, wenn nach Kacheln / z / x / y gesucht wird und eine 404 erhalten wird.

Um zu sehen, warum dies der Fall ist, sollten Sie einen 256x256-Zoom = 1 rendern, bei dem der obere Quadrant vollständig leer ist. Sie wissen mit Sicherheit, dass die 4 Kacheln bei Zoom = 2, die denselben Bereich abdecken, ebenfalls leer sind. Ebenso sind die 16 Kacheln bei Zoom = 3 und so weiter.

Während des Kachelvorgangs, bei dem die Kachel eine Blockfarbe hat (oder leer ist), können alle Zeiten mit höheren Zoomstufen ignoriert werden.

Dies spart viel Speicherplatz und viel Zeit beim Kacheln.

Eine Einschränkung dieser Einschränkungen: Bei einem komplexeren Kachelauftrag werden verschiedene Ebenen mit unterschiedlichen Zoomstufen aktiviert. In diesem Fall muss sorgfältig darauf geachtet werden, dass der übergeordnete Test nicht durchgeführt wird, wenn in der Zoomstufe eine neue Ebene im Render-Set enthalten ist.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.