9 poin oleh GN⁺ 2024-04-22 | 1 komentar | Bagikan ke WhatsApp
  • tinyworldmap adalah peta dunia untuk aplikasi web yang mengutamakan offline dan bandwidth rendah, dirancang untuk digunakan bersama Leaflet
  • Mendukung seluruh level zoom, dan versi paling lengkap berukuran gzip 450KB; rendering di sisi klien telah diprofilkan dan diuji agar tidak ada jeda yang terasa bahkan di ponsel kelas rendah berusia 10 tahun
  • Peta bawaan menampilkan 10.000 kota dengan populasi terbesar yang ditambahkan ke OpenStreetMap, dan pada saat penulisan mencakup kota besar dan kecil dengan populasi 48.000 orang atau lebih
  • Ada dua cara penggunaan: sebagai basemap yang menggantikan tile OpenStreetMap, atau sebagai peta fallback yang mengganti permintaan tile OSM saat offline dengan tile yang dibuat secara lokal
  • Data peta mengikuti lisensi ODBL seperti OpenStreetMap, dan perlu mencantumkan atribusi OpenStreetMap serta tinyworldmap, misalnya di footer Leaflet

Tujuan dan cakupan tinyworldmap

  • tinyworldmap adalah peta dunia untuk aplikasi web yang mengutamakan offline dan bandwidth rendah
  • Dirancang untuk digunakan bersama Leaflet dan mendukung semua level zoom
  • Versi paling lengkap berukuran gzip 450KB, atau 1,1MB setelah diekstrak
  • Rendering di sisi klien telah diprofilkan dan diuji secara luas pada ponsel kelas rendah berusia 10 tahun, dan tidak ada jeda yang terasa
  • Demo tersedia sebagai Nightly demo, Stable demo, dan v3 announcement

Data peta bawaan

  • Dalam pengaturan bawaan, peta menampilkan 10.000 kota dengan populasi terbesar yang ditambahkan ke OpenStreetMap
  • Pada saat penulisan, cakupan ini mencakup semua kota besar dan kecil dengan populasi 48.000 orang atau lebih

Dua cara penggunaan di Leaflet

  • Digunakan sebagai basemap

    • Untuk menggunakan tinyworldmap sebagai basemap Leaflet, tambahkan skrip distribusi ke tag head
    • Skrip versi stabil adalah https://tinyworldmap.com/dist/v3/tiny-world-all-10000.js, dan mencakup semua data yang diperlukan untuk menampilkan peta
    • Alih-alih layer tile Leaflet, tambahkan L.GridLayer.TinyWorld dalam bentuk berikut
    new L.GridLayer.TinyWorld({maxZoom: 19}).addTo(map)
    
  • Digunakan sebagai peta fallback offline

    • Dalam aplikasi web yang mengutamakan offline, menyimpan peta berbasis gambar untuk semua level zoom tidak memungkinkan karena jumlah tile sangat banyak, dan ukuran totalnya sering kali mencapai satuan terabyte
    • Repositori ini menyediakan service worker untuk kemampuan offline aplikasi web yang menyertakan peta
    • Setelah service worker terpasang, peta fallback akan dimuat terlebih dahulu
    • Halaman yang dikunjungi akan di-cache
    • Basemap dikecualikan dari cache
    • Saat server dapat diakses, data cache tidak digunakan
    • Jika pengguna offline, situs web disajikan dari cache, dan service worker mencegat permintaan ke server tile OSM lalu menggantinya dengan tile alternatif yang dibuat secara lokal oleh tinyworldmap
    • Sebelum mendaftarkan service worker, semua bagian bertanda IMPORTANT di dalam service worker harus diubah
    • Setelah pendaftaran, atribusi pada layer tile Leaflet harus mencakup OpenStreetMap dan tinyworldmap bersama-sama
    • Hitchmap adalah contoh aplikasi produksi yang menggunakan tinyworldmap sebagai fallback
    • Di browser yang mendukung service worker, buka situs web, tunggu sebentar, lalu matikan internet dan muat ulang; aplikasi seharusnya tetap berjalan normal dengan peta fallback
    • Instalasi service worker dapat memakan waktu

Gaya peta dan peta kustom

  • Konstruktor menerima opsi render untuk mengubah tampilan peta
  • Opsi style pada setiap layer diterapkan ke CanvasRenderingContext2D milik Canvas
  • Misalnya, Anda dapat mengubah gaya dengan menetapkan fillStyle pada layer state_borders
let render = {
    state_borders: {
        style: {fillStyle: '#f00'}
    }
}

new L.GridLayer.TinyWorld({maxZoom: 19, render}).addTo(map)
  • Jika organisasi membutuhkan peta kustom berisi peta jalan, peta kota, peta dalam bahasa lain, atau konten khusus dengan data OSM maupun non-OSM, Anda dapat meminta penawaran ke business@tinyworldmap.com

Opsi file peta yang lebih kecil

  • Versi tanpa garis batas

    • tiny-world-cities-10000.js(on) berisi data dari versi lengkap dengan batas negara bagian, batas negara, dan garis pantai dikecualikan
    • Versi ini mengurangi ukuran sebesar 300KB dalam gzip dan 825KB setelah diekstrak
    • Versi tanpa garis batas memiliki keunggulan bahwa semua data yang disertakan bersifat presisi
    • Batas negara pada versi lengkap tidak akurat pada level zoom tinggi, sehingga dapat terlihat janggal saat menumpangkan bentuk yang sesuai dengan batas negara atau garis pantai
    • Dalam kasus seperti itu, versi tanpa garis batas sering kali terlihat lebih baik
  • Versi tanpa label kota

    • Ada dua file tanpa label kota
    • tiny-world-borders.js(on): menghilangkan batas negara bagian
    • tiny-world-nocities.js(on): mempertahankan batas negara bagian
    • Label kota memakan 410KB setelah diekstrak dan 172KB setelah dikompresi
  • Versi dengan jumlah kota lebih sedikit

    • File dengan label kota juga tersedia dalam versi 2.000 dan 4.000 kota
    • Cukup ganti 10000 pada nama file menjadi 2000 atau 4000
    • | Jumlah kota yang disertakan | Batas populasi |
    • | --- | --- |
    • | 10.000 | lebih dari 48.000 orang |
    • | 4.000 | lebih dari 137.000 orang |
    • | 2.000 | lebih dari 287.000 orang |

Lisensi dan atribusi

  • Data tinyworldmap mengikuti lisensi ODBL seperti data OpenStreetMap
  • ODBL mewajibkan atribusi
  • Jika dikonfigurasi sesuai cara yang dijelaskan, footer Leaflet seharusnya menyertakan atribusi OpenStreetMap dan tinyworldmap
  • Jika tidak, Anda harus menambahkan atribusi OpenStreetMap dan tinyworldmap secara terpisah

1 komentar

 
GN⁺ 2024-04-22
Opini Hacker News
  • Saya suka idenya. Ini menyelesaikan masalah ketika Anda memperkecil terlalu jauh lalu harus menunggu server merender tile benua yang baru saja diminta
    Namun, saya kurang paham use case pengguna yang bisa mengetahui posisi relatif West Bloomfield Township dan Waterford Charter Township di pinggiran Detroit, tetapi tidak tahu keduanya berada di negara bagian mana atau bahkan bahwa Great Lakes itu ada
    Akan lebih baik jika memakai jauh lebih banyak data untuk garis pantai, dan jauh lebih sedikit untuk pembagian wilayah metropolitan besar

    • Arahnya bagus, tetapi menurut saya fitur geografis utama seperti 100 pulau terbesar, 50 danau terbesar, dan 200 sungai terbesar wajib disertakan
    • Jalan dan rel kereta juga sama. Kalau ini peta jalan untuk disimpan di mobil, itu perlu, tetapi selain itu hampir tidak ada kebutuhan untuk mengetahui posisi jalan
      Itu menutupi terlalu banyak informasi lain yang mungkin bisa ditampilkan
    • Karena penasaran saya mencoba beberapa tempat; Alexandria di Virginia, AS, berada di sisi sungai yang salah, dan Bahrain terlihat cukup parah
    • Bagian ini sudah diperbaiki di v2
  • Keren, tetapi detail garis pantainya terlalu rendah. Beberapa kota di Inggris tampak mengapung di laut, sementara Greenland dan Kanada Utara justru mengambil semua titik sudut
    Sepertinya tingkat detail berdasarkan proyeksi Mercator sudah dipertimbangkan, tetapi akan lebih baik jika wilayah yang nyaris tidak berpenghuni diberi prioritas lebih rendah

    • Proyek yang bagus. Saat memilih tempat yang akan dimasukkan, jika juga memakai QRank dari Wikidata, pulau-pulau terkenal bisa muncul meski populasinya kecil
      DB SQLite QRank juga pernah muncul di HN dulu
      [1] https://qrank.wmcloud.org/
      [2] https://github.com/hikeratlas/qrank
    • Rasio antara detail kota dan detail garis pantai terasa aneh karena terlalu condong ke kota. Sepertinya lebih banyak memasukkan kota daripada batas negara atau garis pantai yang akurat
      Sebuah provinsi di Netherlands ditampilkan terputus dari daratan utama negara itu dan seperti pulau, padahal sebenarnya tidak. Namun, peta itu tahu lima nama kota di provinsi tersebut, dan beberapa di antaranya hampir saling tumpang tindih
      Sebaliknya, memasukkan Afsluitdijk menurut saya pribadi detail yang tidak perlu, tetapi saya mengerti bahwa membedakan secara programatik tanah mana yang harus digambar dan infrastruktur maritim sederhana itu sulit
      Seharusnya saya membuka tiket di issue tracker, tetapi karena sedang tidak login di ponsel, komentar HN ini yang terbaik untuk saat ini. Jika ada yang merasakan hal serupa, silakan gunakan komentar ini sebagai dasar untuk mengusulkan perbaikan seperti penyesuaian rasio, penambahan jarak minimum antarkota, atau pengecilan ukuran file keseluruhan
    • Karena ini, peta hampir tidak bisa dipakai untuk pulau atau wilayah kepulauan. Philippines memang punya banyak pulau, tetapi ada beberapa pulau yang cukup besar, dan petanya tetap tidak layak pakai
      French Polynesia bahkan tidak ada di peta
    • Saya telah merilis versi nightly yang menghapus fjord dan menambahkan lebih banyak detail di tempat lain. Secara umum resolusinya juga lebih tinggi
      Alasan awal tidak melakukannya begitu adalah karena ponsel lama, terutama Firefox for Android, bisa crash saat menggambar banyak poligon. Setelah itu prosedur menggambarnya sudah dioptimalkan, tetapi tetap perlu hati-hati
      [1] https://tinyworldmap.com/beta.html
    • Penyederhanaannya secara umum ceroboh. Di Caribbean, ada seluruh negara yang hilang
      Ini hal yang seharusnya tertangkap oleh quality control dasar
  • Saya membuat sesuatu yang mirip. Offline-first, sangat kecil, berbasis vektor, dan berfokus pada internasionalisasi
    Tersedia dalam semua bahasa PBB. Namun Spanish terlewat karena saya benar-benar lupa, dan memalukan karena seharusnya bisa dibuat dalam beberapa jam
    Nama negara dan kota memakai nama resmi yang terdaftar di PBB. Jadi nama pendek resmi UK adalah “United Kingdom of Great Britain and Northern Ireland”
    https://map.ache.one/en

    • Lumayan, tetapi bug-nya cukup banyak. “Cape town” ditampilkan di South Sudan, sementara nama negaranya sendiri tidak ada, dan nama Eritrea juga hilang. Blok Somalia terbagi menjadi dua bagian dengan warna berbeda
      Menggambar peta ringan dan menangani internasionalisasi relatif mudah. Karena ada beberapa sumber data publik dan library
      Bagian yang benar-benar sulit murni soal definisi administratif. Jika ada data yang terhubung dengan sebagian besar negara, pasti akan ada bagian yang tidak cocok dengan sumber peta, dan akhirnya Anda harus membuat peta kustom sendiri
      Tidak ada konsensus tentang apa itu “negara”. Western Sahara secara resmi adalah negara, tetapi secara praktis terus diduduki Morocco, sementara Somalia memiliki Somaliland dan Puntland yang secara de facto bergerak seperti negara merdeka, tetapi tidak diakui secara resmi. Greenland, Niue, dan lainnya berada di suatu titik di tengah-tengahnya
    • Saya tidak menemukan penjelasan bagaimana itu dibuat, tetapi petanya indah. Tiny World Maps juga memuat hal terkait, tetapi penjelasan cara pembuatannya juga tidak cukup
      Berdasarkan pengalaman saya melakukannya di tingkat negara, itu adalah proses manual yang memakai hack kotor, dan bagian tersulit adalah menguji apakah semuanya sudah cocok dengan benar. Terutama tingkat generalisasi yang tepat dan seperti apa tampilan yang diharapkan orang dari peta wilayah mereka sendiri
      Saya penasaran apakah Anda melihat upaya untuk meningkatkan peta ini secara besar-besaran sebagai sesuatu yang sepadan
    • Saya tidak tahu apakah tanda bintang berarti kota terbesar atau ibu kota, tetapi jika yang dimaksud adalah yang kedua, Tanzania salah
      Tanda bintangnya ada di Dar Es Salaam, tetapi labelnya Dodoma. Dodoma memang ibu kota sebenarnya, tetapi posisinya lebih ke tengah negara
    • Singkatan “i18n” itu sendiri tidak terlalu terinternasionalisasi
  • Imut. Dulu saya pernah membuat sesuatu yang tidak sepenuhnya sama, tetapi mirip
    https://web.archive.org/web/20020611095429/http://www.cs.man.ac.uk/~hancockd/CityZen/index.html
    20.000 segmen garis, 3.350 tempat, termasuk viewer dan kuis, semuanya total 162KB

  • Terima kasih atas masukannya. Untuk menjelaskan latar belakang pilihannya, sampai baru-baru ini fokus utama proyek ini bukanlah bentuk negara
    Selama lama, versi tanpa perbatasan yang ada di README adalah satu-satunya versi, dan saya tidak mengira menambahkan seluruh dunia itu mungkin. Ternyata bisa
    Saya telah merilis versi nightly yang menghapus fyord, memasukkan pulau-pulau yang banyak diminta, dan menambahkan lebih banyak detail di tempat lain. Secara keseluruhan resolusinya juga lebih tinggi
    Alasan awal tidak melakukannya adalah karena di ponsel lama, terutama Firefox for Android, menggambar banyak poligon bisa menyebabkan crash. Setelah itu prosedur rendering sudah dioptimalkan, tetapi tetap perlu hati-hati
    [1] https://tinyworldmap.com/beta.html

  • Saya tidak yakin apakah 10.000 kota dengan populasi terbesar adalah filter terbaik
    Cara ini akan memprioritaskan kota-kota di negara besar, dan kemungkinan besar sebagian besar kota di negara kecil akan terlewat
    Perlu ada filter tambahan yang memasukkan X kota teratas per negara. Dengan begitu kota-kota utama di negara kecil juga bisa tercakup

    • Ada juga tolok ukur lain untuk menilai pentingnya sebuah kota
      Kriteria seperti ibu kota negara, ibu kota wilayah, kota dunia, dan sentralitas dalam kawasan bisa berguna untuk melengkapi syarat dasar
      Untuk diskusi ini, geografer dan kartografer sepertinya bisa memberi saran yang lebih berguna
  • Menarik bahwa jika memilih 10.000 permukiman terbesar di dunia, batasnya turun sampai populasi 48.000
    Saya masih menilai apakah angka ini mengejutkan atau tidak

    • Saya sudah lama tahu bahwa jika melihat sekitar 100 kota teratas di AS berdasarkan populasi, batasnya kira-kira turun sampai level 200 ribu orang
      Bahkan jika diperluas menjadi 200, masih tetap di atas 100 ribu orang. Menurut Wikipedia, Daly City, CA di peringkat #333 memiliki populasi 100.007: <https://en.wikipedia.org/wiki/List_of_United_States_cities_b...>
      Distribusi skala seperti ini, seperti banyak situasi penskalaan lain, umumnya mendekati linear pada grafik log-log
      Di China, perlu sampai peringkat 106 sebelum muncul kota dengan populasi di bawah 1 juta. Di AS, kota seperti itu hanya ada 9
      Saya baru cek India: ada 46 kota dengan populasi di atas 1 juta; Malegaon di peringkat 100 berpenduduk 471 ribu, dan Aurangabad di peringkat 300 pun masih di atas 100 ribu
      Namun, “kota” adalah definisi yang sangat arbitrer. Sebagian kota terbesar di dunia, menurut standar negara lain, bisa dianggap kawasan metropolitan, bahkan setara negara bagian atau provinsi
      Kota terbesar berdasarkan luas justru berpenduduk sangat sedikit. Sermersooq di Greenland berpenduduk 24.148 orang dan luasnya 575.300 km², sekitar 144 kali Rhode Island; di antara negara bagian AS, hanya Texas dan Alaska yang lebih besar. Alaska pun hanya sekitar 12% lebih besar
      Geografi perkotaan adalah bidang yang kompleks, jadi biasanya berbagai skala dan definisi seperti wilayah statistik metropolitan, luas area terbangun, dan populasi dibandingkan bersama. Dengan begitu, sifat arbitrer batas politik bisa dikurangi dan total populasi serta dampak ekonomi bisa tercermin dengan lebih baik
  • Cukup mengejutkan bahwa ukuran file-nya tetap sebesar ini meski perbatasannya sekasar itu
    Sepertinya ukuran data totalnya jauh di bawah titik keseimbangan antara kegunaan dan ukuran file. Misalnya, meski ukurannya dua kali lipat, perbatasannya tidak akan sebergerigi ini

    • Seluruh file berukuran sekitar 700KB tanpa kompresi gzip
      Dari penjelasan bahwa “semua data versi lengkap selain perbatasan dan garis pantai tersedia, sehingga ukurannya berkurang 200KB”, berarti sekitar 29% adalah data perbatasan/garis pantai dan 71% adalah nama serta lokasi kota
      Secara pribadi, saya rasa banyak kota bisa dihapus. Terutama kota-kota yang saling bertumpuk; kota seperti itu baru terlihat jika diperbesar sampai daratan abu-abu dan nama kotanya tampak, jadi lebih baik kapasitasnya dipakai untuk membuat garis pantai lebih akurat
      Saya juga tidak yakin seberapa sering posisi pada peta dunia umum dibutuhkan. Misalnya di situs web titik minat yang sedang dilihat, bukankah peta berukuran kecil yang memuat jalan tol sekitar dan rute transportasi umum untuk menuju ke sana akan lebih sering dibutuhkan?
      Jika membuat versi yang membagi seluruh Bumi dalam satuan beberapa km², dengan ukuran sepersepuluh pun sepertinya bisa memuat detail yang cukup berguna. Peta low-poly seluruh Bumi memang mungkin berguna untuk hal seperti pelacakan Stasiun Luar Angkasa Internasional, tetapi tampaknya jauh lebih jarang
  • Walaupun populasinya kurang dari 40 ribu, ibu kota harus selalu disertakan, dan harus diberi tanda bintang dengan cara tertentu

  • Benar-benar keren. Mengesankan bahwa ini bisa dimuat secepat itu di ponsel
    Ide mengompresi data spasial menjadi Paths sangat bagus
    Untuk menghindari lisensi ODbL, menggunakan data Natural Earth alih-alih OSM juga akan bagus
    Akan sangat bagus juga jika disertakan alat untuk mengonversi data spasial menjadi Paths