oglap-ggp-node 1.0.2 → 1.0.3

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.
Files changed (2) hide show
  1. package/README.md +41 -56
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Implémentation Node.js du protocole **OGLAP** (Offline Grid Location Addressing Protocol) — un système d'adressage déterministe basé sur une grille, conçu pour les régions où les adresses postales formelles sont inexistantes ou peu fiables.
4
4
 
5
- OGLAP génère des **codes LAP** compacts et lisibles (ex. `GN-CKY-QKAR-B4A4-2798`) qui identifient de façon unique n'importe quelle coordonnée à l'intérieur d'un pays configuré, hors ligne et sans API externe.
5
+ OGLAP génère des **codes LAP** compacts et lisibles (ex. `GN-CON-QYTC-B0B1-2282`) qui identifient de façon unique n'importe quelle coordonnée à l'intérieur d'un pays configuré, hors ligne et sans API externe.
6
6
 
7
7
  ---
8
8
 
@@ -23,22 +23,22 @@ Un code LAP encode une localisation à quatre niveaux hiérarchiques :
23
23
 
24
24
  ### Grille locale (5 segments)
25
25
  ```
26
- GN - CKY - QKAR - B4A4 - 2798
27
- │ │ │ │ └─ Microspot — 4 chiffres, offset métrique (XX = est, YY = nord)
26
+ GN - CON - QYTC - B0B1 - 2282
27
+ │ │ │ │ └─ Microspot — 4 chiffres, offset métrique (XX = est, YY = nord)
28
28
  │ │ │ └─────── Macrobloc — 4 chars [A-J][0-9][A-J][0-9], blocs ~100 m dans la zone
29
- │ │ └────────────── Zone — 4 chars, dérivé du nom de lieu local
30
- │ └───────────────────── Région — 3 chars, code de région administrative
31
- └──────────────────────────── Pays — code ISO alpha-2 du pays
29
+ │ │ └────────────── Zone — 4 chars, indiquant la localite administrative immediate de niveau 8 et plus (example - QYTC pour Yattaya - Fossedè)
30
+ │ └───────────────────── Région — 3 chars, code de la localite administrative de niveau 4 ou 6 immediate (example - CON pour Conakry)
31
+ └──────────────────────────── Pays — code ISO alpha-2 du pays (example - gn pour Guinee)
32
32
  ```
33
33
 
34
34
  ### Grille nationale (4 segments)
35
35
  Utilisée quand une coordonnée se situe en dehors des limites administratives de niveau 8 et au-dessus :
36
36
  ```
37
- GN - CKY - AABCDE - 4250
37
+ GN - NZE - AABCDE - 4250
38
38
  │ │ │ └─ Microspot — 4 chiffres
39
39
  │ │ └────────── Macrobloc — 6 lettres, grille kilométrique nationale
40
- │ └──────────────── Région
41
- └─────────────────────── Pays
40
+ │ └──────────────── Région — 3 chars, code de la localite administrative de niveau 4 ou 6 immediate (example - NZE pour Nzérékoré)
41
+ └─────────────────────── Pays — code ISO alpha-2 du pays (example - gn pour Guinee)
42
42
  ```
43
43
 
44
44
  ---
@@ -85,22 +85,6 @@ const report = await initOglap({
85
85
  if (!report.ok) throw new Error(report.error);
86
86
  ```
87
87
 
88
- **Mode direct** — pour les environnements sans accès disque (serverless, edge) :
89
-
90
- ```js
91
- import { initOglap, loadOglap } from 'oglap-ggp-node-js';
92
-
93
- const profile = await fetch('/data/country_profile.json').then(r => r.json());
94
- const localities = await fetch('/data/localities_naming.json').then(r => r.json());
95
- const places = await fetch('/data/oglap_data.json').then(r => r.json());
96
-
97
- const report = await initOglap(profile, localities);
98
- if (!report.ok) throw new Error(report.error);
99
-
100
- const loaded = loadOglap(places);
101
- console.log(`${loaded.count} lieux chargés`);
102
- ```
103
-
104
88
  ---
105
89
 
106
90
  ## Utilisation
@@ -112,12 +96,12 @@ import { coordinatesToLap } from 'oglap-ggp-node-js';
112
96
 
113
97
  const result = coordinatesToLap(9.5370, -13.6773); // lat, lon — Conakry, Guinée
114
98
 
115
- console.log(result.lapCode); // GN-CKY-QKAR-B4A4-2798
116
- console.log(result.humanAddress); // Quartier Almamya, Conakry, Kindia, Guinée
117
- console.log(result.admin_level_2); // CKY (code de région)
118
- console.log(result.admin_level_3); // QKAR (code de zone)
119
- console.log(result.macroblock); // B4A4
120
- console.log(result.microspot); // 2798
99
+ console.log(result.lapCode); // GN-CON-QYTC-B0B1-2282
100
+ console.log(result.humanAddress); // B0B1-2282, Yattaya Fossedè, Conakry, Guinée
101
+ console.log(result.admin_level_2); // CON (code de région)
102
+ console.log(result.admin_level_3); // QYTC (code de zone)
103
+ console.log(result.macroblock); // B0B1
104
+ console.log(result.microspot); // 2282
121
105
  console.log(result.isNationalGrid); // false
122
106
  console.log(result.originLat); // latitude d'origine de la bbox
123
107
  console.log(result.originLon); // longitude d'origine de la bbox
@@ -130,7 +114,7 @@ Retourne `null` si les coordonnées sont hors du territoire.
130
114
  ```js
131
115
  import { lapToCoordinates } from 'oglap-ggp-node-js';
132
116
 
133
- const coords = lapToCoordinates('GN-CKY-QKAR-B4A4-2798');
117
+ const coords = lapToCoordinates('GN-CON-QYTC-B0B1-2282');
134
118
 
135
119
  if (coords) {
136
120
  console.log(`lat: ${coords.lat}, lon: ${coords.lon}`);
@@ -138,7 +122,7 @@ if (coords) {
138
122
  }
139
123
 
140
124
  // Le préfixe pays est optionnel
141
- const coords2 = lapToCoordinates('CKY-QKAR-B4A4-2798');
125
+ const coords2 = lapToCoordinates('GN-CON-QYTC-B0B1-2282');
142
126
  ```
143
127
 
144
128
  ### Parser et valider un code LAP
@@ -147,7 +131,7 @@ const coords2 = lapToCoordinates('CKY-QKAR-B4A4-2798');
147
131
  import { validateLapCode, parseLapCode } from 'oglap-ggp-node-js';
148
132
 
149
133
  // Valider — retourne un message d'erreur, ou null si valide
150
- const error = validateLapCode('GN-CKY-QKAR-B4A4-2798');
134
+ const error = validateLapCode('GN-CON-QYTC-B0B1-2282');
151
135
  if (error) {
152
136
  console.log('Invalide :', error);
153
137
  } else {
@@ -155,18 +139,19 @@ if (error) {
155
139
  }
156
140
 
157
141
  // Parser en composants
158
- const parsed = parseLapCode('GN-CKY-QKAR-B4A4-2798');
142
+ const parsed = parseLapCode('GN-CON-QYTC-B0B1-2282');
159
143
  if (parsed) {
160
- console.log(parsed.admin_level_2_Iso); // code ISO de la région
161
- console.log(parsed.admin_level_3_code); // code de zone : QKAR
162
- console.log(parsed.macroblock); // B4A4
163
- console.log(parsed.microspot); // 2798
144
+ console.log(parsed.admin_level_2_Iso); // code ISO du pays : GN
145
+ console.log(parsed.admin_level_3_code); // code de la localite administrative de niveau 4 ou 6 immediate : CON
146
+ console.log(parsed.admin_level_4_code); // code de la localite administrative de niveau 8 et plus : QYTC
147
+ console.log(parsed.macroblock); // B0B1 macrobloc ~100m x 100m dans la zone
148
+ console.log(parsed.microspot); // 2282 microspot ~1m x 1m dans la zone
164
149
  console.log(parsed.isNationalGrid); // false
165
150
  }
166
151
 
167
152
  // Les codes partiels sont aussi supportés
168
- parseLapCode('GN-CKY-QKAR'); // région + zone seulement
169
- parseLapCode('QKAR'); // zone seulement
153
+ parseLapCode('GN-CON-QYTC'); // région + zone seulement
154
+ parseLapCode('QYTC'); // zone seulement
170
155
  ```
171
156
 
172
157
  ### Résoudre un code LAP vers un lieu
@@ -174,7 +159,7 @@ parseLapCode('QKAR'); // zone seulement
174
159
  ```js
175
160
  import { getPlaceByLapCode } from 'oglap-ggp-node-js';
176
161
 
177
- const resolved = getPlaceByLapCode('GN-CKY-QKAR-B4A4-2798');
162
+ const resolved = getPlaceByLapCode('GN-CON-QYTC-B0B1-2282');
178
163
 
179
164
  if (resolved) {
180
165
  console.log(resolved.originLat); // latitude d'origine de la bbox
@@ -187,8 +172,8 @@ if (resolved) {
187
172
  }
188
173
 
189
174
  // Accéder aux composants parsés
190
- console.log(resolved.parsed.macroblock); // B4A4
191
- console.log(resolved.parsed.microspot); // 2798
175
+ console.log(resolved.parsed.macroblock); // B0B1
176
+ console.log(resolved.parsed.microspot); // 2282
192
177
  }
193
178
  ```
194
179
 
@@ -238,10 +223,10 @@ const prefectures = getOglapPrefectures();
238
223
 
239
224
  | Champ | Type | Description |
240
225
  |---|---|---|
241
- | `lapCode` | `string` | Code LAP complet, ex. `GN-CKY-QKAR-B4A4-2798` |
226
+ | `lapCode` | `string` | Code LAP complet, ex. `GN-CON-QYTC-B0B1-2282` |
242
227
  | `country` | `string` | Code pays, ex. `GN` |
243
- | `admin_level_2` | `string` | Code de région, ex. `CKY` |
244
- | `admin_level_3` | `string\|null` | Code de zone, ex. `QKAR` |
228
+ | `admin_level_2` | `string` | Code de région, ex. `CON` |
229
+ | `admin_level_3` | `string\|null` | Code de zone, ex. `QYTC` |
245
230
  | `macroblock` | `string` | Composant macrobloc |
246
231
  | `microspot` | `string` | Composant microspot |
247
232
  | `isNationalGrid` | `boolean` | `true` si grille nationale utilisée |
@@ -362,25 +347,25 @@ class LocationService {
362
347
  // Utilisation
363
348
  await LocationService.init();
364
349
 
365
- // Encoder le centre de Conakry
366
- const code = LocationService.encodePosition(9.5370, -13.6773);
367
- console.log(code); // GN-CKY-QKAR-B4A4-2798
350
+ // Encoder
351
+ const code = LocationService.encodePosition(9.660147, -13.588009);
352
+ console.log(code); // GN-CON-QYTC-B0B1-2282
368
353
 
369
354
  // Décoder
370
355
  const coords = LocationService.decodeToCoords(code);
371
- console.log(coords); // { lat: 9.537..., lon: -13.677... }
356
+ console.log(coords); // { lat: 9.660147, lon: -13.588009 }
372
357
 
373
358
  // Partager
374
- const share = LocationService.shareLocation(9.5370, -13.6773);
375
- console.log(share.label); // Quartier Almamya, Conakry, Kindia, Guinée
359
+ const share = LocationService.shareLocation(9.660147, -13.588009);
360
+ console.log(share.label); // B0B1-2282, Yattaya Fossedè, Conakry, Guinée
376
361
 
377
362
  // Valider la saisie utilisateur
378
- const err = LocationService.validateInput('GN-CKY-QKAR-B4A4-2798');
363
+ const err = LocationService.validateInput('GN-CON-QYTC-B0B1-2282');
379
364
  console.log(err); // null (valide)
380
365
 
381
366
  // Résoudre un lieu
382
- const place = LocationService.resolvePlace('GN-CKY-QKAR-B4A4-2798');
383
- console.log(place.name); // Quartier Almamya
367
+ const place = LocationService.resolvePlace('GN-CON-QYTC-B0B1-2282');
368
+ console.log(place.display_name); // Yattaya Fossedè, Ratoma, Conakry, Guinée
384
369
  ```
385
370
 
386
371
  ---
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oglap-ggp-node",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "description": "Permettre aux développeurs d'installer rapidement le SDK et ses dépendances pour commencer à l'utiliser dans leurs projets.",
5
5
  "type": "module",
6
6
  "main": "oglap.js",