Skip to content

Latest commit

 

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MaptoGraph

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.

Web Prototipi

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.pbf dosyası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.

Ekran Görüntüsü

MaptoGraph akademik lab arayüzü

Çalıştırma:

npm install
npm run dev

Ardı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.

Örnek Veri ve İndirme

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.pbf dosyası yüklenmez.
  • Web arayüzü yalnızca graph JSON dosyası okur.
  • .osm.pbf dosyasından graph JSON üretmek için bu projedeki npm run convert komutu 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ı:

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 Monaco

Tü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.pbf

Not: 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.

Veri Akışı

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.json

Not: 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ği
  • nodes[].label: Arayüzde gösterilecek ad
  • nodes[].lat, nodes[].lon: Düğüm koordinatları
  • nodes[].type: junction, dead_end veya road; eksikse arayüz dereceye göre hesaplar
  • nodes[].degree, nodes[].inDegree, nodes[].outDegree: Düğüm bağlantı sayıları; dönüştürücü tarafından üretilebilir
  • edges[].source, edges[].target: Bağlanan düğüm kimlikleri
  • edges[].weight: Kenar maliyeti veya uzunluğu, kilometre varsayılır
  • edges[].oneway: true ise kenar yalnızca source -> target yönünde kullanılabilir
  • edges[].roadType: OSM highway sınıfı

Proje Yapısı

.
├── 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

Kontrol

JavaScript sözdizimi kontrolü:

npm run check

Yerel sunucu doğrulama:

curl -I http://127.0.0.1:5173/

Detaylı dokümantasyon:

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages