Ruang disk dan jumlah ubin untuk lapisan dunia


9

Saya sedang berpikir tentang pengujian ubin generasi dari lapisan dunia untuk pemetaan web.

Dalam konteks ini, saya ingin tahu bagaimana saya bisa menghitung jumlah ubin (256x256 untuk tilecache jika saya ingat) saya akan membutuhkan n level dalam koordinat WGS84.

Mungkin saya akan menggunakan solusi komposit dengan ubin pregenerated dan pada generasi fly tetapi saya harus tahu pada akhirnya ruang disk yang tersedia jika setiap ubin dihasilkan dan jumlah file yang akan diwakilinya.

Ada dua tujuan, waktu yang dibutuhkan dan ruang disk yang dibutuhkan.

Setiap informasi dipersilakan

Edit:

Saya menemukan skrip ini untuk menghitung jumlah petak yang dihasilkan tergantung pada tingkat zoom dan tingkat data Anda. Lihat inti ini https://gist.github.com/1675606


Jawaban:



5

Saya membuat lembar contekan yang mencantumkan jumlah total ubin untuk tingkat zoom yang diberikan.

Ini memiliki dua tabel. Satu menunjukkan jumlah tingkat zoom yang diperlukan untuk menunjukkan hal-hal pada skala tertentu, mulai dari ubin yang menunjukkan orang.

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

Yang lain menunjukkan jumlah level zoom yang diperlukan jika memulai dengan peta dunia, dan level detail progresif:

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

Ini adalah pertanyaan yang sangat lama, tetapi ada (setidaknya) dua peringatan penting, tergantung pada tugas yang dihadapi.

  1. Tugas ini dapat menghasilkan rendering ubin kosong (sangat) besar tanpa pengelolaan khusus proses pembuatan ubin.
  2. Ukuran pada disk piramida ubin mungkin jauh (lebih dari 100%) lebih besar dari yang diharapkan dari jumlah ukuran file komponennya, karena ukuran cluster minimum 4KB (alias ukuran blok) pada sebagian besar penyimpanan.

(2) sudah cukup banyak dijelaskan, tetapi sebagai contoh saya memiliki ubin piramida di mana ukuran file totalnya 168MB, tetapi ukurannya pada disk lebih dari 600MB. Itu membuatnya jauh lebih penting untuk mendapatkan (1) yang benar.

As (1): pertimbangkan apakah pekerjaan 'file dunia' Anda hanya melibatkan batas negara.

Setiap ubin yang bukan batas dapat disajikan dengan salah satu dari dua ubin 'alt' - ubin 'laut' (biru) untuk di mana saja tidak di dalam suatu negara, atau ubin 'blok' (isi) untuk ubin yang seluruhnya dalam perbatasan nasional. Hanya ubin yang menyertakan segmen perbatasan yang harus dirender - sisanya dapat 'default'.

Kenapa ini? Karena semua ubin blok dari jenis tertentu (ketik (laut, darat), atau ketik (laut, negara a, negara b, dll)) akan identik.

Ubin 'blok' bisa menjadi satu warna untuk setiap negara, atau satu warna untuk seluruh dunia, atau ubin kosong (jika Anda overlay garis negara pada latar belakang).

Ubin 'Blok' hanya perlu dirender satu kali (mis. 1 256x256 ubin, seluruhnya diisi dengan warna yang diinginkan).

Saat ubin dibuat, Anda dapat menguji

(a) jika 'induknya' - ubin pada satu tingkat zoom kurang - ada; dan

(B) jika itu adalah ubin 'blok' (yaitu, itu sepenuhnya diisi dengan satu warna).

Dalam hal (a) ubin tidak perlu dirender; jika induk tidak ada, itu karena induk sepenuhnya ubin petak dan telah dihapus.

Dalam kasus (b) (di mana induk ada sehingga ubin perlu diuji), jika itu adalah ubin blok maka dapat dengan aman dihapus dari piramida ubin. (Tes untuk blok-ubin-ness hanya didasarkan pada ukuran file. Ubin 256x256 seluruhnya dari satu warna adalah ukuran yang sangat tepat, dan probabilitas bahwa ubin 'konten yang tepat' adalah ukuran yang sama adalah nol).

Menghapus ubin ini selama proses pembuatan menambahkan waktu minimal ke loop rendering ubin, tetapi menghemat banyak ruang disk. Alternatifnya adalah membuat semuanya dan kemudian secara rekursif mencari piramida untuk ubin petak dan menghapusnya: ini membutuhkan waktu lebih lama.

Setelah piramida dibangun, prosedur panggilan ubin dapat default ke ubin 'blok' jika pergi mencari ubin / z / x / y dan mendapat 404.

Untuk melihat mengapa hal ini terjadi, pertimbangkan rendering 256x256 zoom = 1 di mana kuadran atas sepenuhnya kosong. Anda tahu dengan pasti bahwa 4 ubin pada zoom = 2 yang menutupi area yang sama juga akan kosong. Demikian juga, 16 ubin di zoom = 3 dan seterusnya.

Jadi, setiap saat selama proses ubin di mana ubin adalah warna blok (atau kosong), setiap saat pada tingkat zoom yang lebih tinggi dapat diabaikan.

Ini menghemat sejumlah besar penyimpanan, dan banyak waktu dalam proses pemasangan ubin.

Peringatan untuk peringatan ini: pekerjaan ubin yang lebih kompleks akan beralih pada lapisan yang berbeda pada tingkat zoom yang berbeda. Jika demikian halnya, harus sangat hati-hati untuk memastikan bahwa tes 'induk' tidak dilakukan ketika tingkat zoom adalah di mana lapisan baru dimasukkan dalam set render.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.