Disk alanı ve dünya katmanı için karo sayısı


9

Web eşleme için bir dünya katmanının fayans üretimini test etmeyi düşünüyorum.

Bu bağlamda, fayans sayısını (hatırlıyorsam tilecache için 256x256) nasıl hesaplayabileceğimi bilmek istiyorum. WGS84 koordinatlarında n seviyeye ihtiyacım olacak.

Belki de önceden oluşturulmuş fayans ve sinek üretimi ile kompozit bir çözüm kullanacağım ama sonunda her bir karo üretilirse mevcut disk alanını ve temsil edecek dosya sayısını bilmek zorundayım.

İki hedef vardır, gereken süre ve disk alanı gerekir.

Herhangi bir bilgi bekliyoruz

Düzenle:

Bu komut dosyasını yakınlaştırma düzeylerine ve veri boyutunuza bağlı olarak oluşturulacak karo sayısını hesaplamak için buldum. Bu özete bakın https://gist.github.com/1675606


Yanıtlar:



5

Verilen zum seviyeleri için toplam karo sayısını listeleyen bir hile sayfası yaptım .

İki tablo var. Biri, insanları gösteren bir döşemeden başlayarak, belirli bir ölçekte şeyleri göstermek için gereken yakınlaştırma düzeylerinin sayısını gösterir.

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

Diğeri ise bir dünya haritasıyla başlarsanız gereken yakınlaştırma seviyesi sayısını ve aşamalı ayrıntı düzeylerini gösterir:

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

Bu çok eski bir soru, ancak eldeki göreve bağlı olarak (en azından) iki önemli uyarı var.

  1. Görev, döşeme oluşturma işleminin özel yönetimi olmadan (çok) çok sayıda boş döşemenin oluşturulmasına neden olabilir.
  2. Bir karo piramidinin diskindeki boyut, çoğu depolama birimindeki 4KB minimum küme boyutu (diğer adıyla blok boyutu) nedeniyle, bileşen dosya boyutlarının toplamından beklenenden çok (% 100'den fazla) daha büyük olabilir.

(2) zaten daha önce açıklanmıştır, ancak örnek olarak toplam dosya boyutunun 168 MB olduğu bir kiremit piramidim var, ancak diskteki boyutu 600MB'ın üzerinde. (1) 'i doğru yapmayı çok daha önemli hale getirir.

(1) ile ilgili olarak: 'dünya dosyası' işinizin yalnızca ülke sınırları içerip içermediğini düşünün.

Sınır olmayan herhangi bir kiremit, iki 'alt' döşemeden biriyle - bir ülke içinde olmayan herhangi bir yer için bir 'deniz' döşemesi (mavi) veya tamamen bir ulusal sınır. Yalnızca bir kenarlık segmenti içeren karoların oluşturulması gerekir - geri kalanı 'varsayılan' olabilir.

Bu neden? Çünkü belirli bir türdeki (deniz, kara) veya tür (deniz, ülke a, ülke b, vb.) Tüm blok döşemeleri aynı olacaktır.

'Blok' kutucuğu her ülke için bir renk veya tüm dünya için bir renk veya boş bir kutucuk olabilir (eğer ülke ana hatlarını bir arka plan üzerine bindiriyorsanız).

'Blok' döşemelerin yalnızca bir kez oluşturulması gerekir (örneğin, tamamen istenen renkle doldurulmuş 1 256x256 döşeme).

Kutucuklar oluşturulurken test edebilirsiniz

(a) 'üst öğesi' - daha az bir yakınlaştırma düzeyindeki karo - varsa; ve

(b) eğer bir 'blok' kutucuksa (yani, tamamen bir renkle doldurulmuşsa).

(A) döşemenin işlenmesi gerekmez; üst öğe yoksa, üst öğe tamamen bir blok döşemeden oluşmuş ve silinmiş olmasıdır.

(B) durumunda (ebeveynin bulunduğu yerde, karonun test edilmesi gerekir), bir blok karo ise, karo piramidinden güvenli bir şekilde silinebilir. (Blok kiremit testi basitçe dosya boyutuna dayanır. Tamamen bir renkten 256x256 kiremit çok hassas bir boyuttur ve 'uygun içerik' döşemesinin aynı boyutta olma olasılığı sıfırdır).

Oluşturma işlemi sırasında bu döşemeleri silmek, döşeme oluşturma döngüsüne minimum süre katar, ancak büyük miktarda disk alanı kazandırır. Alternatif, her şeyi işlemek ve daha sonra piramitleri blok karolar için tekrar tekrar aramak ve silmek: bu daha uzun sürer.

Piramit oluşturulduktan sonra, fayans çağrısı prosedürü, fayans / z / x / y aramaya giderse ve 404 alırsa, varsayılan olarak 'blok' döşemesine ayarlanabilir.

Bunun neden böyle olduğunu görmek için, en üst çeyreğin tamamen boş olduğu bir 256x256 zoom = 1 oluşturmayı düşünün. Aynı alanı kapsayan zoom = 2'deki 4 döşemenin de boş olacağını kesin olarak biliyorsunuz. Benzer şekilde, zoom = 3'teki 16 karo vb.

Böylece, döşemenin bir blok rengi olduğu (veya boş olduğu) döşeme işlemi sırasında herhangi bir zamanda, daha yüksek yakınlaştırma düzeylerindeki her zaman göz ardı edilebilir.

Bu, döşeme işleminde büyük miktarda depolama ve zamandan tasarruf sağlar.

Bu uyarılara bir uyarı: daha karmaşık bir döşeme işi, farklı zum seviyelerinde farklı katmanları açacaktır. Bu durumda, yakınlaştırma düzeyi, oluşturma kümesine yeni bir katmanın eklendiği yerdeyken 'üst öğe' testinin yapılmamasına dikkat edilmelidir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.