9 poin oleh GN⁺ 2026-01-19 | 3 komentar | Bagikan ke WhatsApp
  • Alat open-source berbasis Python untuk membuat peta kota di seluruh dunia menjadi poster seni minimalis
  • Memanfaatkan data OpenStreetMap (OSMnx) untuk memvisualisasikan elemen geografis seperti jalan, jalur air, dan taman, lalu merendernya dengan matplotlib
  • Menyediakan 17 gaya tema (misalnya neon_cyberpunk, blueprint, japanese_ink) dan memungkinkan penambahan tema kustom melalui file JSON
  • Dari command line, pengguna dapat menentukan nama kota, nama negara, radius, dan tema untuk secara otomatis membuat dan menyimpan poster
  • Alat yang memungkinkan developer dan desainer menjelajahi struktur kota secara artistik melalui gabungan desain dan visualisasi data

Gambaran proyek

  • MapToPoster adalah skrip Python yang membuat poster desain minimalis berdasarkan peta kota yang ditentukan pengguna
    • Poster yang dihasilkan otomatis disimpan ke direktori posters/
    • Dirilis dengan lisensi MIT sehingga bebas dimodifikasi dan didistribusikan
  • Repositori ini memiliki sekitar 2.7k Star dan 164 Fork

Fitur utama

  • Membuat poster melalui antarmuka command line (CLI) dengan memasukkan nama kota (--city), nama negara (--country), tema (--theme), dan jarak (--distance)
  • Opsi --list-themes memungkinkan pengguna melihat daftar semua tema yang tersedia
  • Nilai jarak (distance) dapat disesuaikan untuk skala kota yang berbeda
    • 4,000–6,000m: kota kecil
    • 8,000–12,000m: kota menengah
    • 15,000–20,000m: kota besar

Konfigurasi tema

  • Direktori themes/ berisi 17 file JSON tema
    • Contoh: noir, blueprint, neon_cyberpunk, warm_beige, forest, terracotta dan lainnya
  • Setiap tema mendefinisikan properti warna seperti warna latar belakang, warna jalan, perairan, dan taman
  • Pengguna dapat menambahkan tema baru sendiri dalam format JSON
    • Contoh: "bg": "#FFFFFF", "road_primary": "#1A1A1A" dan lainnya

Contoh penggunaan

  • Poster dapat dibuat dengan berbagai kombinasi kota dan tema
    • python create_map_poster.py -c "Tokyo" -C "Japan" -t japanese_ink -d 15000
    • python create_map_poster.py -c "Barcelona" -C "Spain" -t warm_beige -d 8000
    • python create_map_poster.py -c "Dubai" -C "UAE" -t midnight_blue -d 15000
  • Contoh poster mencakup kota seperti San Francisco, Venice, Marrakech, dan Singapore

Struktur internal dan arsitektur

  • Komponen utamanya mencakup CLI Parser, Geocoding (Nominatim), Data Fetching (OSMnx), dan Rendering (matplotlib)
  • Urutan rendering (z-order) adalah latar belakang → perairan → taman → jalan → gradasi → teks
  • Fungsi utama
    • get_coordinates(): mencari latitude dan longitude berdasarkan nama kota
    • create_poster(): pipeline rendering keseluruhan
    • get_edge_colors_by_type(): menentukan warna berdasarkan tipe jalan
    • get_edge_widths_by_type(): mengatur ketebalan berdasarkan tingkat kepentingan jalan
    • load_theme(): memuat tema JSON

Ekstensi dan kustomisasi

  • Untuk menambahkan layer peta baru (misalnya rel kereta), data OSMnx dapat dimuat dan dirender di dalam create_poster()
  • Jika menambahkan properti tema baru, definisinya harus ditambahkan baik di JSON maupun di kode (load_theme())
  • Aturan penempatan teks
    • Nama kota: y=0.14
    • Nama negara: y=0.10
    • Koordinat: y=0.07
    • Keterangan sumber: y=0.02

Tips optimasi performa

  • Jika nilai dist melebihi 20km, kecepatan unduh menurun dan penggunaan memori meningkat
  • Caching koordinat membantu menghindari batas permintaan Nominatim
  • Pengaturan network_type='drive' dapat meningkatkan kecepatan rendering
  • Untuk preview cepat, dpi dapat diturunkan menjadi 150

Tech stack dan lisensi

  • Ditulis 100% dengan Python
  • Library utama: OSMnx, matplotlib, argparse
  • Didistribusikan dengan MIT License, memungkinkan penggunaan komersial dan modifikasi

Ringkasan

  • MapToPoster adalah alat seni peta kota berbasis kode yang menggabungkan visualisasi data dan desain dalam sebuah proyek open-source
  • Alat yang berguna bagi developer, desainer, dan praktisi visualisasi data untuk menjelajahi struktur kota dalam bentuk artistik

3 komentar

 
xguru 2026-01-20

Saya sempat membuat versi area Seoul/Busan, dan hasilnya cukup bagus jadi saya lampirkan di akun Twitter GeekNews.
Seoul: https://x.com/GeekNewsHada/status/2013410000031395905
Busan: https://x.com/GeekNewsHada/status/2013412083749265695

 
kunggom 2026-01-20

City Roads yang disebut dalam opini di pihak Hacker News juga pernah diposting di sini sebelumnya.

 
GN⁺ 2026-01-19
Komentar Hacker News
  • Ada proyek terkait yang sudah saya pakai beberapa kali
    yaitu city-roads (GitHub), yang mendukung output SVG dan bisa langsung dicoba secara online
    Pembuatnya, Anvaka, juga membuat banyak proyek visualisasi data keren lainnya
  • Ini proyek yang sangat keren
    Hanya saja, menyesuaikan parameter jalan agak sedikit rumit
    Ide perbaikannya antara lain menerima input koordinat alih-alih nama kota agar bisa dipusatkan pada titik tertentu, lalu fitur untuk menghasilkan beberapa gaya sekaligus supaya bisa dipilih secara visual
    Bagaimanapun juga, ini pekerjaan yang luar biasa
  • Gambar San Francisco terlihat keren, tetapi pada beberapa sampel tampaknya ada masalah dengan metode proyeksi
    Kelihatannya seperti proyeksi bola global, bukan UTM, jadi kurang cocok untuk rendering area lokal
    Agak mencurigakan karena tidak ada penyebutan projection di README
    • Ini adalah proyek seni untuk membuat poster yang menarik dan artistik, jadi metode proyeksi tidak terlalu penting
      Karena ini juga open source, akan bagus kalau pengalaman membuat peta itu dipakai untuk mengusulkan perbaikan lewat pull request
    • Ada efek vignette pada gambar akhir, jadi sudut-sudutnya terasa memudar secara alami
      Sepertinya mereka mengambil tile OSM lalu melakukan pascapemrosesan gambar
      Hasilnya cukup keren
  • Saya sempat melihat kodenya, dan berkat matplotlib sepertinya output SVG bisa dilakukan hanya dengan sedikit perubahan
    Saya penasaran apakah ada alasan khusus kenapa PNG dijadikan default
    • Poin yang bagus. Itu bisa diselesaikan dengan plt.savefig(output_file, format='svg', facecolor=THEME['bg'])
      Saya berencana menambahkan parameter --format untuk menerapkannya
    • Saat mencoba mengekspor kota besar ke PDF/SVG, prosesnya sangat lambat
      Bahkan untuk satu kota berpenduduk 500 ribu saja butuh waktu sangat lama
  • Saya penasaran cara terbaik untuk benar-benar mencetak gambar seperti ini menjadi poster
    • El-co Color di New Jersey mencetak poster 20x30 inci dengan harga murah
      El-co Color Poster Special
    • Dulu juga ada layanan yang membuat peta seperti ini menjadi peta timbul hasil cetak 3D lalu memasangnya dalam bingkai
    • Saya memakai Vistaprint. Saya memang belum banyak membandingkan, tapi harganya dan kualitasnya oke
    • Kalau ingin coba sendiri, Rasterbator.net bisa dipakai untuk membuat poster DIY dari beberapa lembar yang disambung
      Hanya saja cukup merepotkan
    • Di AS, kualitas cetak Staples cukup bagus
  • Repositori ini benar-benar luar biasa
    README-nya layak dijadikan contoh praktik terbaik OSS, dan hasilnya sangat indah sampai mengejutkan
  • prettymapp juga layak dilihat
  • Saya penasaran apa yang terjadi kalau ada beberapa kota dengan nama yang sama
    Misalnya Salem (OR/MA), Portland (OR/ME), Springfield (IL/MO), atau Dallas (TX/GA)
    • Kalau hanya memasukkan "Salem", sistem akan memilih kota secara acak
      Kalau memasukkan "Salem, Oregon" atau "Salem, MA", Anda bisa mendapatkan hasil yang diinginkan, dan teks yang dimasukkan akan dipakai sebagai caption
    • Di AS juga banyak kota yang dinamai dari kota-kota dunia seperti Paris, London, dan Athens
    • Itu belum terpikirkan oleh saya. Sepertinya perlu ditambahkan fitur input hingga negara
  • Saya penasaran apakah proyek ini memakai pendekatan berbasis graf, atau cuma generasi gambar biasa
    Saya pernah melihat hasil serupa di Picxstudio, yang merupakan platform generasi gambar AI
  • Saya pernah ingin membuat peta jalan Sydney menjadi puzzle jigsaw supaya sambil bermain bisa mempelajari struktur jalannya
    Dengan begitu, mungkin saya bisa lebih tidak bergantung pada aplikasi navigasi dan jadi pengemudi gaya lama lagi
    • Ada alasan kenapa Where 2 di Sydney berkembang menjadi Google Maps
      Jalan satu arah terlalu banyak, dan struktur pelabuhan serta terowongannya rumit, jadi memahami jalan-jalan Sydney adalah tugas seumur hidup