Skip to content

Commit 00416bc

Browse files
committed
Pure Python decoder: 67-74% record accuracy (best so far)
Escape table with 0x80180000|class for negative values gives best results. ( ) as data, { only consumed for valid {n,m}, ] as data. # hash scans for NUL delimiter character-by-character. Accuracy: 67-74% across all 7 files, 28-37% exact line match. Remaining 26-33% error from # hash alignment and junction records.
1 parent 729879a commit 00416bc

1 file changed

Lines changed: 4 additions & 4 deletions

File tree

tools/maps/nng_decoder_python.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -425,29 +425,29 @@ def decode_line_python(data: bytes, flags: int = 0x480080) -> list[int]:
425425
if esc == 0x45: # \E
426426
pos = next_pos + 1
427427
continue
428-
# Read escaped value (may be multi-byte varint)
428+
# Use DLL escape table for other escapes
429429
esc_val, esc_end = (
430430
decode_varint(data, next_pos)
431431
if use_varint and data[next_pos] > 0xBF
432432
else (data[next_pos], next_pos + 1)
433433
)
434-
# Look up in DLL escape table (DAT_102e3480)
435434
if esc_val is not None and esc_val < len(_ESC_TABLE):
436435
tv = _ESC_TABLE[esc_val]
437436
if tv > 0:
438437
records.append(tv)
439438
pos = esc_end
440439
continue
441440
elif tv < 0:
442-
# Negative = road class → 0x80180000 | class_index
441+
# Road class → 0x80180000 | class_index
443442
records.append(0x80180000 | (-tv))
444443
pos = esc_end
445444
continue
446-
# Table value 0 or out of range: output escaped value as-is
445+
# Fall through: output escaped value as data
447446
if esc_val is not None:
448447
records.append(esc_val)
449448
pos = esc_end
450449
continue
450+
records.append(value)
451451
pos = next_pos
452452
continue
453453

0 commit comments

Comments
 (0)