@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 +21 -0
- package/README.ar.md +190 -0
- package/README.fr.md +196 -0
- package/README.md +194 -0
- package/data/csv/culture.csv +1084 -0
- package/data/culture.json +25994 -0
- package/data/geojson/culture.geojson +34661 -0
- package/data/metadata.json +33 -0
- package/index.js +12 -0
- package/package.json +60 -0
- package/types/index.d.ts +110 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"source": "Cartes du Patrimoine Culturel Algérien (cartes.patrimoineculturelalgerien.org) — the Ministry of Culture's cultural atlas",
|
|
3
|
+
"origin": "https://cartes.patrimoineculturelalgerien.org",
|
|
4
|
+
"license": "Factual public cultural listing from the Ministry of Culture (names, types, coordinates as published by the portal). Commune linkage derived from the GeoAlgeria commune set. See README for attribution.",
|
|
5
|
+
"culture": 1083,
|
|
6
|
+
"by_type": {
|
|
7
|
+
"protected-cultural-property": 580,
|
|
8
|
+
"museum": 48,
|
|
9
|
+
"museum-moudjahid": 13,
|
|
10
|
+
"theatre": 45,
|
|
11
|
+
"library": 257,
|
|
12
|
+
"cultural-house": 51,
|
|
13
|
+
"cultural-palace": 6,
|
|
14
|
+
"cultural-center": 15,
|
|
15
|
+
"cultural-directorate": 33,
|
|
16
|
+
"cinema": 20,
|
|
17
|
+
"arts-school": 15
|
|
18
|
+
},
|
|
19
|
+
"by_category": {
|
|
20
|
+
"heritage": 943,
|
|
21
|
+
"establishment": 140
|
|
22
|
+
},
|
|
23
|
+
"by_geo_precision": {
|
|
24
|
+
"source_point": 1083
|
|
25
|
+
},
|
|
26
|
+
"wilayas_covered": 66,
|
|
27
|
+
"geocoded": 1083,
|
|
28
|
+
"bilingual": 1083,
|
|
29
|
+
"virtual_tours": 22,
|
|
30
|
+
"linkage_note": "Names, type, coordinates and virtual-tour flag are from the Patrimoine Culturel portal (the portal's FR and AR catalogs are disjoint node sets, unioned by coordinate proximity and translated to fill bilingual gaps). Wilaya is exact (from the portal); commune is the nearest GeoAlgeria commune centroid (the repo ships centroids, not boundary polygons), so commune is best-effort.",
|
|
31
|
+
"coverage_note": "1083 cultural places from Algeria's official cultural atlas (Ministry of Culture) — protected heritage sites, museums, theatres, libraries, and cultural establishments (maisons & palais de culture, cinemas, culture directorates, arts schools). Every place carries a source coordinate; wilaya is exact, commune is best-effort. 22 offer a 360° virtual tour.",
|
|
32
|
+
"generated_at": "2026-06-29"
|
|
33
|
+
}
|
package/index.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// @geoalgeria/culture — lightweight loaders for Algeria's cultural atlas.
|
|
2
|
+
import { readFileSync } from "node:fs";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { dirname, join } from "node:path";
|
|
5
|
+
|
|
6
|
+
const DATA = join(dirname(fileURLToPath(import.meta.url)), "data");
|
|
7
|
+
const load = (p) => JSON.parse(readFileSync(join(DATA, p), "utf-8"));
|
|
8
|
+
|
|
9
|
+
export const culture = () => load("culture.json"); // cultural places (Patrimoine Culturel atlas, geocoded)
|
|
10
|
+
export const metadata = () => load("metadata.json");
|
|
11
|
+
|
|
12
|
+
export default { culture, metadata };
|
package/package.json
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@geoalgeria/culture",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"description": "Algeria's cultural atlas — protected heritage sites, museums, theatres, libraries and cultural establishments (maisons & palais de culture, cinemas, culture directorates, arts schools) from the Ministry of Culture's Patrimoine Culturel portal, bilingual FR/AR, fully geocoded, with commune/wilaya linkage. JSON, CSV, GeoJSON, TypeScript.",
|
|
6
|
+
"main": "index.js",
|
|
7
|
+
"types": "types/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./types/index.d.ts",
|
|
11
|
+
"default": "./index.js"
|
|
12
|
+
},
|
|
13
|
+
"./data/*": "./data/*"
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"data/**/*.json",
|
|
17
|
+
"data/**/*.csv",
|
|
18
|
+
"data/**/*.geojson",
|
|
19
|
+
"types/",
|
|
20
|
+
"index.js"
|
|
21
|
+
],
|
|
22
|
+
"scripts": {
|
|
23
|
+
"fetch": "node scripts/fetch.mjs",
|
|
24
|
+
"test": "node ../../scripts/validate-packages.mjs culture"
|
|
25
|
+
},
|
|
26
|
+
"keywords": [
|
|
27
|
+
"algeria",
|
|
28
|
+
"culture",
|
|
29
|
+
"patrimoine",
|
|
30
|
+
"heritage",
|
|
31
|
+
"monument",
|
|
32
|
+
"museum",
|
|
33
|
+
"musee",
|
|
34
|
+
"theatre",
|
|
35
|
+
"library",
|
|
36
|
+
"cinema",
|
|
37
|
+
"unesco",
|
|
38
|
+
"ministry-of-culture",
|
|
39
|
+
"geojson",
|
|
40
|
+
"geoalgeria",
|
|
41
|
+
"dz"
|
|
42
|
+
],
|
|
43
|
+
"author": "Yasser's Studio (https://yasser.studio)",
|
|
44
|
+
"license": "MIT",
|
|
45
|
+
"publishConfig": {
|
|
46
|
+
"access": "public"
|
|
47
|
+
},
|
|
48
|
+
"bugs": {
|
|
49
|
+
"url": "https://github.com/yasserstudio/geoalgeria/issues"
|
|
50
|
+
},
|
|
51
|
+
"repository": {
|
|
52
|
+
"type": "git",
|
|
53
|
+
"url": "git+https://github.com/yasserstudio/geoalgeria.git",
|
|
54
|
+
"directory": "packages/culture"
|
|
55
|
+
},
|
|
56
|
+
"homepage": "https://geoalgeria.com",
|
|
57
|
+
"engines": {
|
|
58
|
+
"node": ">=18"
|
|
59
|
+
}
|
|
60
|
+
}
|
package/types/index.d.ts
ADDED
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
// Type definitions for @geoalgeria/culture
|
|
2
|
+
// Algeria's cultural atlas — the Ministry of Culture's "Cartes du Patrimoine
|
|
3
|
+
// Culturel Algérien" portal (cartes.patrimoineculturelalgerien.org), bilingual
|
|
4
|
+
// FR/AR, with coordinates as published by the portal.
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Kind of cultural place. The first five are the portal's heritage/institution
|
|
8
|
+
* layers; the last six are cultural establishments from the combined map.
|
|
9
|
+
*/
|
|
10
|
+
export type CulturalType =
|
|
11
|
+
// heritage & institutions
|
|
12
|
+
| "protected-cultural-property"
|
|
13
|
+
| "museum"
|
|
14
|
+
| "museum-moudjahid"
|
|
15
|
+
| "theatre"
|
|
16
|
+
| "library"
|
|
17
|
+
// cultural establishments / venues
|
|
18
|
+
| "cultural-house"
|
|
19
|
+
| "cultural-palace"
|
|
20
|
+
| "cultural-center"
|
|
21
|
+
| "cultural-directorate"
|
|
22
|
+
| "cinema"
|
|
23
|
+
| "arts-school";
|
|
24
|
+
|
|
25
|
+
/** Coarse grouping: protected sites + museums + theatres + libraries vs. operating establishments. */
|
|
26
|
+
export type CulturalCategory = "heritage" | "establishment";
|
|
27
|
+
|
|
28
|
+
/** Provenance of the record. */
|
|
29
|
+
export type CultureSource = "patrimoineculturel";
|
|
30
|
+
|
|
31
|
+
/** How the coordinates were obtained. The portal publishes a point for every place. */
|
|
32
|
+
export type GeoPrecision = "source_point";
|
|
33
|
+
|
|
34
|
+
/** A cultural place. */
|
|
35
|
+
export interface CulturalSite {
|
|
36
|
+
/** Stable id, `{wilaya_code}-{type_code}-{seq}` (e.g. "16-museum-01"). */
|
|
37
|
+
id: string;
|
|
38
|
+
/** Best available display name (French preferred, else Arabic). */
|
|
39
|
+
name: string;
|
|
40
|
+
/** Arabic name, or null. */
|
|
41
|
+
name_ar: string | null;
|
|
42
|
+
/** French name, or null. */
|
|
43
|
+
name_fr: string | null;
|
|
44
|
+
/** Kind of cultural place. */
|
|
45
|
+
type: CulturalType;
|
|
46
|
+
/** Coarse grouping (`heritage` for the 5 institution layers, `establishment` for the 6 venue layers). */
|
|
47
|
+
category: CulturalCategory;
|
|
48
|
+
/** Canonical French label for the type. */
|
|
49
|
+
type_label_fr: string;
|
|
50
|
+
/** Canonical Arabic label for the type. */
|
|
51
|
+
type_label_ar: string;
|
|
52
|
+
/** True when the portal offers a 360° virtual tour of the place. */
|
|
53
|
+
has_virtual_tour: boolean;
|
|
54
|
+
/** Wilaya name (French). */
|
|
55
|
+
wilaya: string;
|
|
56
|
+
/** Wilaya name (Arabic). */
|
|
57
|
+
wilaya_ar: string;
|
|
58
|
+
/** Wilaya code as a zero-padded string ("01".."69", current Law 26-06 scheme). */
|
|
59
|
+
wilaya_code: string;
|
|
60
|
+
/** Commune name (French), nearest-centroid best-effort. Null when unresolved. */
|
|
61
|
+
commune: string | null;
|
|
62
|
+
/** Commune code (geoalgeria code_commune), best-effort. Null when unresolved. */
|
|
63
|
+
commune_code: number | null;
|
|
64
|
+
/** Provenance (the Patrimoine Culturel portal). */
|
|
65
|
+
source: CultureSource;
|
|
66
|
+
/** How `lat`/`lng` were obtained (always the portal's published point). */
|
|
67
|
+
geo_precision: GeoPrecision;
|
|
68
|
+
/** Deep link to the place's record on the portal, or null. */
|
|
69
|
+
url: string | null;
|
|
70
|
+
/** Node id of the French record on the portal, or null. */
|
|
71
|
+
node_id_fr: number | null;
|
|
72
|
+
/** Node id of the Arabic record on the portal, or null. */
|
|
73
|
+
node_id_ar: number | null;
|
|
74
|
+
/** URL slug of the place name. */
|
|
75
|
+
slug: string;
|
|
76
|
+
/** Latitude (always present — every place carries a source point). */
|
|
77
|
+
lat: number;
|
|
78
|
+
/** Longitude (always present). */
|
|
79
|
+
lng: number;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/** Dataset metadata (data/metadata.json). */
|
|
83
|
+
export interface Metadata {
|
|
84
|
+
source: string;
|
|
85
|
+
origin: string;
|
|
86
|
+
license: string;
|
|
87
|
+
culture: number;
|
|
88
|
+
by_type: Record<CulturalType, number>;
|
|
89
|
+
by_category: Record<CulturalCategory, number>;
|
|
90
|
+
by_geo_precision: Record<GeoPrecision, number>;
|
|
91
|
+
wilayas_covered: number;
|
|
92
|
+
geocoded: number;
|
|
93
|
+
bilingual: number;
|
|
94
|
+
virtual_tours: number;
|
|
95
|
+
linkage_note: string;
|
|
96
|
+
coverage_note: string;
|
|
97
|
+
/** ISO date (YYYY-MM-DD) the snapshot was generated. */
|
|
98
|
+
generated_at: string;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/** All cultural places. */
|
|
102
|
+
export function culture(): CulturalSite[];
|
|
103
|
+
/** Dataset metadata. */
|
|
104
|
+
export function metadata(): Metadata;
|
|
105
|
+
|
|
106
|
+
declare const _default: {
|
|
107
|
+
culture: typeof culture;
|
|
108
|
+
metadata: typeof metadata;
|
|
109
|
+
};
|
|
110
|
+
export default _default;
|