TR: MaptoGraph, Geofabrik üzerinden indirilen statik .osm.pbf dosyalarından bölgesel yol ağlarını graph yapısına dönüştürüp görselleştirmeye odaklanan, tamamen akademik ve deneysel bir projedir; harita verileri OpenStreetMap kaynaklıdır ve OSM/ODbL lisans koşullarına tabidir, proje kapsamındaki diğer tüm dosyalar ve katkılar GPL-3.0 lisanslanır. EN: MaptoGraph is a fully academic and experimental project focused on converting regional road networks from static .osm.pbf files (downloaded via Geofabrik) into graph structures for visualization; map data comes from OpenStreetMap and is subject to OSM/ODbL terms, while all other project files and contributions are licensed under GPL-3.0.
Bu depo statik çalışan bir web prototipi ve Node tabanlı PBF -> graph JSON dönüştürücü içerir. Web arayüzü tarayıcıda HTML/CSS/JavaScript ile çalışır; PBF dönüştürücü osm-pbf-parser bağımlılığını kullanır.
Durum: Web arayüzü hazırdır ve graph JSON dosyalarını görselleştirir.
.osm.pbfdosyasını doğrudan tarayıcıda parse etmez; PBF dosyasından yol graph JSON üretme adımı sonraki backend/CLI katmanıdır.
Özellikler:
- Graph JSON içe aktarma
- Monaco ve limitli Türkiye graph örnekleriyle çalışma
- Canvas tabanlı node-edge görselleştirme
- Tek algoritma, algoritma karşılaştırma, tek yön etkisi ve yapısal analiz deneyleri
- Dijkstra, A* ve BFS için süre, ziyaret edilen düğüm, mesafe ve kavşak ölçümleri
- Graph üzerindeki node'a tıklayarak başlangıç/hedef seçme
- Bağlı bileşen, toplam uzunluk, kavşak, çıkmaz sokak ve tek yön metrikleri
- Seçilen düğüm veya yol parçası için gözlem ve teknik detay paneli
- Yakınlaştırma, sürükleme, etiket ve ağırlık görünümü
Lab kullanımında temel akış: veri setini yükle, deney türünü seç, başlangıç/hedef düğümlerini belirle, tek yön kuralını aç/kapat ve sonuç tablosundaki ölçümleri karşılaştır.
Çalıştırma:
npm install
npm run devArdından tarayıcıda şu adresi açın:
http://localhost:5173
Doğrudan dosya olarak açmak önerilmez; örnek veri fetch ile yüklendiği için yerel web sunucusu gerekir.
Depoda hazır gelen gerçek dönüştürülmüş örnek:
data/generated/monaco-graph.json
Bu dosya Geofabrik Monaco PBF dosyasından npm run convert komutu ile üretilmiştir. Uygulama açıldığında varsayılan olarak bu gerçek graph JSON dosyasını yükler.
Elle hazırlanmış küçük demo veri de ayrıca tutulur:
data/sample-graph.json
Kendi verinizi kullanmak için sol paneldeki Graph JSON yükle alanından aynı formattaki bir JSON dosyası seçin.
Önemli ayrım:
- Web arayüzüne
.osm.pbfdosyası yüklenmez. - Web arayüzü yalnızca graph JSON dosyası okur.
.osm.pbfdosyasından graph JSON üretmek için bu projedekinpm run convertkomutu kullanılır.
Beklenen gerçek veri üretim akışı:
Geofabrik'ten .osm.pbf indir
-> PBF dosyasını dönüştürücü script/backend ile işle
-> highway etiketli yol verilerinden node/edge graph üret
-> graph JSON dosyasını web arayüzüne yükle
OSM/PBF ham veri indirme kaynakları:
- Geofabrik ana indirme sayfası: https://download.geofabrik.de/
- Monaco sayfası: https://download.geofabrik.de/europe/monaco.html
- Monaco PBF doğrudan indirme: https://download.geofabrik.de/europe/monaco-latest.osm.pbf
- Türkiye sayfası: https://download.geofabrik.de/europe/turkey.html
- Türkiye PBF doğrudan indirme: https://download.geofabrik.de/europe/turkey-latest.osm.pbf
- Avrupa bölge listesi: https://download.geofabrik.de/europe.html
Komut satırıyla Monaco PBF indirme ve dönüştürme örneği:
mkdir -p data/osm data/generated
curl -L -o data/osm/monaco-latest.osm.pbf https://download.geofabrik.de/europe/monaco-latest.osm.pbf
npm run convert -- data/osm/monaco-latest.osm.pbf data/generated/monaco-graph.json --max-edges 8000 --name MonacoTürkiye PBF indirme örneği:
mkdir -p data/osm
curl -L -o data/osm/turkey-latest.osm.pbf https://download.geofabrik.de/europe/turkey-latest.osm.pbfNot: turkey-latest.osm.pbf büyük bir dosyadır. İlk denemeler için küçük bir ülke/bölge seçmek veya PBF dosyasını önce daha küçük bir alana kırpmak daha pratiktir.
Planlanan akademik akış:
Geofabrik .osm.pbf
-> highway etiketli yolları çıkar
-> kavşakları ve yol uçlarını node olarak üret
-> yol parçalarını yön, tek yön ve weighted edge olarak üret
-> graph JSON dosyasını web arayüzüne yükle
Mevcut web arayüzünün beklediği veri, bu akışın son çıktısı olan graph JSON dosyasıdır.
Dönüştürme komutu:
npm run convert -- data/osm/turkey-latest.osm.pbf data/generated/turkey-graph.jsonNot: Büyük PBF dosyalarında dönüşüm daha uzun sürebilir ve üretilen JSON web tarayıcısı için ağır olabilir. İlk denemelerde Monaco gibi küçük bölge dosyaları daha uygundur.
Beklenen graph JSON biçimi:
{
"nodes": [
{ "id": "n1", "label": "A", "lat": 41.01, "lon": 28.97, "type": "junction" },
{ "id": "n2", "label": "B", "lat": 41.02, "lon": 28.98, "type": "dead_end" }
],
"edges": [
{ "id": "e1", "source": "n1", "target": "n2", "weight": 1.8, "oneway": true }
]
}Alanlar:
nodes[].id: Benzersiz düğüm kimliğinodes[].label: Arayüzde gösterilecek adnodes[].lat,nodes[].lon: Düğüm koordinatlarınodes[].type:junction,dead_endveyaroad; eksikse arayüz dereceye göre hesaplarnodes[].degree,nodes[].inDegree,nodes[].outDegree: Düğüm bağlantı sayıları; dönüştürücü tarafından üretilebiliredges[].source,edges[].target: Bağlanan düğüm kimlikleriedges[].weight: Kenar maliyeti veya uzunluğu, kilometre varsayılıredges[].oneway:trueise kenar yalnızcasource -> targetyönünde kullanılabiliredges[].roadType: OSMhighwaysınıfı
.
├── data/
│ ├── generated/
│ │ └── monaco-graph.json
│ ├── osm/
│ │ └── monaco-latest.osm.pbf # yerel indirme, git'e alınmaz
│ └── sample-graph.json
├── scripts/
│ └── convert-pbf.js
├── src/
│ ├── app.js
│ └── styles.css
├── index.html
├── package.json
├── README.md
├── README_tr.md
└── README_en.md
JavaScript sözdizimi kontrolü:
npm run checkYerel sunucu doğrulama:
curl -I http://127.0.0.1:5173/Detaylı dokümantasyon:
- Türkçe: README_tr.md
- English: README_en.md
