9 puan yazan GN⁺ 2026-01-19 | 3 yorum | WhatsApp'ta paylaş
  • Dünya genelindeki şehir haritalarını minimalist sanat posterleri olarak üretebilen, Python tabanlı açık kaynaklı bir araç
  • OpenStreetMap(OSMnx) verilerini kullanarak yollar, su yolları, parklar gibi coğrafi öğeleri görselleştirir ve matplotlib ile render eder
  • 17 farklı tema stili (ör. neon_cyberpunk, blueprint, japanese_ink vb.) sunar; JSON dosyalarıyla özel tema eklemek mümkündür
  • Komut satırından şehir adı, ülke adı, yarıçap ve tema belirtilerek otomatik poster oluşturma ve kaydetme yapılabilir
  • Tasarım ile veri görselleştirmenin birleşimi sayesinde geliştiricilerin ve tasarımcıların şehir yapısını sanatsal biçimde keşfetmesini sağlayan bir araç

Proje Genel Bakış

  • MapToPoster, kullanıcının belirlediği bir şehrin haritasını temel alarak minimalist tasarımlı posterler oluşturan bir Python betiği
    • Oluşturulan posterler otomatik olarak posters/ dizinine kaydedilir
    • MIT lisansı ile yayımlandığı için serbestçe değiştirilebilir ve dağıtılabilir
  • Depo yaklaşık 2.7k Star ve 164 Fork barındırıyor

Başlıca Özellikler

  • Komut satırı arayüzü (CLI) üzerinden şehir adı (--city), ülke adı (--country), tema (--theme), mesafe (--distance) girilerek poster oluşturma
  • --list-themes seçeneği ile kullanılabilir tüm tema listesini görüntüleme
  • Mesafe (distance) değerine göre şehir ölçeğine uygun yarıçap belirleme
    • 4,000–6,000m: küçük şehirler
    • 8,000–12,000m: orta ölçekli şehirler
    • 15,000–20,000m: büyük şehirler

Tema Yapısı

  • themes/ dizininde 17 tema JSON dosyası bulunur
    • Örnekler: noir, blueprint, neon_cyberpunk, warm_beige, forest, terracotta vb.
  • Her tema; arka plan rengi, yol renkleri, su yüzeyleri, parklar gibi renk özelliklerini tanımlar
  • Kullanıcılar JSON biçiminde yeni temaları doğrudan ekleyebilir
    • Örn: "bg": "#FFFFFF", "road_primary": "#1A1A1A" vb.

Kullanım Örnekleri

  • Farklı şehir ve tema kombinasyonlarıyla poster üretilebilir
    • 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
  • Örnek posterler arasında San Francisco, Venice, Marrakech, Singapore gibi şehirler yer alır

İç Yapı ve Mimari

  • Başlıca bileşenler: CLI Parser, Geocoding(Nominatim), Data Fetching(OSMnx), Rendering(matplotlib)
  • Render sırası (z-order): arka plan → su yüzeyleri → parklar → yollar → gradyan → metin
  • Ana işlevler
    • get_coordinates(): şehir adına göre enlem-boylam sorgulama
    • create_poster(): uçtan uca render hattı
    • get_edge_colors_by_type(): yol türüne göre renk belirleme
    • get_edge_widths_by_type(): yol önem derecesine göre kalınlık ayarlama
    • load_theme(): JSON teması yükleme

Genişletme ve Özelleştirme

  • Yeni harita katmanları (ör. demiryolu) eklemek için create_poster() içinde OSMnx verileri alınarak render edilebilir
  • Yeni tema özellikleri eklenirse hem JSON tarafında hem de kodda (load_theme()) tanımlanması gerekir
  • Metin yerleşim kuralları
    • Şehir adı: y=0.14
    • Ülke adı: y=0.10
    • Koordinatlar: y=0.07
    • Kaynak bilgisi: y=0.02

Performans Optimizasyonu İpuçları

  • dist değeri 20 km ve üzerindeyse indirme hızı düşebilir ve bellek kullanımı artabilir
  • Koordinat önbellekleme ile Nominatim istek sınırlarından kaçınılabilir
  • network_type='drive' ayarı render hızını artırır
  • Hızlı önizleme için dpi değeri 150'ye düşürülebilir

Teknoloji Yığını ve Lisans

  • %100 Python ile yazılmıştır
  • Başlıca kütüphaneler: OSMnx, matplotlib, argparse
  • MIT License ile dağıtılır; ticari kullanım ve değişiklik mümkündür

Özet

  • MapToPoster, veri görselleştirme ile tasarımı birleştiren, kod tabanlı bir şehir haritası sanatsallaştırma aracı olan açık kaynaklı bir projedir
  • Geliştiriciler, tasarımcılar ve veri görselleştirme uzmanları için şehir yapısını sanatsal bir biçimde keşfetmeye yardımcı olan kullanışlı bir araç

3 yorum

 
xguru 2026-01-20

Seul/Busan tarafı için birer tane denedim; güzel olduğu için GeekNews Twitter hesabına ekledim.
Seul : https://x.com/GeekNewsHada/status/2013410000031395905
Busan : https://x.com/GeekNewsHada/status/2013412083749265695

 
kunggom 2026-01-20

Hacker News tarafındaki görüşlerde bahsedilen city-roads da daha önce burada paylaşılmıştı.

 
GN⁺ 2026-01-19
Hacker News yorumları
  • Bununla ilgili, birkaç kez kullandığım bir proje var
    city-roads (GitHub); SVG çıktısı destekliyor ve doğrudan çevrimiçi olarak da denenebiliyor
    Yapımcısı Anvaka ayrıca başka harika veri görselleştirme projeleri de yapıyor
  • Gerçekten harika bir proje
    Yalnız sokak parametrelerini ayarlamak biraz zor
    İyileştirme fikri olarak, şehir adı yerine koordinat girişi alıp belirli bir noktayı merkeze ayarlayabilmesi ve birden fazla stili tek seferde üretip görsel olarak seçebilme özelliği olabilir
    Her hâlükârda müthiş bir çalışma
  • San Francisco görseli harika ama bazı örneklerde projeksiyon yöntemi sorunlu görünüyor
    UTM yerine küresel bir küre projeksiyonu gibi duruyor; bu da yerel render için uygun değil
    README'de projeksiyondan bahsedilmemesi biraz şüpheli
    • Bu, eğlenceli ve sanatsal posterler üretmek için yapılmış bir sanat projesi, bu yüzden projeksiyon yöntemi çok önemli değil
      Üstelik açık kaynak; harita üretimi deneyimini kullanıp bir pull request ile iyileştirme önermeyi deneyebilirsin
    • Son görselde vinyet efekti var; kenarlar doğal biçimde kayboluyormuş gibi görünüyor
      Muhtemelen OSM tile'ları alınıp sonradan görüntü işleme uygulanmış
      Sonuç oldukça hoş
  • Koda kısaca baktım; matplotlib sayesinde ufak bir değişiklikle SVG çıktısı mümkün gibi görünüyor
    PNG'nin varsayılan olmasının özel bir nedeni var mı diye merak ettim
    • İyi yakalama. plt.savefig(output_file, format='svg', facecolor=THEME['bg']) ile çözülebilir
      Bunu yansıtmak için --format parametresini eklemeyi planlıyorum
    • Büyük şehirleri PDF/SVG olarak dışa aktarmayı denedim; çok yavaş
      Nüfusu 500 bin olan tek bir şehir bile inanılmaz uzun sürüyor
  • Bu tür görselleri gerçekten poster olarak bastırmak için en iyi yöntem ne olur diye merak ediyorum
    • New Jersey'deki El-co Color, 20x30 inç posterleri uygun fiyata basıyor
      El-co Color Poster Special
    • Eskiden böyle haritaları 3D baskıyla kabartmalı harita yapıp çerçeveleyen bir hizmet de vardı
    • Ben Vistaprint kullanıyorum. Çok fazla karşılaştırma yapmadım ama fiyat ve kalite fena değil
    • Kendin denemek istersen Rasterbator.net ile birden çok sayfayı birleştirerek DIY poster yapabilirsin
      Ama biraz emek istiyor
    • ABD'de Staples baskı kalitesi oldukça iyiydi
  • Bu depo gerçekten müthiş
    README, açık kaynak yazılım için örnek alınacak bir uygulama sayılabilir ve ortaya çıkan işler şaşırtıcı derecede güzel
  • prettymapp uygulamasına da bakmak iyi olabilir
  • Aynı isimde birden fazla şehir olduğunda ne oluyor diye merak ediyorum
    Örneğin Salem (OR/MA), Portland (OR/ME), Springfield (IL/MO), Dallas (TX/GA) gibi
    • Sadece "Salem" yazarsan rastgele bir şehir seçiyor
      "Salem, Oregon" veya "Salem, MA" gibi yazarsan istediğin sonucu alabiliyorsun ve girilen metin başlık yazısı olarak kullanılıyor
    • ABD'de Paris, London, Athens gibi dünya şehirlerinin adını taşıyan şehirler de çok
    • Bunu hiç düşünmemiştim. Muhtemelen ülkeyi de girdiye ekleme özelliği koymak gerekecek
  • Bu projenin graf tabanlı bir yaklaşım mı kullandığını, yoksa genel bir görüntü üretimi mi yaptığını merak ediyorum
    Picxstudio'da da benzer sonuçlar görmüştüm; orası bir yapay zeka görüntü üretim platformu
  • Sidney yol haritasını bir yapboz hâline getirip oynarken yol yapısını öğrenmek istemiştim
    Böylece navigasyon uygulamalarına daha az bağımlı olup eski usul bir sürücü olabilirim diye düşünüyordum
    • Sidney'de Where 2'nin Google Maps'e dönüşmesinin bir nedeni var
      Tek yönlü yollar çok fazla ve limanla tünel yapısı o kadar karmaşık ki, Sidney yollarını öğrenmek ömürlük bir uğraş