Skip to content

Development History

SDK genelinde eklenen her sınıf, fonksiyon ve önemli yapısal değişiklik bu tabloda kayıt altına alınır.

Tarih Modül Sembol Tür Amaç / Kapsam
2026-04-09 core.config ConfigManager Sınıf Ortam değişkenlerinden merkezi konfigürasyon. AWS, S3, Spark, DB ve genel ayarları yönetir. Spark bellek/paralellik değerleri sistem RAM ve CPU'ya göre otomatik hesaplanır.
2026-04-09 core.config ConfigManager.mobilitySparkConfig Metod Büyük ölçekli mobil veri işleme için optimize edilmiş Spark konfigürasyon sözlüğü döndürür. S3A, Kryo, Adaptive Query Execution ve bellek ayarlarını içerir.
2026-04-09 core.geo_utils haversineDistance Fonksiyon İki (lat, lon) koordinatı arasındaki yüzey mesafesini Haversine formülüyle metre cinsinden hesaplar.
2026-04-09 core.geo_utils pointInPolygon Fonksiyon Verilen koordinatın GeoJSON formatındaki polygon içinde olup olmadığını Shapely ile kontrol eder. GeoJSON'ın [lon, lat] sırasını dahili olarak yönetir.
2026-04-09 core.geo_utils boundingBox Fonksiyon Koordinat listesinden minimum sınırlayıcı dikdörtgen (min/max lat-lon) hesaplar. Büyük veri kümelerini S3'ten okurken ön filtre olarak kullanılır.
2026-04-09 core.geo_utils centroid Fonksiyon Koordinat listesinin aritmetik merkezini (ortalama lat, lon) hesaplar.
2026-04-09 mobility.footfall_engine FootfallEngine Sınıf Mobil konum verisi üzerinden ayak izi metrikleri hesaplar. Pure Python (list[dict]) ve Spark DataFrame olmak üzere iki çalışma modu sunar.
2026-04-09 mobility.footfall_engine FootfallEngine.getCountByPolygon Metod Pure Python modu: polygon içindeki unique device sayısını döndürür.
2026-04-09 mobility.footfall_engine FootfallEngine.getCountByRadius Metod Pure Python modu: Haversine yarıçapı içindeki unique device sayısını döndürür.
2026-04-09 mobility.footfall_engine FootfallEngine.getDeviceListByPolygon Metod Pure Python modu: polygon içindeki unique device ID listesini döndürür.
2026-04-09 mobility.footfall_engine FootfallEngine.getDeviceListByRadius Metod Pure Python modu: Haversine yarıçapı içindeki unique device ID listesini döndürür.
2026-04-09 mobility.footfall_engine FootfallEngine.getCountByPolygonSpark Metod Spark modu: Spark DataFrame üzerinde polygon UDF filtresi ile unique device sayısı. Büyük/S3 verisi için.
2026-04-09 mobility.footfall_engine FootfallEngine.getCountByRadiusSpark Metod Spark modu: Spark DataFrame üzerinde Haversine UDF filtresi ile unique device sayısı.
2026-04-09 mobility.footfall_engine FootfallEngine.getDeviceListByPolygonSpark Metod Spark modu: Polygon içindeki device ID'leri Spark DataFrame olarak döndürür (collect() kullanıcıya bırakılır).
2026-04-09 mobility.footfall_engine FootfallEngine.getDeviceListByRadiusSpark Metod Spark modu: Haversine yarıçapı içindeki device ID'leri Spark DataFrame olarak döndürür.
2026-04-09 data.s3_client S3Client Sınıf S3 üzerindeki büyük ölçekli mobil veri dosyalarını PySpark ile okur. IAM Role ve Access Key olmak üzere iki kimlik doğrulama modunu destekler.
2026-04-09 data.s3_client S3Client.createSession Metod mobilitySparkConfig ile optimize edilmiş Spark oturumu oluşturur; S3A multipart ayarlarını Hadoop config'e de uygular.
2026-04-09 data.s3_client S3Client.loadData Metod S3'teki herhangi bir parquet/csv dosyasını Spark DataFrame olarak okur. basePath ile partition tabanlı tablo desteği sağlar.
2026-04-09 data.s3_client S3Client.loadMobilityData Metod MapinData standart echo_data_partitioned şemasından mobil veri yükler. Province bazlı partition filter ve varsayılan sütun seçimi içerir.
2026-04-15 data.s3_client S3Client.loadCleanMobilityData Metod V2 H3 zenginleştirilmiş temiz veri yükler. mobilityDataPath üzerinden il bazlı S3 yolunu çözer; MOBILITY_CLEAN_COLUMNS varsayılan şemasını kullanır. FootfallEngine Spark metodlarının önerilen girdi kaynağı.
2026-04-15 data.s3_client MOBILITY_CLEAN_COLUMNS Sabit V2 H3 veri setinin standart sütun listesi: [timestamp, device_aid, latitude, longitude, horizontal_accuracy, neighborhood, h3_res9_id]
2026-04-15 data.s3_client S3Client.createSession (güncellendi) Metod PYSPARK_PYTHON ve PYSPARK_DRIVER_PYTHON ortam değişkenleri sys.executable olarak ayarlandı. Python 3.11 uyumsuzluk hatası önlendi.
2026-04-15 core.config ConfigManager.mobilityDataPath Metod İl bazlı V2 H3 Parquet yolunu döndürür. İstanbul → v2_h3_alt_dev_sorted (200 m altitude filtreli), diğerleri → v2_h3_dev_sorted. MAPIN_MOBILITY_DATA_SUFFIX env override desteği.
2026-04-15 core.config ConfigManager.mobilitySparkConfig (güncellendi) Metod Multipart boyutları 256 MB / 512 MB olarak güncellendi. python.worker.reuse=true ve maxPartitionBytes=256MB eklendi.
2026-04-15 core.config ConfigManager.testProvince Özellik Test ve geliştirme ortamı için varsayılan il. MAPIN_TEST_PROVINCE env ile override edilebilir; varsayılan istanbul.
2026-04-15 core.geo_utils polygonAreaM2 Fonksiyon GeoJSON polygon alanını metre kare cinsinden hesaplar. Shoelace (Gauss) formülü + derece→metre dönüşümü. Küçük polygon eşik kararında kullanılır (< 100 000 m² → kring bazlı).
2026-04-15 core.geo_utils h3CentroidCell Fonksiyon Koordinatın H3 hücresini INT64 olarak döndürür. Parquet h3_res9_id sütunuyla doğrudan karşılaştırılabilir.
2026-04-15 core.geo_utils h3PolygonCells Fonksiyon GeoJSON polygon için H3 INT64 hücre listesi döndürür. h3shape_to_cells polyfill + grid_disk(bufferK) tampon. Büyük polygon H3 ön-filtresi için kullanılır.
2026-04-15 core.geo_utils autoKringK Fonksiyon Polygon kenar uzunluğuna göre kring k değerini (0 veya 1) otomatik seçer. Küçük polygon → k=1, büyük polygon → k=0. H3 res9 çap eşiği ≈ 174 m.
2026-04-15 mobility.footfall_engine FootfallEngine._filterByPolygonSpark (güncellendi) Metod 3-katmanlı pipeline: BBox ön-filtre → H3 hücre ön-filtre (h3PolygonCells veya autoKringK) → PiP UDF (Shapely). H3 ön-filtresi Parquet row-group skip'i etkinleştirir; benchmark: 6–14× hızlanma.
2026-04-15 mobility.footfall_engine FootfallEngine._filterByRadiusSpark (güncellendi) Metod BBox ön-filtre → H3 kring ön-filtre (k = ceil(radius / 174m)) → Spark-native Haversine. Python UDF kullanmaz; Catalyst tarafından tam optimize edilir. k formülü düzeltildi: 87 m → 174 m (hücre çapı).
2026-04-15 mobility.footfall_engine FootfallEngine.fetchDeviceRecords Metod Device ID listesine göre tüm mobil kayıtları döndürür. ≤ 1000 cihaz → isin filtresi; > 1000 cihaz → broadcast join.
2026-05-01 data.duckdb_client DuckDBClient Sınıf DuckDB bağlantısı ve S3 yol yönetimi. httpfs + spatial extension kurulumu, boto3 DefaultCredentialChain ile AWS kimlik aktarımı. FootfallEngine DuckDB metodlarının bağlantı kaynağı.
2026-05-01 data.duckdb_client DuckDBClient.connect Metod DuckDB bağlantısı başlatır; httpfs/spatial extension yükler, S3 kimlik bilgilerini boto3'ten alır, thread sayısını sparkMaster'dan türetir. Idempotent — zaten açık bağlantı tekrar başlatılmaz.
2026-05-01 data.duckdb_client DuckDBClient.s3Path Metod İl adından DuckDB-uyumlu S3 glob yolu üretir (s3:// şema + *.parquet eki). ConfigManager.mobilityDataPath üzerinden türetilir.
2026-05-01 mobility.footfall_engine ENGINE_DUCKDB, ENGINE_SPARK Sabit Motor seçim sabitleri: "duckdb" ve "spark". getCount / getDeviceList / fetchDeviceRecords metodlarındaki engine= parametresi için kullanılır.
2026-05-01 mobility.footfall_engine FootfallEngine (güncellendi) Sınıf Constructor df, con, s3Path parametreleri aldı. DuckDB ve Spark çalışma modları aynı nesne üzerinde desteklendi.
2026-05-01 mobility.footfall_engine FootfallEngine.getCountByPolygon (yeniden) Metod Unified API: Polygon / MultiPolygon / GeoJSON dosyası girdi destekli. engine="duckdb" (varsayılan) veya engine="spark". Eski pure-Python (records, coords) imzası _countByPolygonLocal'a taşındı.
2026-05-01 mobility.footfall_engine FootfallEngine.getCountByRadius (yeniden) Metod Unified API: engine parametresi eklendi. DuckDB Haversine — BBox + SQL threshold; Spark — Catalyst-native formül.
2026-05-01 mobility.footfall_engine FootfallEngine.getDeviceList Metod Yeni birleşik metod: Polygon / MultiPolygon device listesi. DuckDB → list[str]; Spark → DataFrame.
2026-05-01 mobility.footfall_engine FootfallEngine.getDeviceListByRadius (yeniden) Metod Unified API: engine parametresi eklendi. İmza (centerLat, centerLon, radiusMeters, engine) olarak güncellendi.
2026-05-01 mobility.footfall_engine FootfallEngine.fetchDeviceRecords (yeniden) Metod Unified API: engine parametresi eklendi. DuckDB → pandas.DataFrame (≤1000: IN clause; >1000: geçici tablo + JOIN); Spark → Spark DataFrame (mevcut davranış korundu).
2026-05-01 mobility.footfall_engine FootfallEngine._loadPolygonCoords Metod Çoklu girdi formatı normalleştirici: list, str (GeoJSON dosya yolu), dict (GeoJSON Feature/Geometry).
2026-05-01 mobility.footfall_engine FootfallEngine._normalizeCoords Metod Polygon ve MultiPolygon koordinatlarını ring listesine dönüştürür. BBox hesabı ve H3 polyfill için ortak temel.
2026-05-01 mobility.footfall_engine FootfallEngine._filterByPolygonSpark (güncellendi) Metod MultiPolygon desteği: tüm ring'lerin birleşik BBox'ı, her ring'in H3 hücreleri toplandı. _makePolygonUdf → Shapely MultiPolygon desteği eklendi.
2026-05-01 mobility.footfall_engine getCountByPolygonSpark / getCountByRadiusSpark / getDeviceListByPolygonSpark / getDeviceListByRadiusSpark Metod Deprecated alias'lar. Geriye dönük uyumluluk için korundu; unified API'ye yönlendirilmedi (df imzası değişti).

Gelecek Eklemeler

Planlanan özellikler için bkz. future-features.md


Katkıda Bulunanlar

Ad Rol
Kaan Gümele SDK Geliştirici