OpenStreetMap’in Yeni Vektör Karoları
(tech.marksblogg.com)- OpenStreetMap uzun süredir statik PNG tabanlı raster karolar sunuyordu; artık Mapbox Vector Tiles (MVT) biçiminde vektör karolar barındırmaya başlayarak haritaların kullanım alanını genişletiyor
- Vektör karolar, kullanıcıların stil ve render kurallarını ayarlamasına, karodaki bilgileri çıkarmasına veya etiket dilini değiştirme gibi işlevleri uygulamasına olanak tanıyor
- Ana OSM web sitesi hâlâ raster karolar kullanıyor, ancak yeni vektör karolar ayrı bir web demosu, QGIS ve Leafmap üzerinden doğrudan incelenebiliyor
- Burj Khalifa yakınındaki z14 karo örneğinde 114 KB’lık MVT, 1,4 MB JSON’a dönüştürüldü; POI katmanında 474 kayıt ve birden fazla üst düzey katman anahtarı bulunuyor
tiles2columnskullanılarak belirlenen sınır kutusundaki OSM vektör karoları indirilebiliyor ve GeoPackage veya Parquet’e dönüştürülebiliyor; böylece güncellenmiş OSM verilerini dosya tabanlı analizlerde doğrudan kullanmak kolaylaşıyor
OSM karolarının değiştiği nokta
- OpenStreetMap şimdiye kadar haritaları, render kuralları ve stili önceden belirlenmiş statik PNG raster karolar olarak sunuyordu
- Yeni barındırma, Mapbox Vector Tiles yani MVT biçiminde vektör karolar sağlıyor
- Vektör karolar kullanıldığında son kullanıcı harita gösterimi üzerinde daha doğrudan kontrol sahibi olabiliyor
- Stil ve render kurallarını ayarlama
- Her karoda yer alan temel bilgileri çıkarma
- Daha keskin harita görüntüleri gösterme
- Etiket dilini değiştirme olanağı sağlama
- OSM ana web sitesi hâlâ raster karolar sunuyor
- Yeni vektör karolar, web demosunda çoğu telefon ve masaüstü cihazdan incelenebiliyor
Uygulamada kullanılan araçlar
- Örnekte OSM verilerini görselleştirmek ve analiz etmek için Python ve çeşitli jeo-uzamsal araçlar kullanılıyor
- Temel kurulum araçları arasında
jq,python3-pip,python3-virtualenvbulunuyor - Python sanal ortamına şu paketler kuruluyor
leafmap[maplibre]mapbox_vector_tilemorecantilenotebook
- DuckDB şu eklentilerle birlikte kullanılıyor
- Harita render etmek için QGIS 3.40 kullanılıyor
- QGIS, Windows, macOS ve Linux’ta çalışan bir masaüstü uygulamasıdır
- Dünya genelinde kullanıcıların uygulama çalıştırma sayısı ayda yaklaşık 15 milyon düzeyindedir
QGIS’te vektör karo açma
- QGIS’te OSM vektör karoları
Layer Menu -> Add Layer -> Add Vector Tile Layeryoluyla eklenebilir - Yeni bağlantıda stil URL’si için şu değer kullanılır
- Kaynak URL olarak şu MVT endpoint’i belirtilir
- Stil sayfası isteğe bağlıdır; olmasa da QGIS vektör verilerini rastgele renklerle render edebilir
- QGIS’te ikon render etme ile ilgili hizasızlık sorunu gözlemlenmiştir
- Diğer haritalama araçları ilgili stilin sprite’larını düzgün render ediyor
- QGIS’te ikonlar bulanık siyah ikonlar gibi görünüyor
- İlgili konu QGIS #59492’de yer alıyor
Leafmap ve Jupyter Notebook ile render etme
- Jupyter Notebook yapılandırma klasörü oluşturulup parola ayarlandıktan sonra sunucu
127.0.0.1üzerinde çalıştırılıyor - Notebook, çalıştıran kullanıcının yetkileriyle çalışır ve geçerli dizin ile altındaki dosyaları açığa çıkarabilir; bu nedenle boş bir klasörde çalıştırma yöntemi kullanılıyor
- Leafmap’te
leafmap.maplibreglkullanılıyor ve stil URL’si olarakcolorful.jsonbelirtilerek Burj Khalifa çevresi render ediliyor - Leafmap render’ında POI ikonları doğru şekilde gösteriliyor
MVT’yi analiz edilebilir veriye dönüştürme
- Örnek olarak Burj Khalifa yakınındaki zoom level 14 karosu kullanılıyor
- Yaklaşık koordinatlar
[55.27, 25.2],morecantile tiles 14içine verilerek[10707, 7006, 14]karo koordinatları elde ediliyor - Bu değerlerle şu karo indiriliyor
- 114 KB’lık MVT dosyası,
mapbox_vector_tile.decodeve koordinat dönüştürme fonksiyonuyla 1,4 MB’lık JSON dosyasına dönüştürülüyor - Dönüştürülen karonun üst düzey anahtarları şu katmanları içeriyor
addressesbridgesbuildingsferrieslandoceanpier_linespier_polygonsplace_labelspoispublic_transportsitesstreet_labelsstreet_polygonsstreetsstreets_labels_pointswater_polygonswater_polygons_labels
POI katmanını DuckDB ile inceleme
poiskatmanı ayrı bir JSON dosyasına çıkarıldıktan sonra DuckDB’ninST_READfonksiyonuyla açılıp analiz ediliyorcuisinedeğeri bulunan POI’ler 67 satır olarak sorgulanıyor- Örnek
amenitydeğerleri arasındarestaurant,fast_food,cafebulunuyor - Örnek
cuisinedeğerleri arasındafrench,greek,american,lebanese,coffee_shop,asian,persian,chicken,pizzabulunuyor
- Örnek
- DuckDB
SUMMARIZEsonucu, POI verisinin ne ölçüde dolu olduğunu gösteriyor- Toplam POI kaydı 474
name,name_de,name_enalanlarının null oranı sırasıyla %29,96amenityalanının null oranı %31,86cuisinealanının null oranı %85,86geomalanının null oranı %0,00
approx_uniqueölçütüne görename258,name_de264,name_en245,amenity27,cuisine39 değere sahip
tiles2columns ile sınır kutusu çıkarma
- Mevcut osm_split, GeoFabrik’in oluşturduğu OSM PBF dosyalarını adlandırılmış GeoPackage dosyalarına dönüştüren bir araçtı
- GeoFabrik PBF dosyaları, işlenebilir hale geldiğinde birkaç gün öncesinin verisi olabilir
- Yeni OSM vektör karoları, temel veri düzenlendikten hemen sonra güncelleniyor
- tiles2columns, belirlenen sınır kutusundaki OSM karolarını indirip GeoPackage veya Parquet dosyalarına dönüştüren Python tabanlı bir yardımcı araçtır
- Kuzey Dubai çevresindeki sınır kutusu örneği 42 karo indiriyor ve birkaç MB boyutunda GeoPackage dosyaları oluşturuyor
streets.gpkg: 6,8 MBbuildings.gpkg: 6,2 MBpois.gpkg: 1,4 MBstreet_labels.gpkg: 1,4 MBland.gpkg: 744 KB
- Oluşturulan GeoPackage dosyaları doğrudan QGIS projesine eklenebilir
- Dosyalar OSM MVT dosyalarında kullanılan anahtarlara göre ayrıldığı için her katmanı bağımsız olarak tanımlamak, stillendirmek ve analiz etmek kolaydır
- Her geometrinin öznitelikleri ayrı sütunlarda saklanır
pois.gpkgiçinde adı bulunan POI’leri sorgulayan örnek 6.329 satır döndürür veKiku,Fujiya Restaurant,Mövenpick Grand Al Bustan Dubai,McDonald'sgibi adları içerir
2 yorum
OpenStreetMap Vakfı resmen vektör harita döşemelerini işletmeye başladı
Hacker News yorumları
Vektör tile konusunda biraz karmaşık hissediyorum. Orijinal raster tile’ların sunduğu ayrıntı düzeyini gösterebilen bir stil ve tile oluşturucu şeması kombinasyonunu hâlâ bulamadım.
Yazıdaki ekran görüntülerine bakınca bile fark çok belirgin. İlkinde heykeller, mağazalar, tiyatrolar, seyir noktaları gibi ilgi noktaları; köprü olarak gösterilen yollar; çim ve parklar arasındaki renk farkı; yollara göre çizgi kalınlığı; spor sahaları; bina ve mahalle adları; tek yön okları; bazı binalar; merdivenler; ağaçlar vb. pek çok bilgi var.
İkincisinde ise bir troleybüs durağı ve bir yol adı kadar bilgi var; o yol adı da hatalı render edilmiş.
openmaptiles stillerini, protomaps varsayılan stilini, mapbox stillerini ve protomaps, openmaptiles, mapbox oluşturucularını çok kullandım ama OSM raster tile kadar okunabilir ve aynı zamanda ayrıntı bakımından zengin olanına rastlamadım.
Vektör stillerde yakınlaştırma ve kaydırma akıcı, stil düzenlemek de kolay; ama kendi veriniz için arka plan haritası olarak kullanmak değil de gerçek harita verilerini görmek istediğinizde yetersiz kalıyorlar.
Belki de bunun nedeni hesaplama kaynağı sınırlarıdır. OSM raster tile düzeyinde ayrıntı göstermek, hem istemci hem de tile oluşturma tarafında çok fazla kaynak tüketebilir.
OpenStreetMap’in bir başka düşük kontrastlı, düşük ayrıntılı arka plan haritası sunmak yerine mevcut raster stili daha yakından taklit etmesini isterim; bu herkese açık vektör tile sürümünün de daha ayrıntılı vektör haritaları mümkün kılmasını umuyorum.
Modern bir raster tile üretim altyapısını sürdürmek epey büyük bir iş.
Eskiden bisiklet turu planlaması için çok ayrıntılı bir stili uzun süre geliştirmiştim: https://stevebennett.me/2015/01/14/cycletour-org-a-better-ma...
Bunu birkaç kez vektör tile’larla yeniden üretmeye çalıştım, ama boyut sınırlarına takılmadan yeterli ayrıntıyı koymak oldukça zordu; varsayılan Mapbox tile’larında da ihtiyaç duyduğum bilgiler çok daha eksikti.
Yine de vektör tile’larda raster tile’larda olmayan dolaylı çözümler de var. Örneğin farklı katmanlar açılıp kapatılabilirken, etiketler altta ne olduğunu algılayabildiği için okunabilirlik korunabiliyor.
Stili, orijinal raster tile’ların görünümüne yakın olacak şekilde ayarladım; ama vektör sürümüne çok daha fazla etkileşim özelliği ekledim.
Stil ve tile tasarımı açısından ilginç olan nokta, tile’ların nerede ve nasıl render edildiğine bağlı olarak performans ödünleşimlerinin tamamen değişmesi. Bariz bir şey ama sunucuda ve istemcide görsel olarak nelerin mümkün olduğunu da etkiliyor.
Yine de OSM haritası, gösterilen ilgi noktaları fazla olduğu için çok daha kullanışlı. Haritaya sadece bakarak bile gerçek mekâna dair bir his oluşuyor; park park gibi, hastane hastane gibi görünüyor.
Google Maps, grafik tasarımcı bakış açısından daha iyi görünebilir. Ama yön bulmak için genelde yolların ve kavşakların biçimini karşılaştırmak gerekir. Google Maps’te her yer birbirine benzer görünüyor.
İki dakika kurcalayınca bile ayrıntı kaybı hemen fark ediliyor. Gerçekten üzücü, ama bir gün birinin bunu çözeceği konusunda iyimserim.
Açık kaynak topluluğunun vektör harita tile özelliğini geliştirme sürecini izlemek ilginçti. 2018 civarında web GIS işleri yaparken Google/Apple’ın akışlı vektör haritaları sihir gibi görünüyordu; maliyeti karşılayabilseydim kesin kullanmak isterdim.
Çok geçmeden temel teknoloji açık kaynak olarak ortaya çıktı, ücretsiz barındırma çözümleri bile çıktı. Artık Leaflet haritasında harika vektör katmanlarını ücretsiz kullanabiliyorsunuz. Açık kaynağa teşekkürler.
Ücretsiz bir harita hizmetinden şikâyet etmek istemiyorum; hizmet harika ve düzenleme ile veri sahipliğine daha fazla odaklandıklarını da anlıyorum. Sunum altyapısı zor ve pahalı.
Yine de birkaç yıl boyunca MapBox’ın hâkimiyetinin diğer denemeleri ne kadar engellediğini merak ediyorum.
OSM tabanlı haritaları barındırırken işletme maliyetlerinin düşüp düşmeyeceğini merak ediyorum. Çünkü render için daha az CPU gerekecek, vektörlerin de daha az depolama alanı ve bant genişliği tüketeceği düşünülebilir
Hayır, çünkü resmi OSM tile katmanı Fastly’nin büyük sponsorluğundan yararlanıyor. En son kontrol ettiğimde Fastly €720k, AWS render tarafı €40k idi
Evet, çünkü teknik olarak daha az kaynak kullandığı için AWS+Fastly üzerindeki yük de azalır ve self-host etmek de kolaylaşır
Daha önce ayrıntılı okuduğum bir risk değerlendirmesinde OSM’nin “Fastly sponsorluğunu kaybederse standart tile katmanına tüm üçüncü taraf erişimini kesip yalnızca az sayıda Varnish sunucusu işletme olasılığının yüksek olduğu” yazıyordu
Anladığım kadarıyla vektörün ana motivasyonu maliyet düşürmeden çok uluslararasılaştırmayı iyileştirmek, render kararlarını istemci tarafında mümkün kılmak ve birçok sonraki faydayı doğuracak modern bir araç zinciri kurmaktı
Daha güncel bilgiler mutlaka vardır; ilgili materyaller 1 ve 2’de
Ancak bir miktar işlem yükünü istemciye devretmesi ve daha önemlisi birçok stil kararını istemcinin vermesini sağlayabilmesi açısından evet. Elbette her şey mümkün değil
Statik ya da sık güncellenmeyen vektör tile’lar çeşitli araçlarla OSM verisinden üretilebiliyor; şu anda en popüler olanlar https://github.com/systemed/tilemaker ve https://github.com/onthegomap/planetiler
Asıl yeni olan, Paul’un OSMF için yaptığı çalışma sayesinde vektör tile’ların anında, yani birkaç dakika içinde güncellenebilir hale gelmesi. Bu, OSM katkıcıları için bir geri bildirim mekanizması olarak önemli ve OSMF’nin bugün raster tile hizmetini işletmesinin başlıca nedeni de bu
Şu anda vektör tile hizmetinin kullanımına ne tür kısıtlamalar getirileceği hâlâ açık. Raster tile hizmetinde olduğu gibi üçüncü taraf hizmetlerle rekabet etme ya da onların yerini alma amacı yok, ancak vektör tile hizmeti potansiyel olarak bunu yapabilir
Örneğin https://protomaps.com/, https://openmaptiles.org/, https://versatiles.org/ var
gzip sıkıştırması da zaten tile’ın içinde yapılmış durumda
Bir başka sorun da vektör sürümünde Arapça yazı tiplerinin düzgün render edilmemesi. Sağdan sola değil soldan sağa render ediliyor ve harfler birleşmeden ayrı ayrı görünüyor
Bu yüzden görünen bozulma, stilden ya da içeriği yerelde render eden kütüphaneden kaynaklanan bir sorun
Birlikte bakılabilir: OpenFreeMap — ücretsiz OpenStreetMap vektör tile barındırma
https://openfreemap.org/
https://github.com/hyperknot/openfreemap?tab=readme-ov-file#...
Bunun da aynı vektör teknoloji yığını üzerine mi kurulduğunu, yoksa tamamen ayrı bir geliştirme mi olduğunu merak ediyorum
“Görüntüler çok daha net olacak ve etiket dili değiştirilebilecek” kısmının beklendiği kadar iyi çalışmayacağını düşünüyorum
Dili değiştirdiğinizde etiket boyutunun aynı kalacağına dair hiçbir garanti yok; etiket boyutu harita yerleşimiyle etkileşir ve neyin gösterileceğini de belirler
Etiket büyürse haritanın çok fazlasını kapatabilir ya da birbirleriyle çakışabilir. Etiket küçülürse kullanıcı, daha önce alan kısıtı nedeniyle atlanan şehirlerin neden yeni oluşan boş alanda görünmediğini merak edebilir
Sadece tüm yol adlarını gösterin. Sıkışık görünmesi umurumda değil. Bir kavşakta durup üzerinde ad olmayan bir haritaya bakmak işe yaramaz bir haritadır
Yıllardır kullanılan raster tile’larda da durum böyleydi
Çok sevindirici bir yenilik. Daha güzel görünen haritalar bekliyorum
Ancak “my workstation” bölümü biraz tuhaf. Yazının geri kalanıyla pek ilgili görünmüyor ve sonrasında ele alınan işler için yüksek sistem gereksinimleri gerekiyor gibi de durmuyor
“Görüntüler çok daha keskin olacak ve etiket dili değiştirilebilecek” deniyorsa, örneğin şehir şekli vektörleri, daha doğrusu çokgenler için tanımlı tüm dillerdeki şehir adı meta verileri de taşınacak mı?
Dil değiştirme özelliğinin kullanışlılığı doğal olarak çevirilerin var olup olmamasına bağlı. Editörleri yer adları için daha fazla çeviri eklemeye de teşvik edebilir.
Bunun nasıl göründüğüne dair bir örnek https://americanamap.org adresinde görülebilir. OSM verilerini kullanıyor, ancak bu yazıdaki döşemeler gibi neredeyse gerçek zamanlı olmayı hedeflemiyor.
Keşke bu, OSMAnd ile OrganicMaps’in sonunda güçlerini birleştirip nihai özgür ve açık kaynaklı harita uygulamasını çıkaracağı anlamına gelse.
MVT biçimindeki vektör döşemeler navigasyon ya da arama için hiç uygun değil. Zorla bir araya getirilemez demek değil, ama oldukça zorlama olur.
Örneğin OSMAnd’de OSM’ye katkıda bulunanlar için çok kullanışlı pek çok ileri kullanıcı özelliği var, ama genel kullanıcıya yönelik bir uygulamada bunlar arayüzü yalnızca kalabalıklaştırabilir.
https://marble.kde.org/ 9 yıl öncesinden beri akış olarak gelen vektör OSM katmanını kendi içinde uygulamıştı; benzer bir şeyin diğer OSM harita uygulamalarında da ortaya çıkmasını epey uzun süredir bekliyordum.
Android OSM uygulamalarında tüm ülke ölçeğinde büyük parçalar halinde yüzlerce megabaytlık harita indirmek her zaman depolama alanı sorunu yaratıyordu. Sonunda bir standardın oluşmaya başlaması çok sevindirici; bunun birçok uygulama tarafından benimsenip geliştirilmesini bekliyorum. Harika iş.