Son yenilənmə: 2026-11-04

GeoParquet vs. GeoJSON: Böyük Məlumat Dəstləri üçün Hansı GIS Formatı Daha Yaxşıdır?
Əgər siz heç vaxt QGIS-də 2 GB ölçülü GeoJSON faylını açmağa və ya interaktiv xəritəyə çoxmilyon sətirli çoxbucaqlı sərhəd faylını yükləməyə çalışmısınızsa, artıq donmuş ekran və yaddaş çatışmazlığı səbəbiylə çöküş hissini tanıyırsınız.
On ildən çox müddət ərzində GeoJSON, veb kartoqrafiyanın universal lingua francası kimi xidmət edib. O, şəffaf, insan tərəfindən oxunaqlı və internetdəki demək olar ki, bütün veb xəritə kitabxanaları və REST API‑ləri tərəfindən quraşdırılmış şəkildə dəstəklənir.
Lakin, müasir GIS iş axınları 2008-ci ildəkindən tamamilə fərqlidir. Bu günkü coğrafi məlumat mütəxəssisləri rutin olaraq IoT mobilitet telemetriyasının gigabayt (və ya terabayt) ölçülü məlumatlarını, ölkə üzrə bina izlərini, peykdən əldə edilən seqmentasiya maskalarını və yüksək tezlikli iqlim şəbəkələrini qəbul edirlər.
Bu ölçüdəki məlumat dəstlərinə tətbiq edildikdə, GeoJSON yalnız yavaşlamır—o, məlumat memarlıqlarını tamamilə dar boğaz halına gətirir.
GeoParquet-i təqdim edirik, Open Geospatial Consortium (OGC) daxilində inkubasiya olunan Apache Parquet üçün açıq, standartlaşdırılmış coğrafi uzantı.
Bu geniş bələdçədə, GeoParquet və GeoJSON-u arxitektura, saxlanma səmərəliliyi, oxuma/yazma sürəti, bulud uyğunluğu və inkişaf etdirici ergonomikası baxımından müqayisə edirik və vacib bir sualı cavablandırırıq: Böyük məlumat dəstləri üçün hansı formatı seçməlisiniz?
1. Struktural Memarlıq: Mətn vs. İkili Sütunlu
Bu formatların miqyasda niyə bu qədər fərqli işlədiyini anlamaq üçün, hər birinin koordinat dəyərlərini və cədvəl meta məlumatlarını necə təmsil etdiyinə baxmalısınız.
+--------------------------------------------------------------+
| Qiymətləndirmə Metriyi |
| **Məlumat Formatı** |
| **Geometri təmsilatı** |
| **Sıxışdırma Nisbəti** |
| **Sütun Proyeksiyası** |
+--------------------------------------------------------------+
VS
+--------------------------------------------------------------+
| **Məkan Predikatı Aşağı İtələmə** |
| **Bulud Obyekt Saxlaması (S3/GCS)** |
| **İnsan Oxunaqlılığı** |
| **Veb Brauzer Dəstəyi** |
| **Standartlaşdırma Orqanı** |
+--------------------------------------------------------------+
GeoJSON: Sətir-Orientasiyalı, Mətn-Kodlu JSON
GeoJSON, məlumatları JSON obyektlərinin massivi kimi təmsil edir. Hər bir xüsusiyyət atribut açarlarını sətir-şəkilli üzən nöqtə ədədlərinin massivi ilə birlikdə aydın şəkildə təkrarlayır:
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": { "county": "Travis", "state": "TX", "pop_density": 1845.2 },
"geometry": {
"type": "Point",
"coordinates": [-97.74306, 30.26715]
}
}
]
}
Çünki GeoJSON mətn əsaslıdır:
- Təkrarlanan sxemalar:
"properties","type"və"coordinates"kimi sahə adları milyonlarla dəfə təkrarlanır, xam fayl ölçüsünü artırır. - Məhsuldar olmayan sətir‑rəqəm çevrilməsi: CPU-nuz hər hansı məkan əməliyyatını yerinə yetirməzdən əvvəl mətn simvollarını (
"-", "9", "7", ".", "7"...) 64‑bit IEEE ikiqat dəqiqlikli üzən nöqtə ədədlərinə çevirməlidir. - Monolitik oxuma tələbləri: Standart JSON parserləri Document Object Model (DOM) yaratmaq üçün bütün faylı yaddaşa yükləməlidir. Bir atributu oxumaq bütün xüsusiyyətlərin parsinqini tələb edir.
GeoParquet: Sütun-Orientasiyalı, İkili-Kodlu Məlumat
GeoParquet birbaşa Apache Parquet-in üzərində qurulur, məkan cədvəllərini sətir‑sətir deyil, sütun‑sütun saxlayır.
county kimi atributlar ardıcıl bloklarda saxlanılır, bu da run-length encoding (RLE), bit-packing və lüğət sıxması kimi qabaqcıl sıxma texnikalarına imkan verir. Geometriya məlumatları Well-Known Binary (WKB) kimi standartlaşdırılır, məkan istinad sistemləri (CRS), hədd qutuları və geometriya növlərini izah edən daxil edilmiş JSON metadata ilə birlikdə.
Çünki GeoParquet ikili və sütunlu formatdadır:
- Sıfır Koordinat Parsinq Xərci: Geometrilər birbaşa ikili formada saxlanılır, bahalı string‑dən‑float‑a çevirmələri ötürür.
- Proyeksiya İtələməsi: Əgər aşağı axın iş axınınız yalnız
countyvəpop_densitysütunlarını tələb edirsə, oxuyucu diskin və ya S3-ün yalnız həmin bayt ofsetlərini alır, geometriya sütununu tamamilə ötürür. - Sətir‑Qrup Bölməsi: Parquet faylları qeydləri öz‑özünə tam “Row Groups” (adətən hər biri 100,000‑dən 1,000,000‑ə qədər sətir) bölür, hər sütun üçün min/max statistikaları ilə tam.
2. Üz-Üzə Müqayisə: Əsas Ölçülər
| Evaluation Metric | GeoJSON | GeoParquet |
|---|---|---|
| Data Format | Plain-text JSON (UTF-8) | Binary columnar (Apache Parquet) |
| Geometry Representation | Nested arrays of coordinate strings | Standardized Well-Known Binary (WKB) |
| Compression Ratio | Poor (requires gzip/bzip2 to reduce) | Exceptional (native Zstd, Snappy, Gzip) |
| Column Projection | ❌ No (entire record must be parsed) | ✅ Yes (fetch only the columns you need) |
| Spatial Predicate Pushdown | ❌ No (requires full scan) | ✅ Yes (using bounding box metadata) |
| Cloud Object Storage (S3/GCS) | ❌ Poor (must download full file) | ✅ Cloud-native (supports HTTP range requests) |
| Human Readability | ✅ Direct viewing in text editors | ❌ Requires CLI, GIS app, or code |
| Web Browser Support | Native JavaScript (JSON.parse) | Requires WebAssembly (e.g., duckdb-wasm, parquet-wasm) |
| Standardization Body | IETF (RFC 7946) | OGC (Open Geospatial Consortium standard) |
3. Saxlama Səmərəliliyi və Fayl Ölçüsü Benchmarkları
Milyonlarla qeydlərə keçərkən, saxlanma fərqlilikləri kəskin şəkildə artır.
Real-world açıq məkan qeydləri (məsələn, OpenStreetMap bina konturları, ABŞ Sayım TIGER sərhədləri və qlobal gəmi AIS qeydləri) istifadə edən standart benchmarklarda, GeoParquet xam GeoJSON ilə müqayisədə 70%‑dən 85%‑ə qədər saxlanma azaldılması əldə edir və .geojson.gz‑ni əlavə 20%‑dən 40%‑ə qədər üstələyir.
GeoParquet niyə bu qədər kiçikdir?
- Dictionary Encoding: Təkrarlanan string atributları (məsələn, dövlət kodları, torpaq istifadəsi təsnifatları) uzun stringlər kimi təkrar saxlanmaq əvəzinə kiçik tam ədədlər göstəricilərinə indekslənir.
- Compact Binary Coordinates: GeoJSON‑də 2D nöqtə təxminən 30‑dan 45‑ə qədər ASCII bayt (
[-122.4194155, 37.7749295]) tutar. WKB‑də isə eyni koordinat cütü dəqiq 16 bayt tələb edir. - Modern Compression Algorithms: Zstandard (
Zstd) və Snappy sütunlu bayt massivlərini standart Gzip‑in qarışıq sətir‑əsaslı mətnləri sıxmasından çox daha effektiv şəkildə sıxır.
4. Sorğu Performansı və Bulud-Doğma İş Axınları
Böyük məlumat dəstələri üçün ən böyük fərqləndirici yalnız saxlanma deyil — sorğu gecikməsi və yaddaş istifadəsi.
1. Sütun Proyeksiyası ilə Seçici Oxuma
15 GB ölçülü milli parcel datasetini təsəvvür edin, 60 atribut (sahib adları, vergi ID-ləri, sənəd tarixi, zonalaşdırma kodları və mürəkkəb çoxbucaqlı sərhədlər) ehtiva edir.
- GeoJSON-də: Əgər poçt kodu üzrə orta qiymətləndirilmiş əmlak dəyərini hesablamaq istəyirsinizsə, analitik mühərrikiniz bütün 15 GB-ı, milyonlarla mürəkkəb sərhəd vertexlərini də daxil olmaqla, yükləməli və təhlil etməlidir.
- GeoParquet-də: DuckDB, Apache Sedona, Polars və ya AWS Athena kimi analitik mühərriklər yalnız
zip_codevəassessed_valuesütunlarını oxuyur. 15 GB köçürmək əvəzinə, mühərrikiniz 80 MB-dan azını yükləyir və skan edir.
2. Bulud Saxlamasında HTTP Aralıq Sorğuları
GeoParquet problemsiz bulud-yerli coğrafi format kimi işləyir.
Parquet faylları daxili offsetləri və metadata‑ları faylın alt hissəsində saxladığı üçün, müştəri kitabxanaları Amazon S3, Google Cloud Storage və ya Azure Blob Storage kimi bulud obyekt anbarlarına HTTP GET Range: bytes=... sorğuları göndərə bilər. Bütün çox-gigabaytlıq faylı yükləmək əvəzinə, müştəri alt hissəni oxuyur, müvafiq qeydlərin yerləşdiyi dəqiq byte offsetlərini müəyyən edir və yalnız lazım olan alt hissələri yükləyir.
Client (DuckDB / Python / QGIS)
│
├── 1. Read footer metadata (HTTP Range Request) ───► Cloud Storage (S3 / GCS)
│ │
◄── 2. Returns column offsets & row-group stats ───────────────┘
│
├── 3. Read ONLY requested column chunks & ranges ─────────────►
│ │
◄── 4. Fast binary stream (minimal I/O & egress) ──────────────┘
5. Proqram Təminatı Ekosistemi və Alət Dəstəyi
Tarixən, GeoJSON-un əsas üstünlüyü universal alət dəstəyi idi. Bu, brauzer mühitləri üçün hələ də doğru olsa da, GeoParquet ekosistemi sürətlə inkişaf edib:
- Desktop GIS: QGIS 3.28+, ArcGIS Pro və GDAL/OGR 3.5+ üçün yerli oxuma/yazma dəstəyi.
- Analytical Engines & Languages: Python (
GeoPandas,pyarrow), R (sf), DuckDB (məkan uzantısı vasitəsilə), Apache Sedona və Snowflake üzrə sürətli vektorlaşdırılmış oxuma/yazma imkanları. - Big Data Pipelines: Apache Spark, Trino, Presto və Databricks üzrə yerli inteqrasiya.
- Client-Side Web Maps: Yüngül WebAssembly kitabxanaları (məsələn,
parquet-wasmvəduckdb-wasm) indi veb brauzerlərin GeoParquet fayllarını birbaşa müştəri cihazlarında sorğu etməsinə imkan verir, ayrıca xüsusi GIS ara proqram serverinə ehtiyac qalmır.
6. Praktik Qərar Matrisi: Hansi Hallarda Hansını İstifadə Etmək?
Dataset Size & Use Case
│
┌─────────────────────────────┴─────────────────────────────┐
▼ ▼
Under 50–100 MB Over 100 MB
(API payloads, simple maps) (Data warehousing, big data)
│ │
▼ ▼
Use **GeoJSON** Use **GeoParquet**
• Direct Mapbox/Leaflet integration • High compression ratios
• Human-readable inspection • Sub-second analytical queries
• Standard REST API responses • Direct S3/GCS HTTP range reads
GeoJSON-i Seçin Əgər:
- Məlumat dəstəniz 50 MB-dən 100 MB-ə qədərdir.
- REST API-dən ön tərəf müştərilərinə yüngül yük cavabları göndərirsiniz.
- Leaflet, MapLibre və ya Mapbox GL JS istifadə edərək aralıq tərcümə qatları olmadan yüngül veb xəritələr yaradırsınız.
- Siz standart kod və ya mətn redaktorunda sürətli əl redaktəsi və ya yoxlamaya ehtiyacınız var.
GeoParquet-i Seçin Əgər:
- Məlumat dəstəniz 100 MB-dan çoxdur və ya yüz minlərlə mürəkkəb məkan xüsusiyyətləri ehtiva edir.
- Siz vektor aktivlərini bulud obyekt saxlama sistemində (S3, GCS, MinIO, Azure Blob) saxlayırsınız.
- Siz Python, DuckDB, Spark və ya Databricks istifadə edərək məkan SQL analitikası, xüsusiyyət mühəndisliyi və ya maşın öyrənməsi boru kəmərləri işlədirsiniz.
- Siz saxlanma xərclərini azaltmaq, şəbəkə çıxış haqlarından çəkinmək və yaddaş çöküşlərini aradan qaldırmaq istəyirsiniz.
7. Miqrasiya Nümunəsi: GeoJSON‑i GeoParquet‑ə Çevirmək
Mövcud məkan aktivlərini GeoParquet-ə çevirmək yalnız bir neçə kod sətiri tələb edir.
Python‑dan İstifadə (GeoPandas)
import geopandas as gpd
# 1. Read the legacy GeoJSON file
gdf = gpd.read_file("large_boundaries.geojson")
# 2. Write directly to GeoParquet using modern Zstandard compression
gdf.to_parquet("large_boundaries.parquet", compression="zstd")
GDAL / OGR‑dan İstifadə (CLI)
ogr2ogr -f Parquet \
-oo LCO:COMPRESSION=ZSTD \
large_boundaries.parquet \
large_boundaries.geojson
DuckDB-dən istifadə
INSTALL spatial;
LOAD spatial;
-- Direct convert via SQL
COPY (
SELECT * FROM ST_Read('large_boundaries.geojson')
) TO 'large_boundaries.parquet'
WITH (FORMAT PARQUET, COMPRESSION 'ZSTD');
8. Xülasə: Böyük Məlumat Dəstləri Üzərində Qərar
Kiçik məlumat dəstləri və birbaşa veb son nöqtələri üçün GeoJSON etibarlı, çətinliksiz bir utilitar format olaraq qalır.
Lakin, böyük məlumat dəstləri üçün GeoParquet hər bir əməliyyat kateqoriyasında obyektiv olaraq üstünlük təşkil edir. O, daha kiçik fayl ölçüləri, əhəmiyyətli dərəcədə aşağı saxlanma yükü, demək olar ki, anlıq məkan oxumaları və müasir bulud məlumat anbarları ilə yerli inteqrasiya təmin edir.
Əgər coğrafi məlumat boru kəmərləriniz həddindən böyük GeoJSON fayllarının ağırlığı altında əzilir, GeoParquet-ə keçmək edə biləcəyiniz ən təsirli infrastruktur təkmilləşdirmələrdən biridir.
Tez-tez Soruşulan Suallar (FAQ)
Q1. GeoParquet rəsmi tanınmış GIS standartıdır? Bəli, GeoParquet Açıq Coğrafi Məlumat Konsorsiumunun (OGC) rəhbərliyi altında saxlanılan rəsmi açıq standartdır.
Q2. GeoParquet faylını birbaşa Leaflet və ya Mapbox GL JS kimi veb xəritələmə kitabxanalarında göstərə bilərəm? GeoJSON kimi təbii olaraq pars edilməsə də, parquet-wasm kimi WebAssembly paketləri vasitəsilə və ya faylları qəbul zamanı Vector Tiles (PMTiles/MVT) formatına çevirərək brauzerlərdə GeoParquet göstərə bilərsiniz.
Q3. GeoParquet bir neçə koordinat istinad sistemini (CRS) dəstəkləyir? Bəli, GeoJSON-un (RFC 7946 tərəfindən WGS 84 / EPSG:4326 ilə məhdudlaşdırıldığı) fərqli olaraq, GeoParquet öz daxil edilmiş fayl metadata-sında birbaşa xüsusi CRS təriflərinə icazə verir.
S4. GeoParquet, böyük məkan məlumat dəstləri üçün FlatGeobuf ilə necə müqayisə olunur? FlatGeobuf, R-Tree məkan indeksləşdirməsindən istifadə edərək interaktiv veb xəritələrə məkan xüsusiyyətlərini birbaşa axınlaşdırmaq üçün optimallaşdırılıb, GeoParquet isə yüksək performanslı sütunlu analiz, sıxışdırma və böyük məlumat gölü anbarçılığı üçün nəzərdə tutulmuşdur.
S5. GeoParquet fayllarını QGIS kimi masaüstü GIS proqramları içində aça bilərəm? Bəli, QGIS-in müasir versiyaları (3.28 və yuxarı) GeoParquet fayllarını sürükləyib buraxmaq, görüntüləmək və stil vermək üçün üçüncü tərəf plaginlərinə ehtiyac olmadan dəstəkləyir.
Baxın
FileFormat.com saytındakı GIS Fayl Formatları