Bagaimana Cara Mengoptimalkan Pembuatan Tile Openstreetmap?

8

Saat ini saya mencoba membuat Air (3.198.333 catatan) dan batas dunia terperinci (diolah_p) untuk dunia. Saya berhasil merender kedua lapisan, tetapi saya tidak puas dengan kinerja.

Setup saya saat ini adalah sebagai berikut:

  • Contoh Amazon EC2 (m2.2xlarge)
  • 34.2 GB memori
  • 13 Unit Komputasi EC2 (masing-masing 4 inti virtual dengan Unit Komputasi 3,25 EC2)
  • 850 GB penyimpanan instan
  • Platform 64-bit
  • Kinerja I / O: Tinggi
  • Mapnik, 4 utas
  • Pengaturan postgresql berdasarkan pada tolok ukur ini
  • Indeks GiST berlaku untuk semua lapisan saya

Beberapa Ide saya untuk Meningkatkan Kinerja :

  • Menyederhanakan fitur saya
  • Jangan render ubin air - saat memuat dengan pembuka dapat mengatur kegagalan memuat ke warna biru
  • Pisahkan fitur air dunia menjadi berbagai bagian dan secara eksplisit memberi tahu mapnik tentang batasannya. Misalnya, jika saya memisahkan fitur air dari Amerika Utara, ketika Mapnik membuat ubin untuk Australia, ia seharusnya tidak meminta Amerika Utara untuk melihat apakah ada fitur-fiturnya di dalam ubin.
  • Gagasan kedua saya sedikit lebih gila. Karena Mapnik melakukan kueri spasial untuk setiap ubin untuk menemukan fitur untuk diproses, saya dapat melakukan kueri ini sebelumnya untuk semua lapisan saya. Saya akan berasumsi bahwa ini akan menghemat daya pemrosesan.

Pertanyaan Saya: Apa lagi yang bisa saya lakukan untuk mengoptimalkan rendering ubin?

RK
sumber
Pernahkah Anda melihat "Optimalkan Rendering dengan PostGIS" github.com/mapnik/mapnik/wiki/OptimizeRenderingWithPostGIS untuk beberapa kiat?
Mapperz
Hai Mapperz. Ya, saya memastikan untuk hanya memuat fitur air ke basis data saya. Jadi, semua poligon & saluran saya sudah disaring dan merupakan fitur air. Saya juga menyedot database saya dan menerapkan indeks yang disarankan.
Hai, saya belum pernah menggunakan Mapnik sebelumnya, tetapi jika dimungkinkan untuk men-cache ubin di beberapa level zoom atau untuk area tertentu itu akan meningkatkan kinerja.
dango

Jawaban: