@geoalgeria/culture 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025-2026 Yasser's Studio (https://yasser.studio)
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.ar.md ADDED
@@ -0,0 +1,190 @@
1
+ [English](README.md) | [Français](README.fr.md) | **العربية**
2
+
3
+ <div align="center">
4
+
5
+ # @geoalgeria/culture
6
+
7
+ **الأطلس الثقافي للجزائر — كبيانات قابلة للتثبيت.**
8
+
9
+ [![npm](https://img.shields.io/npm/v/@geoalgeria/culture)](https://www.npmjs.com/package/@geoalgeria/culture)
10
+ [![npm downloads](https://img.shields.io/npm/dm/@geoalgeria/culture)](https://www.npmjs.com/package/@geoalgeria/culture)
11
+ [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)
12
+
13
+ </div>
14
+
15
+ **1083 موقعًا ثقافيًا** عبر **66 ولاية من أصل 69 في الجزائر** — الممتلكات الثقافية
16
+ المحمية، والمتاحف، والمسارح، والمكتبات، والمؤسسات الثقافية (دور وقصور الثقافة،
17
+ وقاعات السينما، ومديريات الثقافة، ومدارس الفنون) من أطلس *خريطة التراث الثقافي
18
+ الجزائري* التابع لـ**وزارة الثقافة**، **ثنائية اللغة 100%** عربي/فرنسي و**كاملة
19
+ الإحداثيات** (كل موقع يحمل إحداثية مصدرية). متوفر بصيغ JSON وCSV وGeoJSON
20
+ وTypeScript. جزء من [GeoAlgeria](https://github.com/yasserstudio/geoalgeria).
21
+
22
+ ```bash
23
+ npm install @geoalgeria/culture
24
+ ```
25
+
26
+ ```js
27
+ import culture from "@geoalgeria/culture";
28
+
29
+ const all = culture.culture(); // 1083 موقعًا ثقافيًا
30
+
31
+ // المتاحف في ولاية (ربط بـ wilaya_code في GeoAlgeria)
32
+ const museesAlger = all.filter((p) => p.wilaya_code === "16" && p.type === "museum");
33
+
34
+ // فقط الممتلكات الثقافية المحمية، جاهزة للخريطة
35
+ const patrimoine = all.filter((p) => p.category === "heritage");
36
+
37
+ // المواقع ذات الجولة الافتراضية 360°
38
+ const visites = all.filter((p) => p.has_virtual_tour);
39
+ ```
40
+
41
+ ## ما يمكنك بناؤه
42
+
43
+ - **خرائط ثقافية والبحث عن الأقرب** — لكلٍّ من المواقع الـ1083 إحداثيات، جاهزة
44
+ للخريطة أو لميزة «بالقرب مني».
45
+ - **أدلّة ثقافية ثنائية اللغة** — أسماء عربية وفرنسية، والنوع الرسمي والولاية لكل
46
+ موقع؛ مع تصفية التراث مقابل المؤسسات العاملة.
47
+ - **تطبيقات التراث والسياحة** — المواقع المحمية والمتاحف والجولات الافتراضية 360°،
48
+ مربوطة بالبلدية/الولاية لتحديد المسارات وتحليل التغطية.
49
+
50
+ ## المحتوى
51
+
52
+ | مجموعة البيانات | العدد | الإحداثيات | ملاحظات |
53
+ | --- | --- | --- | --- |
54
+ | المواقع الثقافية | **1083** | 1083 بإحداثيات | 66 ولاية، ثنائية اللغة 100%، 22 بجولة 360° |
55
+
56
+ **حسب الفئة**
57
+
58
+ | الفئة | العدد | المعنى |
59
+ | --- | --- | --- |
60
+ | `heritage` | 943 | مواقع محمية، متاحف، مسارح، مكتبات |
61
+ | `establishment` | 140 | مؤسسات ثقافية عاملة ومديريات |
62
+
63
+ **حسب النوع**
64
+
65
+ | النوع | العدد | المعنى |
66
+ | --- | --- | --- |
67
+ | `protected-cultural-property` | 580 | ممتلك ثقافي محمي — نصب/موقع محمي |
68
+ | `library` | 257 | مكتبة المطالعة العمومية |
69
+ | `museum` | 48 | متحف |
70
+ | `theatre` | 45 | مسرح |
71
+ | `museum-moudjahid` | 13 | متحف المجاهد |
72
+ | `cultural-house` | 51 | دار الثقافة |
73
+ | `cultural-directorate` | 33 | مديرية الثقافة / ديوان |
74
+ | `cinema` | 20 | قاعة سينما / سينماتيك |
75
+ | `cultural-center` | 15 | مركز ثقافي / بحثي |
76
+ | `arts-school` | 15 | مدرسة الفنون — الفنون الجميلة / معهد |
77
+ | `cultural-palace` | 6 | قصر الثقافة |
78
+
79
+ > **الأطلس رسمي؛ أما الإحداثيات فأفضل ما أمكن.** الأسماء والنوع والإحداثيات وعلامة
80
+ > الـ360° من بوابة وزارة الثقافة. الولاية دقيقة؛ أما البلدية فمُستنتَجة (انظر
81
+ > *المصدر والمنهجية*). تتغيّر الأعداد مع تحديثات البوابة.
82
+
83
+ ## الصيغ
84
+
85
+ تتضمّن حزمة npm ملف **JSON** (قابل للاستيراد مباشرة):
86
+
87
+ ```js
88
+ import culture from "@geoalgeria/culture/data/culture.json" with { type: "json" };
89
+ // أو عبر CDN، دون تثبيت:
90
+ // https://cdn.jsdelivr.net/npm/@geoalgeria/culture/data/culture.json
91
+ ```
92
+
93
+ المُحمِّلات وبنية السجلات **مُوثَّقة الأنواع** بالكامل — تعريفات TypeScript مرفقة في الحزمة:
94
+
95
+ ```ts
96
+ import culture, { type CulturalSite } from "@geoalgeria/culture";
97
+ const all: CulturalSite[] = culture.culture();
98
+ ```
99
+
100
+ ملفّا **CSV وGeoJSON** موجودان في المستودع ضمن [`data/`](data) ومُرفقان في كل
101
+ [إصدار على GitHub](https://github.com/yasserstudio/geoalgeria/releases):
102
+
103
+ ```
104
+ data/
105
+ culture.json # 1083 موقعًا ثقافيًا (مصفوفة)
106
+ metadata.json # المصادر، الأعداد، التغطية، generated_at
107
+ csv/culture.csv # المستودع + الإصدار
108
+ geojson/culture.geojson # معالم نقطية (كل السجلات)
109
+ ```
110
+
111
+ ## بنية السجل
112
+
113
+ ```json
114
+ {
115
+ "id": "16-museum-03",
116
+ "name": "Musée national Public d'art moderne et contemporain",
117
+ "name_ar": "المتحف العمومي الوطني للفن الحديث و المعاصر",
118
+ "name_fr": "Musée national Public d'art moderne et contemporain",
119
+ "type": "museum",
120
+ "category": "heritage",
121
+ "type_label_fr": "Musée",
122
+ "type_label_ar": "متحف",
123
+ "has_virtual_tour": true,
124
+ "wilaya": "Alger",
125
+ "wilaya_ar": "الجزائر",
126
+ "wilaya_code": "16",
127
+ "commune": "Casbah",
128
+ "commune_code": 1607,
129
+ "source": "patrimoineculturel",
130
+ "geo_precision": "source_point",
131
+ "url": "https://cartes.patrimoineculturelalgerien.org/fr/node/101",
132
+ "node_id_fr": 101,
133
+ "node_id_ar": 817,
134
+ "slug": "musee-national-public-d-art-moderne-et-contemporain",
135
+ "lat": 36.777301,
136
+ "lng": 3.057572
137
+ }
138
+ ```
139
+
140
+ `id` مفتاح ثابت `{wilaya_code}-{type_code}-{seq}` يولّده GeoAlgeria. `name` هو
141
+ الاسم الفرنسي إن وُجد، وإلا العربي. `type` هو طبقة الموقع على البوابة، و`category`
142
+ يجمع الأنواع الـ11 في `heritage` مقابل `establishment`. `has_virtual_tour` يساوي
143
+ `true` للمواقع الـ22 ذات الجولة 360°. `geo_precision` يساوي `"source_point"` لكل
144
+ سجل.
145
+
146
+ > **الولاية دقيقة؛ أما البلدية فمُستنتَجة.** لا تزال البوابة تصنّف بعض المواقع تحت
147
+ > رموز ولايات ما قبل 2019؛ يعيد GeoAlgeria إسناد كل موقع إلى التقسيم الحالي البالغ
148
+ > 69 ولاية بمطابقة إحداثيته لأقرب مركز ثقل بلدية في
149
+ > [`geoalgeria`](https://www.npmjs.com/package/geoalgeria) (الذي يوفّر أيضًا
150
+ > `commune`/`commune_code`). البلدية تقريبية (الحزمة الرئيسية توفّر مراكز ثقل لا
151
+ > مضلّعات حدود).
152
+
153
+ ## تحتاج التقسيمات الإدارية أيضًا؟
154
+
155
+ للولايات والدوائر والبلديات، استخدم الحزمة الرئيسية
156
+ **[`geoalgeria`](https://www.npmjs.com/package/geoalgeria)** — بها تحوّل
157
+ `commune_code` لموقعٍ ما إلى مضلّع أو مركز ثقل. استخدم `@geoalgeria/culture` عندما
158
+ تحتاج المواقع الثقافية *فقط*.
159
+
160
+ ## المصدر والمنهجية
161
+
162
+ شغّل `npm run fetch` لإعادة توليد المخرجات. يقوم السكربت بـ:
163
+
164
+ 1. قراءة الأطلس الثقافي ثنائي اللغة المُنسَّق (المُجمَّع والمُترجَم من بوابة
165
+ `cartes.patrimoineculturelalgerien.org` التابعة لوزارة الثقافة — كتالوجا
166
+ البوابة الفرنسي والعربي مجموعتا عُقَد منفصلتان، تُوحَّدان بتقارب الإحداثيات
167
+ وتُترجَمان لسدّ الفجوات الثنائية)؛
168
+ 2. **إعادة إسناد** كل موقع إلى التقسيم الحالي البالغ 69 ولاية وربط
169
+ `commune`/`commune_code` به بمطابقته لأقرب مركز ثقل بلدية في `geoalgeria`؛
170
+ 3. إسناد معرّفات ثابتة، وإزالة العُقَد المكرّرة، وإنتاج JSON وCSV وGeoJSON
171
+ والبيانات الوصفية.
172
+
173
+ المصدر المُنسَّق وملاحظات الاستخراج تحت
174
+ [`research/patrimoine/`](https://github.com/yasserstudio/geoalgeria/tree/main/research/patrimoine).
175
+
176
+ ## الترخيص والإسناد
177
+
178
+ **شيفرة** الحزمة بترخيص [MIT](LICENSE). أما **البيانات** فهي قائمة واقعية عمومية
179
+ من بوابة التراث الثقافي لـ**وزارة الثقافة** (الأسماء والأنواع والإحداثيات وجولات
180
+ 360° كما نُشرت). ربط البلدية/الولاية مُستنتَج من المجموعة الإدارية
181
+ [`geoalgeria`](https://www.npmjs.com/package/geoalgeria).
182
+
183
+ تحقّق من المصادر الرسمية للمعلومات الموثوقة. تُقدَّم هذه البيانات للمرجعية ولتشغيل
184
+ [GeoAlgeria](https://geoalgeria.com).
185
+
186
+ [توثيق API والحقول →](https://geoalgeria.com/data/docs/culture) · [تصفّح كل الحزم →](https://geoalgeria.com/data)
187
+
188
+ ---
189
+
190
+ من إنجاز [Yasser's Studio](https://yasser.studio) · [LinkedIn](https://www.linkedin.com/in/yasserberrehail/) · [X](https://x.com/yassersstudio) · [hello@yasser.studio](mailto:hello@yasser.studio)
package/README.fr.md ADDED
@@ -0,0 +1,196 @@
1
+ [English](README.md) | **Français** | [العربية](README.ar.md)
2
+
3
+ <div align="center">
4
+
5
+ # @geoalgeria/culture
6
+
7
+ **L'atlas culturel de l'Algérie — sous forme de données prêtes à installer.**
8
+
9
+ [![npm](https://img.shields.io/npm/v/@geoalgeria/culture)](https://www.npmjs.com/package/@geoalgeria/culture)
10
+ [![npm downloads](https://img.shields.io/npm/dm/@geoalgeria/culture)](https://www.npmjs.com/package/@geoalgeria/culture)
11
+ [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)
12
+
13
+ </div>
14
+
15
+ **1 083 lieux culturels** dans **66 des 69 wilayas d'Algérie** — biens culturels
16
+ protégés, musées, théâtres, bibliothèques et établissements culturels (maisons et
17
+ palais de la culture, salles de cinéma, directions de la culture, écoles d'art) de
18
+ l'atlas *Cartes du Patrimoine Culturel Algérien* du **Ministère de la Culture**,
19
+ **100 % bilingues** français/arabe et **entièrement géolocalisés** (chaque lieu
20
+ porte une coordonnée source). Livré en JSON, CSV, GeoJSON et TypeScript. Fait
21
+ partie de [GeoAlgeria](https://github.com/yasserstudio/geoalgeria).
22
+
23
+ ```bash
24
+ npm install @geoalgeria/culture
25
+ ```
26
+
27
+ ```js
28
+ import culture from "@geoalgeria/culture";
29
+
30
+ const all = culture.culture(); // 1 083 lieux culturels
31
+
32
+ // Musées d'une wilaya (jointure sur le wilaya_code de GeoAlgeria)
33
+ const museesAlger = all.filter((p) => p.wilaya_code === "16" && p.type === "museum");
34
+
35
+ // Uniquement les biens culturels protégés, prêts pour une carte
36
+ const patrimoine = all.filter((p) => p.category === "heritage");
37
+
38
+ // Les lieux dotés d'une visite virtuelle à 360°
39
+ const visites = all.filter((p) => p.has_virtual_tour);
40
+ ```
41
+
42
+ ## Ce que vous pouvez construire
43
+
44
+ - **Cartes culturelles & recherche de proximité** — chacun des 1 083 lieux a des
45
+ coordonnées, prêtes pour une carte ou une fonction « à proximité ».
46
+ - **Annuaires culturels bilingues** — noms français et arabe, type officiel et
47
+ wilaya pour chaque lieu ; filtrer patrimoine vs établissements en activité.
48
+ - **Applications patrimoine & tourisme** — sites protégés, musées et visites
49
+ virtuelles à 360°, rattachés à la commune/wilaya pour l'itinéraire et l'analyse.
50
+
51
+ ## Contenu
52
+
53
+ | Jeu de données | Nombre | Coordonnées | Notes |
54
+ | --- | --- | --- | --- |
55
+ | Lieux culturels | **1 083** | 1 083 géolocalisés | 66 wilayas, 100 % bilingues, 22 visites 360° |
56
+
57
+ **Par catégorie**
58
+
59
+ | Catégorie | Nombre | Signification |
60
+ | --- | --- | --- |
61
+ | `heritage` | 943 | sites protégés, musées, théâtres, bibliothèques |
62
+ | `establishment` | 140 | lieux culturels en activité & directions |
63
+
64
+ **Par type**
65
+
66
+ | Type | Nombre | Signification |
67
+ | --- | --- | --- |
68
+ | `protected-cultural-property` | 580 | Bien culturel protégé — monument/site protégé |
69
+ | `library` | 257 | Bibliothèque de lecture publique |
70
+ | `museum` | 48 | Musée |
71
+ | `theatre` | 45 | Théâtre |
72
+ | `museum-moudjahid` | 13 | Musée du Moudjahid |
73
+ | `cultural-house` | 51 | Maison de la culture |
74
+ | `cultural-directorate` | 33 | Direction de la culture / office |
75
+ | `cinema` | 20 | Salle de cinéma / cinémathèque |
76
+ | `cultural-center` | 15 | Centre culturel / de recherche |
77
+ | `arts-school` | 15 | École d'art — beaux-arts / conservatoire |
78
+ | `cultural-palace` | 6 | Palais de la culture |
79
+
80
+ > **L'atlas est officiel ; les coordonnées sont au mieux.** Les noms, le type, les
81
+ > coordonnées et le drapeau 360° proviennent du portail du Ministère de la
82
+ > Culture. La wilaya est exacte ; la commune est dérivée (voir *Source &
83
+ > méthode*). Les totaux évoluent au gré des mises à jour du portail.
84
+
85
+ ## Formats
86
+
87
+ Le paquet npm fournit le **JSON** (importable directement) :
88
+
89
+ ```js
90
+ import culture from "@geoalgeria/culture/data/culture.json" with { type: "json" };
91
+ // ou via CDN, sans installation :
92
+ // https://cdn.jsdelivr.net/npm/@geoalgeria/culture/data/culture.json
93
+ ```
94
+
95
+ Les chargeurs et les enregistrements sont entièrement **typés** — les définitions TypeScript sont incluses :
96
+
97
+ ```ts
98
+ import culture, { type CulturalSite } from "@geoalgeria/culture";
99
+ const all: CulturalSite[] = culture.culture();
100
+ ```
101
+
102
+ Les **CSV et GeoJSON** sont dans le dépôt sous [`data/`](data) et inclus dans
103
+ chaque [GitHub Release](https://github.com/yasserstudio/geoalgeria/releases) :
104
+
105
+ ```
106
+ data/
107
+ culture.json # 1 083 lieux culturels (tableau)
108
+ metadata.json # sources, totaux, couverture, generated_at
109
+ csv/culture.csv # dépôt + Release
110
+ geojson/culture.geojson # entités Point (chaque enregistrement)
111
+ ```
112
+
113
+ ## Structure d'un enregistrement
114
+
115
+ ```json
116
+ {
117
+ "id": "16-museum-03",
118
+ "name": "Musée national Public d'art moderne et contemporain",
119
+ "name_ar": "المتحف العمومي الوطني للفن الحديث و المعاصر",
120
+ "name_fr": "Musée national Public d'art moderne et contemporain",
121
+ "type": "museum",
122
+ "category": "heritage",
123
+ "type_label_fr": "Musée",
124
+ "type_label_ar": "متحف",
125
+ "has_virtual_tour": true,
126
+ "wilaya": "Alger",
127
+ "wilaya_ar": "الجزائر",
128
+ "wilaya_code": "16",
129
+ "commune": "Casbah",
130
+ "commune_code": 1607,
131
+ "source": "patrimoineculturel",
132
+ "geo_precision": "source_point",
133
+ "url": "https://cartes.patrimoineculturelalgerien.org/fr/node/101",
134
+ "node_id_fr": 101,
135
+ "node_id_ar": 817,
136
+ "slug": "musee-national-public-d-art-moderne-et-contemporain",
137
+ "lat": 36.777301,
138
+ "lng": 3.057572
139
+ }
140
+ ```
141
+
142
+ `id` est une clé stable `{wilaya_code}-{type_code}-{seq}` synthétisée par
143
+ GeoAlgeria. `name` est le nom français s'il existe, sinon l'arabe. `type` est la
144
+ couche du lieu sur le portail ; `category` regroupe les 11 types en `heritage` vs
145
+ `establishment`. `has_virtual_tour` vaut `true` pour les 22 lieux dotés d'une
146
+ visite 360°. `geo_precision` vaut `"source_point"` pour chaque enregistrement.
147
+
148
+ > **La wilaya est exacte ; la commune est dérivée.** Le portail classe encore
149
+ > certains lieux sous d'anciens codes de wilaya ; GeoAlgeria les réaffecte au
150
+ > découpage actuel à 69 wilayas en rattachant chaque coordonnée au centroïde de
151
+ > commune [`geoalgeria`](https://www.npmjs.com/package/geoalgeria) le plus proche
152
+ > (qui fournit aussi `commune`/`commune_code`). La commune est approximative (le
153
+ > paquet principal fournit des centroïdes, pas des polygones de limites).
154
+
155
+ ## Besoin des divisions administratives ?
156
+
157
+ Pour les wilayas, dairas et communes, utilisez le paquet principal
158
+ **[`geoalgeria`](https://www.npmjs.com/package/geoalgeria)** — c'est ce qui
159
+ transforme le `commune_code` d'un lieu en polygone ou centroïde. Utilisez
160
+ `@geoalgeria/culture` quand vous n'avez besoin *que* des lieux culturels.
161
+
162
+ ## Source & méthode
163
+
164
+ Lancez `npm run fetch` pour régénérer les sorties. Le script :
165
+
166
+ 1. lit l'atlas culturel bilingue curé (assemblé et traduit depuis le portail
167
+ `cartes.patrimoineculturelalgerien.org` du Ministère de la Culture — les
168
+ catalogues français et arabe du portail sont des ensembles de nœuds disjoints,
169
+ unis par proximité de coordonnées et traduits pour combler les manques
170
+ bilingues) ;
171
+ 2. **réaffecte** chaque lieu au découpage actuel à 69 wilayas et lui rattache une
172
+ `commune`/`commune_code` en le rapprochant du centroïde de commune `geoalgeria`
173
+ le plus proche ;
174
+ 3. attribue des identifiants stables, retire les nœuds en double, et produit le
175
+ JSON, le CSV, le GeoJSON et les métadonnées.
176
+
177
+ La source curée et les notes d'extraction sont sous
178
+ [`research/patrimoine/`](https://github.com/yasserstudio/geoalgeria/tree/main/research/patrimoine).
179
+
180
+ ## Licence & attribution
181
+
182
+ Le **code** du paquet est sous [MIT](LICENSE). Les **données** sont une liste
183
+ factuelle publique du portail du patrimoine culturel du **Ministère de la
184
+ Culture** (noms, types, coordonnées et visites 360° tels que publiés). Le
185
+ rattachement commune/wilaya est dérivé du jeu administratif
186
+ [`geoalgeria`](https://www.npmjs.com/package/geoalgeria).
187
+
188
+ Vérifiez auprès des sources officielles pour toute information faisant foi. Ce jeu
189
+ de données est fourni à titre de référence et pour alimenter
190
+ [GeoAlgeria](https://geoalgeria.com).
191
+
192
+ [Docs API & champs →](https://geoalgeria.com/data/docs/culture) · [Tous les paquets →](https://geoalgeria.com/data)
193
+
194
+ ---
195
+
196
+ Réalisé par [Yasser's Studio](https://yasser.studio) · [LinkedIn](https://www.linkedin.com/in/yasserberrehail/) · [X](https://x.com/yassersstudio) · [hello@yasser.studio](mailto:hello@yasser.studio)
package/README.md ADDED
@@ -0,0 +1,194 @@
1
+ **English** | [Français](README.fr.md) | [العربية](README.ar.md)
2
+
3
+ <div align="center">
4
+
5
+ # @geoalgeria/culture
6
+
7
+ **Algeria's cultural atlas — as data you can install.**
8
+
9
+ [![npm](https://img.shields.io/npm/v/@geoalgeria/culture)](https://www.npmjs.com/package/@geoalgeria/culture)
10
+ [![npm downloads](https://img.shields.io/npm/dm/@geoalgeria/culture)](https://www.npmjs.com/package/@geoalgeria/culture)
11
+ [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)
12
+
13
+ </div>
14
+
15
+ **1,083 cultural places** across **66 of Algeria's 69 wilayas** — protected
16
+ heritage sites, museums, theatres, libraries and cultural establishments (maisons
17
+ & palais de la culture, cinemas, culture directorates, arts schools) from the
18
+ **Ministry of Culture's** *Cartes du Patrimoine Culturel Algérien* atlas,
19
+ **100% bilingual** French/Arabic and **fully geocoded** (every place carries a
20
+ source coordinate). Shipped as JSON, CSV, GeoJSON, and TypeScript. Part of
21
+ [GeoAlgeria](https://github.com/yasserstudio/geoalgeria).
22
+
23
+ ```bash
24
+ npm install @geoalgeria/culture
25
+ ```
26
+
27
+ ```js
28
+ import culture from "@geoalgeria/culture";
29
+
30
+ const all = culture.culture(); // 1,083 cultural places
31
+
32
+ // Museums in a wilaya (joins GeoAlgeria's wilaya_code)
33
+ const museumsAlger = all.filter((p) => p.wilaya_code === "16" && p.type === "museum");
34
+
35
+ // Just the protected heritage sites, ready to map
36
+ const heritage = all.filter((p) => p.category === "heritage");
37
+
38
+ // Places with a 360° virtual tour
39
+ const tours = all.filter((p) => p.has_virtual_tour);
40
+ ```
41
+
42
+ ## What you can build
43
+
44
+ - **Cultural maps & nearest-place search** — every one of the 1,083 places has
45
+ coordinates, ready for a map or a "what's near me" feature.
46
+ - **Bilingual cultural directories** — French and Arabic names, official type and
47
+ wilaya for every place; filter heritage vs. operating establishments.
48
+ - **Heritage & tourism apps** — protected sites, museums and 360° virtual tours,
49
+ linked to commune/wilaya for routing and coverage analysis.
50
+
51
+ ## What's inside
52
+
53
+ | Dataset | Count | Coordinates | Notes |
54
+ | --- | --- | --- | --- |
55
+ | Cultural places | **1,083** | 1,083 geocoded | 66 wilayas, 100% bilingual, 22 with 360° tours |
56
+
57
+ **By category**
58
+
59
+ | Category | Count | Meaning |
60
+ | --- | --- | --- |
61
+ | `heritage` | 943 | protected sites, museums, theatres, libraries |
62
+ | `establishment` | 140 | operating cultural venues & directorates |
63
+
64
+ **By type**
65
+
66
+ | Type | Count | Meaning |
67
+ | --- | --- | --- |
68
+ | `protected-cultural-property` | 580 | Bien culturel protégé — protected monument/site |
69
+ | `library` | 257 | Bibliothèque — public reading library |
70
+ | `museum` | 48 | Musée — museum |
71
+ | `theatre` | 45 | Théâtre — theatre |
72
+ | `museum-moudjahid` | 13 | Musée du Moudjahid — museum of the war of independence |
73
+ | `cultural-house` | 51 | Maison de la culture |
74
+ | `cultural-directorate` | 33 | Direction de la culture — wilaya culture directorate/office |
75
+ | `cinema` | 20 | Salle de cinéma — cinema / cinematheque |
76
+ | `cultural-center` | 15 | Centre culturel — cultural / research centre |
77
+ | `arts-school` | 15 | École d'art — fine-arts school / conservatory |
78
+ | `cultural-palace` | 6 | Palais de la culture |
79
+
80
+ > **The atlas is official; treat the coordinates as best-effort.** Names, type,
81
+ > coordinates and the 360° flag come from the Ministry of Culture's portal. Wilaya
82
+ > is exact; commune is derived (see *Source & method*). Counts move as the portal
83
+ > is edited; each rebuild reflects its current state.
84
+
85
+ ## Formats
86
+
87
+ The npm package ships the **JSON** (importable directly):
88
+
89
+ ```js
90
+ import culture from "@geoalgeria/culture/data/culture.json" with { type: "json" };
91
+ // or via CDN, no install:
92
+ // https://cdn.jsdelivr.net/npm/@geoalgeria/culture/data/culture.json
93
+ ```
94
+
95
+ The loaders and record shapes are fully **typed** — TypeScript definitions ship in the package:
96
+
97
+ ```ts
98
+ import culture, { type CulturalSite } from "@geoalgeria/culture";
99
+ const all: CulturalSite[] = culture.culture();
100
+ ```
101
+
102
+ **CSV and GeoJSON** are in the repo under [`data/`](data) and bundled in every
103
+ [GitHub Release](https://github.com/yasserstudio/geoalgeria/releases):
104
+
105
+ ```
106
+ data/
107
+ culture.json # 1,083 cultural places (array)
108
+ metadata.json # sources, counts, coverage, generated_at
109
+ csv/culture.csv # repo + Release bundle
110
+ geojson/culture.geojson # Point features (every record)
111
+ ```
112
+
113
+ ## Record shape
114
+
115
+ ```json
116
+ {
117
+ "id": "16-museum-03",
118
+ "name": "Musée national Public d'art moderne et contemporain",
119
+ "name_ar": "المتحف العمومي الوطني للفن الحديث و المعاصر",
120
+ "name_fr": "Musée national Public d'art moderne et contemporain",
121
+ "type": "museum",
122
+ "category": "heritage",
123
+ "type_label_fr": "Musée",
124
+ "type_label_ar": "متحف",
125
+ "has_virtual_tour": true,
126
+ "wilaya": "Alger",
127
+ "wilaya_ar": "الجزائر",
128
+ "wilaya_code": "16",
129
+ "commune": "Casbah",
130
+ "commune_code": 1607,
131
+ "source": "patrimoineculturel",
132
+ "geo_precision": "source_point",
133
+ "url": "https://cartes.patrimoineculturelalgerien.org/fr/node/101",
134
+ "node_id_fr": 101,
135
+ "node_id_ar": 817,
136
+ "slug": "musee-national-public-d-art-moderne-et-contemporain",
137
+ "lat": 36.777301,
138
+ "lng": 3.057572
139
+ }
140
+ ```
141
+
142
+ `id` is a stable `{wilaya_code}-{type_code}-{seq}` key synthesized by GeoAlgeria.
143
+ `name` is the French name where available, else Arabic. `type` is the place's
144
+ layer on the portal; `category` groups the 11 types into `heritage` vs.
145
+ `establishment`. `has_virtual_tour` is true for the 22 places with a 360° tour.
146
+ `geo_precision` is `"source_point"` for every record — the portal publishes a
147
+ coordinate for each place.
148
+
149
+ > **Wilaya is exact; commune is derived.** The portal still files some places
150
+ > under pre-2019 wilaya codes; GeoAlgeria rescopes each place to the current
151
+ > 69-wilaya scheme by matching its coordinate to the nearest
152
+ > [`geoalgeria`](https://www.npmjs.com/package/geoalgeria) commune centroid (which
153
+ > also yields `commune`/`commune_code`). Commune is best-effort (the flagship
154
+ > ships centroids, not boundary polygons).
155
+
156
+ ## Need the administrative divisions too?
157
+
158
+ For wilayas, dairas, and communes, use the main
159
+ **[`geoalgeria`](https://www.npmjs.com/package/geoalgeria)** package — it's how
160
+ you turn a place's `commune_code` into a polygon or centroid. Use
161
+ `@geoalgeria/culture` when you *only* need the cultural places.
162
+
163
+ ## Source & method
164
+
165
+ Run `npm run fetch` to regenerate every output. It:
166
+
167
+ 1. reads the curated, bilingual cultural atlas (assembled and translated from the
168
+ Ministry of Culture's `cartes.patrimoineculturelalgerien.org` portal — the
169
+ portal's French and Arabic catalogs are disjoint node sets, unioned by
170
+ coordinate proximity and translated to fill the bilingual gaps);
171
+ 2. **rescopes** each place to the current 69-wilaya scheme and attaches a
172
+ `commune`/`commune_code` by matching its coordinate to the nearest `geoalgeria`
173
+ commune centroid;
174
+ 3. assigns stable ids, drops exact duplicate nodes, and emits JSON, CSV, GeoJSON
175
+ and metadata.
176
+
177
+ The curated source and extraction notes are under
178
+ [`research/patrimoine/`](https://github.com/yasserstudio/geoalgeria/tree/main/research/patrimoine).
179
+
180
+ ## License & attribution
181
+
182
+ Package **code** is [MIT](LICENSE). The **data** is a factual public listing from
183
+ the **Ministry of Culture's** cultural-heritage portal (names, types, coordinates
184
+ and 360° tours as published). Commune/wilaya linkage is derived from the
185
+ [`geoalgeria`](https://www.npmjs.com/package/geoalgeria) administrative dataset.
186
+
187
+ Verify against official sources for authoritative information. This dataset is
188
+ provided for reference and to power [GeoAlgeria](https://geoalgeria.com).
189
+
190
+ [API docs & field reference →](https://geoalgeria.com/data/docs/culture) · [Browse all packages →](https://geoalgeria.com/data)
191
+
192
+ ---
193
+
194
+ Made by [Yasser's Studio](https://yasser.studio) · [LinkedIn](https://www.linkedin.com/in/yasserberrehail/) · [X](https://x.com/yassersstudio) · [hello@yasser.studio](mailto:hello@yasser.studio)