@geoalgeria/aviation 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) 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.md ADDED
@@ -0,0 +1,119 @@
1
+ <div align="center">
2
+
3
+ # @geoalgeria/aviation
4
+
5
+ **Every civil airport in Algeria — as data you can install.**
6
+
7
+ [![npm](https://img.shields.io/npm/v/@geoalgeria/aviation)](https://www.npmjs.com/package/@geoalgeria/aviation)
8
+ [![npm downloads](https://img.shields.io/npm/dm/@geoalgeria/aviation)](https://www.npmjs.com/package/@geoalgeria/aviation)
9
+ [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)
10
+
11
+ </div>
12
+
13
+ 33 civil airports across Algeria — with official names, **ICAO (OACI) codes**, postal
14
+ addresses, phone numbers, websites, GPS coordinates, and wilaya linkage. Sourced from
15
+ ANAC (the Autorité Nationale de l'Aviation Civile), shipped as JSON, CSV, and GeoJSON.
16
+ Part of [GeoAlgeria](https://github.com/yasserstudio/geoalgeria).
17
+
18
+ ```bash
19
+ npm install @geoalgeria/aviation
20
+ ```
21
+
22
+ ```js
23
+ import aviation from "@geoalgeria/aviation";
24
+
25
+ const all = aviation.airports(); // 33
26
+ const algiers = aviation.airportByIcao("DAAG"); // Houari Boumediene
27
+ const inOran = aviation.airportsByWilaya(31); // airports in wilaya 31
28
+
29
+ // Everything has lat/lng — distance-sort, map, or nearest-airport in a few lines.
30
+ ```
31
+
32
+ ## What you can build
33
+
34
+ - **Nearest-airport lookups** — coordinates on every record, ready for distance sorting.
35
+ - **ICAO ↔ airport resolution** — map flight-data ICAO codes to names, contacts, and location.
36
+ - **Travel & logistics** — match a wilaya or a point to its serving airport.
37
+ - **Maps** — drop-in GeoJSON point layer for the whole civil-airport network.
38
+
39
+ ## What's inside
40
+
41
+ | Dataset | Count | Notes |
42
+ | --- | --- | --- |
43
+ | Civil airports | **33** | official name, ICAO code, address, phone, website, coordinates |
44
+
45
+ Spanning **31 wilayas**, every airport geocoded. `wilaya_code` is linked against the
46
+ [`geoalgeria`](https://www.npmjs.com/package/geoalgeria) 69-wilaya model.
47
+
48
+ ## Formats
49
+
50
+ The npm package ships the **JSON** (importable directly):
51
+
52
+ ```js
53
+ import airports from "@geoalgeria/aviation/data/airports.json" with { type: "json" };
54
+ // or via CDN, no install:
55
+ // https://cdn.jsdelivr.net/npm/@geoalgeria/aviation/data/airports.json
56
+ ```
57
+
58
+ The loaders and record shapes are fully **typed** — TypeScript definitions ship in the package:
59
+
60
+ ```ts
61
+ import aviation, { type Airport } from "@geoalgeria/aviation";
62
+ const airports: Airport[] = aviation.airports();
63
+ ```
64
+
65
+ **CSV and GeoJSON** are in the repo under [`data/`](data) and bundled in every
66
+ [GitHub Release](https://github.com/yasserstudio/geoalgeria/releases):
67
+
68
+ ```
69
+ data/
70
+ airports.json # 33 airports (array)
71
+ metadata.json # source, counts, generated_at
72
+ csv/airports.csv # repo + Release bundle (not in npm tarball)
73
+ geojson/airports.geojson # Point features (all 33 are geocoded)
74
+ ```
75
+
76
+ ## Record shape
77
+
78
+ ```json
79
+ {
80
+ "id": "daag",
81
+ "name": "Aéroport d’Alger – Houari Boumediene",
82
+ "icao": "DAAG",
83
+ "iata": null,
84
+ "address": "Alger BP 164 DAR EL BEIDA",
85
+ "phone": "+21323199230",
86
+ "website": "https://www.aeroportalger.dz/",
87
+ "wilaya_code": "16",
88
+ "lat": 36.69951171485545,
89
+ "lng": 3.210846808533331,
90
+ "source": "https://www.anac.dz/en/carte-des-aeroports-3/"
91
+ }
92
+ ```
93
+
94
+ `id` is the ICAO code lowercased. `icao` always matches `DA__`. `iata` is `null` — ANAC
95
+ publishes only ICAO codes (the slot is reserved for later enrichment). `wilaya_code` is
96
+ zero-padded to two digits and joins GeoAlgeria's wilayas; a few records may have a `null`
97
+ `phone` where ANAC lists none.
98
+
99
+ ## Need the administrative divisions too?
100
+
101
+ If you also need wilayas, dairas, and communes to join against, use the main
102
+ **[`geoalgeria`](https://www.npmjs.com/package/geoalgeria)** package — it ships the full
103
+ 69-wilaya division dataset that `wilaya_code` here links to. Use `@geoalgeria/aviation`
104
+ when you *only* need airport data.
105
+
106
+ ## Source
107
+
108
+ Data comes from **ANAC — Autorité Nationale de l'Aviation Civile**, via the public
109
+ airports map (<https://www.anac.dz/en/carte-des-aeroports-3/>). Run `npm run fetch` to
110
+ regenerate every output from the live map; the build follows the map's iframe so an ANAC
111
+ version bump doesn't break it, and it fails loudly if the airport count or ICAO format
112
+ changes. `wilaya_code` is resolved by nearest commune centroid from the `geoalgeria`
113
+ dataset (the flagship ships centroids, not boundary polygons).
114
+
115
+ ## License & attribution
116
+
117
+ Code is [MIT](LICENSE). The underlying data is © **ANAC**, redistributed for reference
118
+ and to power [GeoAlgeria](https://geoalgeria.com). Verify against ANAC for authoritative,
119
+ real-time information.
@@ -0,0 +1,431 @@
1
+ [
2
+ {
3
+ "id": "daad",
4
+ "name": "Aéroport de BOU SAADA/Ain Eddis",
5
+ "icao": "DAAD",
6
+ "iata": null,
7
+ "address": "BP 278/ BOU SAADA",
8
+ "phone": "+213 35 43 47 78",
9
+ "website": "https://aeroports-egsa-alger.dz/fr/1.html",
10
+ "wilaya_code": "68",
11
+ "lat": 35.32449005474226,
12
+ "lng": 4.200126110472756,
13
+ "source": "https://www.anac.dz/en/carte-des-aeroports-3/"
14
+ },
15
+ {
16
+ "id": "daae",
17
+ "name": "Aéroport de BEJAIA/Soummam ‐Abane Ramdane",
18
+ "icao": "DAAE",
19
+ "iata": null,
20
+ "address": "Soummam‐Abane Ramdane‐ Bejaia",
21
+ "phone": "+213 34183036",
22
+ "website": "https://aeroports-egsa-alger.dz/fr/11.html",
23
+ "wilaya_code": "06",
24
+ "lat": 36.7158254808996,
25
+ "lng": 5.071032952852189,
26
+ "source": "https://www.anac.dz/en/carte-des-aeroports-3/"
27
+ },
28
+ {
29
+ "id": "daag",
30
+ "name": "Aéroport d’Alger – Houari Boumediene",
31
+ "icao": "DAAG",
32
+ "iata": null,
33
+ "address": "Alger BP 164 DAR EL BEIDA",
34
+ "phone": "+21323199230",
35
+ "website": "https://www.aeroportalger.dz/",
36
+ "wilaya_code": "16",
37
+ "lat": 36.69951171485545,
38
+ "lng": 3.210846808533331,
39
+ "source": "https://www.anac.dz/en/carte-des-aeroports-3/"
40
+ },
41
+ {
42
+ "id": "daaj",
43
+ "name": "Aéroport de DJANET / Tiska-DJANET",
44
+ "icao": "DAAJ",
45
+ "iata": null,
46
+ "address": "Aéroport de DJANET / Tiska BP 29. ‐DJANET",
47
+ "phone": "+213 29481502",
48
+ "website": "https://aeroports-egsa-alger.dz/fr/13.html",
49
+ "wilaya_code": "56",
50
+ "lat": 24.28966075585949,
51
+ "lng": 9.46571858129957,
52
+ "source": "https://www.anac.dz/en/carte-des-aeroports-3/"
53
+ },
54
+ {
55
+ "id": "daap",
56
+ "name": "Aéroport de ILLIZI/TAKHAMALT",
57
+ "icao": "DAAP",
58
+ "iata": null,
59
+ "address": "Aéroport de ILLIZI/TAKHAMALT BP 39 ‐ILLIZI",
60
+ "phone": "+213 29413013",
61
+ "website": "https://aeroports-egsa-alger.dz/fr/5.html",
62
+ "wilaya_code": "33",
63
+ "lat": 26.71924934185029,
64
+ "lng": 8.618196725541447,
65
+ "source": "https://www.anac.dz/en/carte-des-aeroports-3/"
66
+ },
67
+ {
68
+ "id": "daas",
69
+ "name": "Aéroport de SETIF /8 Mai 45",
70
+ "icao": "DAAS",
71
+ "iata": null,
72
+ "address": "Aéroport de SETIF /8 Mai 45 ‐ BP 219 /Sétif",
73
+ "phone": "+213 36 543135",
74
+ "website": "https://www.egsa-constantine.dz/index.php/aeroports/aeroport-de-setif-08-mai-1945",
75
+ "wilaya_code": "19",
76
+ "lat": 36.17553448867715,
77
+ "lng": 5.330306679093995,
78
+ "source": "https://www.anac.dz/en/carte-des-aeroports-3/"
79
+ },
80
+ {
81
+ "id": "daat",
82
+ "name": "Aéroport de Tamanrasset – Aguenar – Hadj Bey Akhamok",
83
+ "icao": "DAAT",
84
+ "iata": null,
85
+ "address": "Aéroport de TAMENGHASSET/Aguenar-Hadj Bey Akhamok- BP 38/TAMENGHASSET",
86
+ "phone": "+21329330031",
87
+ "website": "https://aeroports-egsa-alger.dz/fr/16.html",
88
+ "wilaya_code": "11",
89
+ "lat": 22.81520178682999,
90
+ "lng": 5.448914008186444,
91
+ "source": "https://www.anac.dz/en/carte-des-aeroports-3/"
92
+ },
93
+ {
94
+ "id": "daav",
95
+ "name": "Aéroport de JIJEL/FERHAT ABBAS",
96
+ "icao": "DAAV",
97
+ "iata": null,
98
+ "address": "Aéroport de JIJEL/FERHAT ABBAS BP :37- TAHER / JIJEL",
99
+ "phone": "+213 34 544408",
100
+ "website": "https://www.egsa-constantine.dz/index.php/aeroports/aeroport-de-jijel-ferhat-abbas",
101
+ "wilaya_code": "18",
102
+ "lat": 36.79340595973765,
103
+ "lng": 5.877778649666695,
104
+ "source": "https://www.anac.dz/en/carte-des-aeroports-3/"
105
+ },
106
+ {
107
+ "id": "dabb",
108
+ "name": "Aéroport Annaba – Rabah Bitat",
109
+ "icao": "DABB",
110
+ "iata": null,
111
+ "address": "Rabah Bitat BP 296‐ Annaba",
112
+ "phone": "+21338529071",
113
+ "website": "https://www.egsa-constantine.dz/index.php/aeroports/aeroport-d-annaba-rabah-bitat",
114
+ "wilaya_code": "36",
115
+ "lat": 36.82441556514175,
116
+ "lng": 7.821324125869026,
117
+ "source": "https://www.anac.dz/en/carte-des-aeroports-3/"
118
+ },
119
+ {
120
+ "id": "dabc",
121
+ "name": "Aéroport de Constantine – Mohamed Boudiaf",
122
+ "icao": "DABC",
123
+ "iata": null,
124
+ "address": "AVA, Aéroport de CONSTANTINE",
125
+ "phone": "+21331810125",
126
+ "website": "https://www.egsa-constantine.dz/index.php/aeroports/aeroport-de-constantine-mohamed-boudiaf",
127
+ "wilaya_code": "25",
128
+ "lat": 36.28378418745162,
129
+ "lng": 6.621478825849163,
130
+ "source": "https://www.anac.dz/en/carte-des-aeroports-3/"
131
+ },
132
+ {
133
+ "id": "dabs",
134
+ "name": "Aéroport de Tébessa – Cheikh Larbi Tébessi",
135
+ "icao": "DABS",
136
+ "iata": null,
137
+ "address": "Aéroport de TEBESSA/Cheikh Larbi Tébessi BP 78‐Tebessa",
138
+ "phone": null,
139
+ "website": "https://www.egsa-constantine.dz/index.php/aeroports/aeroport-de-tebessa-cheikh-larbi-tebessi",
140
+ "wilaya_code": "12",
141
+ "lat": 35.42775621347607,
142
+ "lng": 8.118502895134583,
143
+ "source": "https://www.anac.dz/en/carte-des-aeroports-3/"
144
+ },
145
+ {
146
+ "id": "dabt",
147
+ "name": "Aéroport BATNA/ Mostepha Ben BOULAID",
148
+ "icao": "DABT",
149
+ "iata": null,
150
+ "address": "Batna-Mostepha Ben BOULAID aeroport",
151
+ "phone": "+213 33 870152",
152
+ "website": "https://www.egsa-constantine.dz/index.php/aeroports/aeroport-de-batna-mostefa-ben-boulaid",
153
+ "wilaya_code": "05",
154
+ "lat": 35.75767824581629,
155
+ "lng": 6.308248427678342,
156
+ "source": "https://www.anac.dz/en/carte-des-aeroports-3/"
157
+ },
158
+ {
159
+ "id": "daob",
160
+ "name": "Aéroport TIARET - Abdelhafid Boussouf Bou Chekif",
161
+ "icao": "DAOB",
162
+ "iata": null,
163
+ "address": "Aéroport TIARET / Abdelhafid Boussouf Bou Chekif ‐BP 12/Tiaret",
164
+ "phone": "+213 46240005",
165
+ "website": "https://egsa-oran.dz/index.php/aeroport-de-tiaret/",
166
+ "wilaya_code": "14",
167
+ "lat": 35.34579589348178,
168
+ "lng": 1.4698592674102533,
169
+ "source": "https://www.anac.dz/en/carte-des-aeroports-3/"
170
+ },
171
+ {
172
+ "id": "daof",
173
+ "name": "Aéroport de TINDOUF",
174
+ "icao": "DAOF",
175
+ "iata": null,
176
+ "address": "AVA, Direction de la Sécurité Aéronautique BP 72 /TINDOUF",
177
+ "phone": "+213 49370017",
178
+ "website": "https://egsa-oran.dz/index.php/aeroport-de-tindouf/",
179
+ "wilaya_code": "37",
180
+ "lat": 27.705212653326345,
181
+ "lng": -8.16543384744355,
182
+ "source": "https://www.anac.dz/en/carte-des-aeroports-3/"
183
+ },
184
+ {
185
+ "id": "daoi",
186
+ "name": "Aéroport de CHLEF",
187
+ "icao": "DAOI",
188
+ "iata": null,
189
+ "address": "Aboubakr Belkaid Airport, Chlef",
190
+ "phone": "+213 27728032",
191
+ "website": "https://aeroports-egsa-alger.dz/fr/15.html",
192
+ "wilaya_code": "02",
193
+ "lat": 36.21763410012118,
194
+ "lng": 1.3246854393403855,
195
+ "source": "https://www.anac.dz/en/carte-des-aeroports-3/"
196
+ },
197
+ {
198
+ "id": "daon",
199
+ "name": "Aéroport de Tlemcen – Zenata – Messali El Hadj",
200
+ "icao": "DAON",
201
+ "iata": null,
202
+ "address": "Aéroport de TLEMCEN/Zenata-Messali El Hadj/BP50- ZENATA/TLEMCEN",
203
+ "phone": "+21343403149",
204
+ "website": "https://egsa-oran.dz/index.php/nos-aeroports/",
205
+ "wilaya_code": "13",
206
+ "lat": 35.012480117143284,
207
+ "lng": -1.4480446913865919,
208
+ "source": "https://www.anac.dz/en/carte-des-aeroports-3/"
209
+ },
210
+ {
211
+ "id": "daoo",
212
+ "name": "Aéroport d’Oran – Ahmed Benbella",
213
+ "icao": "DAOO",
214
+ "iata": null,
215
+ "address": "Aéroportd’ORAN/Ahmed BenbellaBP13 -Oran",
216
+ "phone": "+21341591067",
217
+ "website": "https://egsa-oran.dz/index.php/aeroport-doran/",
218
+ "wilaya_code": "31",
219
+ "lat": 35.61833150995104,
220
+ "lng": -0.6109085969987015,
221
+ "source": "https://www.anac.dz/en/carte-des-aeroports-3/"
222
+ },
223
+ {
224
+ "id": "daor",
225
+ "name": "Aéroport de BECHAR/Boudghene Ben Ali Lotf",
226
+ "icao": "DAOR",
227
+ "iata": null,
228
+ "address": "Boudghene Ben Ali Lotfi‐ BP: 69/Bechar",
229
+ "phone": "+213 49221909",
230
+ "website": "https://egsa-oran.dz/index.php/aeroport-de-bechar/",
231
+ "wilaya_code": "08",
232
+ "lat": 31.651481919578377,
233
+ "lng": -2.2525513149111935,
234
+ "source": "https://www.anac.dz/en/carte-des-aeroports-3/"
235
+ },
236
+ {
237
+ "id": "daov",
238
+ "name": "Aéroport de GHRISS",
239
+ "icao": "DAOV",
240
+ "iata": null,
241
+ "address": "Aéroport de GHRISS BP 12 - GHRISS",
242
+ "phone": "+213 45715911",
243
+ "website": "https://egsa-oran.dz/index.php/aeroport-de-mascara/",
244
+ "wilaya_code": "29",
245
+ "lat": 35.204242738046425,
246
+ "lng": 0.15366508348121125,
247
+ "source": "https://www.anac.dz/en/carte-des-aeroports-3/"
248
+ },
249
+ {
250
+ "id": "daoy",
251
+ "name": "Aéroport d'EL BAYADH",
252
+ "icao": "DAOY",
253
+ "iata": null,
254
+ "address": "Aéroport d’El Bayadh BP 209 RP/ El Bayadh",
255
+ "phone": "+213 49667806",
256
+ "website": "https://egsa-oran.dz/index.php/aeroport-de-el-bayadh/",
257
+ "wilaya_code": "32",
258
+ "lat": 33.718310325446744,
259
+ "lng": 1.093221137403827,
260
+ "source": "https://www.anac.dz/en/carte-des-aeroports-3/"
261
+ },
262
+ {
263
+ "id": "datg",
264
+ "name": "Aéroport d’IN GUEZZAM",
265
+ "icao": "DATG",
266
+ "iata": null,
267
+ "address": "Aéroport d’IN GUEZZAM / IN GUEZZAM",
268
+ "phone": "+213 29 351123",
269
+ "website": "https://aeroports-egsa-alger.dz/fr/7.html",
270
+ "wilaya_code": "54",
271
+ "lat": 19.563939499098094,
272
+ "lng": 5.751815823519952,
273
+ "source": "https://www.anac.dz/en/carte-des-aeroports-3/"
274
+ },
275
+ {
276
+ "id": "datm",
277
+ "name": "Aéroport de BORDJ MOKHTAR –BORDJ MOKHTAR",
278
+ "icao": "DATM",
279
+ "iata": null,
280
+ "address": "BORDJ MOKHTAR",
281
+ "phone": "+213 49329304",
282
+ "website": "https://egsa-oran.dz/index.php/aeroport-de-bordj-badji-mokhtar/",
283
+ "wilaya_code": "50",
284
+ "lat": 21.371800375167478,
285
+ "lng": 0.9238537082170545,
286
+ "source": "https://www.anac.dz/en/carte-des-aeroports-3/"
287
+ },
288
+ {
289
+ "id": "daua",
290
+ "name": "Aéroport d’Adrar – Touat – Cheikh Sidi Mohamed Belkebir",
291
+ "icao": "DAUA",
292
+ "iata": null,
293
+ "address": "Touat‐Cheikh Sidi Mohamed Belkebir BP15‐Adrar",
294
+ "phone": "+21349358003",
295
+ "website": "https://egsa-oran.dz/index.php/aeroport-de-adrar/",
296
+ "wilaya_code": "01",
297
+ "lat": 27.842093213179865,
298
+ "lng": -0.1894002032622811,
299
+ "source": "https://www.anac.dz/en/carte-des-aeroports-3/"
300
+ },
301
+ {
302
+ "id": "daub",
303
+ "name": "Aéroport de BISKRA/ Mohamed KHIDER",
304
+ "icao": "DAUB",
305
+ "iata": null,
306
+ "address": "ENNA – Direction de la Sécurité Aéronautique BP 27 star Melouk BISKRA, Biskra",
307
+ "phone": "+213 33543005",
308
+ "website": "https://www.egsa-constantine.dz/index.php/aeroports/aeroport-de-biskra-mohamed-kheider",
309
+ "wilaya_code": "07",
310
+ "lat": 34.79160974695419,
311
+ "lng": 5.733631154631189,
312
+ "source": "https://www.anac.dz/en/carte-des-aeroports-3/"
313
+ },
314
+ {
315
+ "id": "daue",
316
+ "name": "Aéroport d’El GOLEA",
317
+ "icao": "DAUE",
318
+ "iata": null,
319
+ "address": "Aéroport d’El GOLEA BP 30- El GOLEA",
320
+ "phone": "+213 29210735",
321
+ "website": "https://aeroports-egsa-alger.dz/fr/6.html",
322
+ "wilaya_code": "58",
323
+ "lat": 30.571557198848183,
324
+ "lng": 2.8688732967150132,
325
+ "source": "https://www.anac.dz/en/carte-des-aeroports-3/"
326
+ },
327
+ {
328
+ "id": "daug",
329
+ "name": "Aéroport de Ghardaïa – Noumérat Moufdi Zakaria",
330
+ "icao": "DAUG",
331
+ "iata": null,
332
+ "address": "Aéroport de GHARDAIA/Noumérat‐Moufdi Zakaria BP 123/Ghardaia",
333
+ "phone": "+21329295555",
334
+ "website": "https://aeroports-egsa-alger.dz/fr/14.html",
335
+ "wilaya_code": "47",
336
+ "lat": 32.378608164328305,
337
+ "lng": 3.8015461545489084,
338
+ "source": "https://www.anac.dz/en/carte-des-aeroports-3/"
339
+ },
340
+ {
341
+ "id": "dauh",
342
+ "name": "Aéroport de Hassi Messaoud – Oued Irara – Krim Belkacem",
343
+ "icao": "DAUH",
344
+ "iata": null,
345
+ "address": "Aéroport de Hassi Messaoud/Oued Irara‐Krim Belkacem BP 130",
346
+ "phone": "+21329741885",
347
+ "website": "https://aeroports-egsa-alger.dz/fr/10.html",
348
+ "wilaya_code": "30",
349
+ "lat": 31.675453603011896,
350
+ "lng": 6.144544541032298,
351
+ "source": "https://www.anac.dz/en/carte-des-aeroports-3/"
352
+ },
353
+ {
354
+ "id": "daui",
355
+ "name": "Aéroport de In Salah BP 23 - IN SALAH",
356
+ "icao": "DAUI",
357
+ "iata": null,
358
+ "address": "Aéroport de In Salah BP 23 - IN SALAH",
359
+ "phone": "+213 29366103",
360
+ "website": "https://aeroports-egsa-alger.dz/fr/4.html",
361
+ "wilaya_code": "53",
362
+ "lat": 27.252139159419297,
363
+ "lng": 2.508766383227296,
364
+ "source": "https://www.anac.dz/en/carte-des-aeroports-3/"
365
+ },
366
+ {
367
+ "id": "dauk",
368
+ "name": "Aéroport de TOUGGOURT /Sidi Mahdi",
369
+ "icao": "DAUK",
370
+ "iata": null,
371
+ "address": "Aéroport de TOUGGOURT /Sidi Mahdi ‐BP 47 / TOUGGOURT",
372
+ "phone": "+213 29 69 31 45",
373
+ "website": "https://aeroports-egsa-alger.dz/fr/8.html",
374
+ "wilaya_code": "55",
375
+ "lat": 33.06679067003136,
376
+ "lng": 6.091777108546213,
377
+ "source": "https://www.anac.dz/en/carte-des-aeroports-3/"
378
+ },
379
+ {
380
+ "id": "dauo",
381
+ "name": "Aéroport d’El Oued/Guemar",
382
+ "icao": "DAUO",
383
+ "iata": null,
384
+ "address": "Aéroport d’El Oued/Guemar BP 110 / El Oued",
385
+ "phone": "+213 32101015",
386
+ "website": "https://aeroports-egsa-alger.dz/fr/17.html",
387
+ "wilaya_code": "39",
388
+ "lat": 33.507414582460555,
389
+ "lng": 6.784868996915831,
390
+ "source": "https://www.anac.dz/en/carte-des-aeroports-3/"
391
+ },
392
+ {
393
+ "id": "daut",
394
+ "name": "Aéroport de TIMIMOUN",
395
+ "icao": "DAUT",
396
+ "iata": null,
397
+ "address": "Aéroport de TIMIMOUN ‐ BP 440/ TIMIMOUN",
398
+ "phone": "+213 49305706",
399
+ "website": "https://egsa-oran.dz/index.php/aeroport-de-timimoun/",
400
+ "wilaya_code": "49",
401
+ "lat": 29.244465048530696,
402
+ "lng": 0.2812601237662405,
403
+ "source": "https://www.anac.dz/en/carte-des-aeroports-3/"
404
+ },
405
+ {
406
+ "id": "dauu",
407
+ "name": "Aéroport de Ouargla/Ain Beida",
408
+ "icao": "DAUU",
409
+ "iata": null,
410
+ "address": "Aéroport de Ouargla‐ BP 11 /OUARGLA",
411
+ "phone": "+213 29774906",
412
+ "website": "https://aeroports-egsa-alger.dz/fr/2.html",
413
+ "wilaya_code": "30",
414
+ "lat": 31.936205024205428,
415
+ "lng": 5.408429008410361,
416
+ "source": "https://www.anac.dz/en/carte-des-aeroports-3/"
417
+ },
418
+ {
419
+ "id": "dauz",
420
+ "name": "Aéroport de Zarzaitine – In Aménas",
421
+ "icao": "DAUZ",
422
+ "iata": null,
423
+ "address": "Aéroport de In Amenas B.P 51 /IN AMENAS",
424
+ "phone": "+213 29 45 13",
425
+ "website": "https://aeroports-egsa-alger.dz/fr/12.html",
426
+ "wilaya_code": "33",
427
+ "lat": 28.051765839675433,
428
+ "lng": 9.63789046606008,
429
+ "source": "https://www.anac.dz/en/carte-des-aeroports-3/"
430
+ }
431
+ ]
@@ -0,0 +1,8 @@
1
+ {
2
+ "source": "ANAC — Autorité Nationale de l'Aviation Civile (anac.dz)",
3
+ "origin": "https://www.anac.dz/en/carte-des-aeroports-3/",
4
+ "license": "Data © ANAC; redistributed for reference. See README.",
5
+ "airports": 33,
6
+ "wilayas_covered": 31,
7
+ "generated_at": "2026-06-14"
8
+ }
package/index.js ADDED
@@ -0,0 +1,18 @@
1
+ // @geoalgeria/aviation — lightweight loaders for Algeria's civil airports (ANAC).
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 airports = () => load("airports.json"); // 33 civil airports
10
+ export const airportByIcao = (code) =>
11
+ airports().find((a) => a.icao === String(code).toUpperCase()) ?? null;
12
+ export const airportsByWilaya = (code) => {
13
+ const w = String(code).padStart(2, "0"); // accepts "16", 16, or "01"
14
+ return airports().filter((a) => a.wilaya_code === w);
15
+ };
16
+ export const metadata = () => load("metadata.json");
17
+
18
+ export default { airports, airportByIcao, airportsByWilaya, metadata };
package/package.json ADDED
@@ -0,0 +1,55 @@
1
+ {
2
+ "name": "@geoalgeria/aviation",
3
+ "version": "1.0.0",
4
+ "type": "module",
5
+ "description": "Algeria's 33 civil airports — official names, ICAO (OACI) codes, addresses, phones, websites, coordinates, and wilaya linkage. Sourced from ANAC (anac.dz). 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
+ "types/",
18
+ "index.js"
19
+ ],
20
+ "scripts": {
21
+ "fetch": "node scripts/fetch.mjs",
22
+ "test": "node ../../scripts/validate-packages.mjs aviation"
23
+ },
24
+ "keywords": [
25
+ "algeria",
26
+ "airport",
27
+ "aeroport",
28
+ "aeroports",
29
+ "aviation",
30
+ "anac",
31
+ "icao",
32
+ "oaci",
33
+ "airports",
34
+ "geojson",
35
+ "geoalgeria",
36
+ "dz"
37
+ ],
38
+ "author": "Yasser's Studio (https://yasser.studio)",
39
+ "license": "MIT",
40
+ "publishConfig": {
41
+ "access": "public"
42
+ },
43
+ "bugs": {
44
+ "url": "https://github.com/yasserstudio/geoalgeria/issues"
45
+ },
46
+ "repository": {
47
+ "type": "git",
48
+ "url": "git+https://github.com/yasserstudio/geoalgeria.git",
49
+ "directory": "packages/aviation"
50
+ },
51
+ "homepage": "https://geoalgeria.com",
52
+ "engines": {
53
+ "node": ">=18"
54
+ }
55
+ }
@@ -0,0 +1,52 @@
1
+ /** A civil airport, as published by ANAC. */
2
+ export interface Airport {
3
+ /** Stable id — the ICAO code, lowercased (e.g. `"daag"`). */
4
+ id: string;
5
+ /** Official airport name in French (e.g. `"Aéroport d'Alger – Houari Boumediene"`). */
6
+ name: string;
7
+ /** ICAO (OACI) code — always matches `/^DA[A-Z]{2}$/` (e.g. `"DAAG"`). */
8
+ icao: string;
9
+ /** IATA code — not published by ANAC; always `null` (reserved for later enrichment). */
10
+ iata: string | null;
11
+ /** Postal address as listed by ANAC, or `null` if none is given. */
12
+ address: string | null;
13
+ /** Contact phone, or `null` if none is given. */
14
+ phone: string | null;
15
+ /** Official website URL, or `null` if none is given. */
16
+ website: string | null;
17
+ /** Wilaya code, zero-padded to 2 digits (`"01"`–`"69"`). Joins `geoalgeria` wilayas. */
18
+ wilaya_code: string;
19
+ /** Latitude (WGS84). */
20
+ lat: number;
21
+ /** Longitude (WGS84). */
22
+ lng: number;
23
+ /** ANAC source page the record was derived from. */
24
+ source: string;
25
+ }
26
+
27
+ /** Dataset provenance and counts. */
28
+ export interface Metadata {
29
+ source: string;
30
+ origin: string;
31
+ license: string;
32
+ airports: number;
33
+ wilayas_covered: number;
34
+ generated_at: string;
35
+ }
36
+
37
+ /** All civil airports (33). */
38
+ export function airports(): Airport[];
39
+ /** One airport by ICAO code (case-insensitive), or `null` if none matches. */
40
+ export function airportByIcao(code: string): Airport | null;
41
+ /** Airports in a wilaya — accepts `"16"`, `16`, or `"01"`. */
42
+ export function airportsByWilaya(code: string | number): Airport[];
43
+ /** Dataset metadata (counts, source, generated_at). */
44
+ export function metadata(): Metadata;
45
+
46
+ declare const _default: {
47
+ airports: typeof airports;
48
+ airportByIcao: typeof airportByIcao;
49
+ airportsByWilaya: typeof airportsByWilaya;
50
+ metadata: typeof metadata;
51
+ };
52
+ export default _default;