월드 레이어의 디스크 공간과 타일 수


9

웹 매핑을 위해 월드 레이어의 타일 생성 테스트를 생각하고 있습니다.

이 맥락에서 타일 수를 계산하는 방법 (기억하는 경우 tilecache의 경우 256x256)을 계산하는 방법을 알고 싶습니다 .WGS84 좌표의 n 레벨이 필요합니다.

어쩌면 나는 사전 생성 된 타일과 즉석 생성 기능이있는 복합 솔루션을 사용할 것입니다. 그러나 모든 타일이 생성되고 그 파일이 나타내는 파일의 수는 사용 가능한 디스크 공간의 끝을 알아야합니다.

소요 시간과 필요한 디스크 공간이라는 두 가지 목표가 있습니다.

모든 정보는 환영합니다

편집하다:

확대 / 축소 수준 및 데이터 범위에 따라 생성 할 타일 수를 계산하는이 스크립트를 찾았습니다. 이 요점을 참조하십시오 https://gist.github.com/1675606


답변:



5

주어진 확대 / 축소 수준에 대한 총 타일 수를 나열 하는 치트 시트 를 만들었습니다 .

두 개의 테이블이 있습니다. 하나는 사람들을 보여주는 타일에서 시작하여 특정 규모로 물건을 표시하는 데 필요한 확대 / 축소 수준의 수를 보여줍니다.

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

다른 하나는 세계지도로 시작할 때 필요한 확대 / 축소 수준 수와 점진적 세부 수준을 보여줍니다.

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

이것은 매우 오래된 질문이지만, 당면한 과제에 따라 두 가지 중요한 경고가 있습니다.

  1. 이 작업으로 인해 타일 생성 프로세스를 구체적으로 관리하지 않고도 (매우) 많은 수의 빈 타일을 렌더링 할 수 있습니다.
  2. 타일 ​​피라미드의 디스크 크기는 대부분의 스토리지에서 4KB 최소 클러스터 크기 (일명 블록 크기)로 인해 구성 요소 파일 크기의 합에서 예상보다 훨씬 (100 % 이상) 클 수 있습니다 .

(2)는 이미 거의 설명되었지만, 예를 들어 총 파일 크기는 168MB이지만 디스크의 크기는 600MB를 초과하는 타일 피라미드가 있습니다. (1) 권리를 얻는 것이 훨씬 더 중요합니다.

(1)과 관련하여 : '세계 파일'작업에 국가 경계 만 포함되는지 고려하십시오.

경계가 아닌 타일은 두 가지 'alt'타일 중 하나-국가 내부가 아닌 곳의 경우 '바다'타일 (파란색) 또는 완전히 국경. 테두리 세그먼트가 포함 된 타일 만 렌더링하면됩니다. 나머지는 '기본 설정'으로 지정할 수 있습니다.

왜 이런거야? 특정 유형 ((sea, land)의 유형 또는 (sea, country a, 국가 b 등의 유형)의 모든 블록 타일은 동일하므로

'블록'타일은 각 국가마다 하나의 색상이거나 전 세계에 대해 하나의 색상이거나 빈 타일 (국가 윤곽선을 배경에 오버레이하는 경우) 일 수 있습니다.

'블록'타일은 한 번만 렌더링 하면됩니다 (예 : 1256x256 타일, 원하는 색상으로 완전히 채워짐).

타일을 만들 때 테스트 할 수 있습니다

(a) '부모'-하나 더 적은 줌 레벨의 타일-이 존재하는 경우 과

(b) 그것이 '블록'타일 인 경우 (즉, 완전히 하나의 색상으로 채워짐)

(a)의 경우 타일을 렌더링 할 필요가 없다. 부모가 존재하지 않는 경우 부모가 완전히 블록 타일이고 삭제 되었기 때문입니다.

(b)의 경우 (부모가 존재하므로 타일을 테스트해야 함), 블록 타일 인 경우 타일 피라미드에서 안전하게 삭제할 수 있습니다. (블록-타일 성 테스트는 단순히 파일 크기를 기준으로합니다. 한 가지 색상으로 된 256x256 타일은 매우 정확한 크기이며 '적절한 콘텐츠'타일이 같은 크기 일 가능성은 0입니다.)

작성 과정에서 이러한 타일을 삭제하면 타일 렌더링 루프에 최소한의 시간이 추가되지만 디스크 공간은 많이 절약됩니다. 대안은 모든 것을 렌더링 한 다음 피라미드를 재귀 적으로 검색하여 블록 타일을 찾아 삭제하는 것입니다. 시간이 오래 걸립니다.

피라미드가 만들어지면 tile / z / x / y를 찾고 404를 얻으면 타일 호출 프로시 저는 'block'타일로 기본 설정 될 수 있습니다.

왜 그런지 알아 보려면 상단 사분면이 완전히 비어있는 256x256 zoom = 1 렌더링을 고려하십시오. 같은 영역을 커버하는 zoom = 2의 4 개의 타일도 비어있을 것입니다. 마찬가지로, 줌 = 3 등의 16 개 타일.

따라서 타일이 블록 색상이거나 비어있는 타일링 프로세스 중 언제든지 높은 수준의 확대 / 축소에서 모든 시간을 무시할 수 있습니다.

이는 타일링 프로세스에서 방대한 양의 스토리지와 많은 시간을 절약합니다.

이러한주의 사항에 대한 경고 :보다 복잡한 타일링 작업은 다른 줌 레벨에서 다른 레이어를 전환합니다. 이 경우 줌 레벨이 새 레이어가 렌더 세트에 포함 된 레벨 일 때 '부모'테스트가 수행되지 않도록 각별히주의해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.