A modern spatial addressing system that transforms geographic coordinates into multi-layered vector addresses with support for levels of detail and constraints. Each address follows x,y,z,t,p.
Definition
x,y,z,t,p — spatial + temporal + plane index
// x, y, z — spatial coordinates
// t — temporal component (default 0)
// p — plane index (multiple addresses at same point)
<vec_address> ::= x,y,z,t,p
Architecture
Four layers with different constraints and ranges
Layer | Coordinate Range | Address Limit | Purpose |
---|---|---|---|
CORE | 0.0000–1.9999 | Unlimited | Core layer for critical objects |
ORIGINS | 2.0000–9.9999 | 10,000,000 | Base objects and sources |
SOCIAL | 10.0000–99.9999 | 100,000,000 | Social objects and services |
EXPANSE | 100.0000–199.0000 | Unlimited | Extended space |
Architecture
Methods
Geographic transformation, planes, and constraints
function mapGeoToVector(layer, { latitude, longitude, altitude }) {
return { x: 0, y: 0, z: 0 };
}
Normalization
Latitude −90..+90, Longitude −180..+180, Altitude 0..10,000 m
Linear interpolation
// Normalize 0..1
const tx = (longitude - LON_MIN) / (LON_MAX - LON_MIN);
const ty = (latitude - LAT_MIN) / (LAT_MAX - LAT_MIN);
const tz = (altitude - ALT_MIN) / (ALT_MAX - ALT_MIN);
// Project to layer range
const x = xmin + (xmax - xmin) * tx;
const y = ymin + (ymax - ymin) * ty;
const z = zmin + (zmax - zmin) * tz;
Rounding
Apply precision per-layer
API
Generate, claim/release planes, search, and tiles
POST /vector-addresses/generate
{
"layer": "SOCIAL",
"latitude": "40.7589",
"longitude": "-73.9851",
"altitude": "87"
}
POST /vector-addresses/claim-plane
{
"layer": "SOCIAL",
"x": 45.1234,
"y": 67.5678,
"z": 12.3456
}
POST /vector-addresses/release-plane
{
"layer": "SOCIAL",
"vector_address": "45.1234,67.5678,12.3456,0,1"
}
GET /vector-addresses/search?q={query}&limit={limit}
Visualization
Vector tiles for map visualization
GET /vector-addresses/tiles/{z}/{x}/{y}.pbf
?layer=SOCIAL&status=occupied
Params
z/x/y, layer, status, api_key_id
Responses
200 PBF, 204 No Content, 500 Error
Headers
Content-Type: application/vnd.mapbox-vector-tile
Cache-Control: public, max-age=900
Access-Control-Allow-Origin: *
L.tileLayer('/vector-addresses/tiles/{z}/{x}/{y}.pbf?layer=SOCIAL', {
maxZoom: 18, tileSize: 256, attribution: 'XRDNA Vector Addresses'
}).addTo(map);
map.addSource('vector-addresses', {
type: 'vector',
tiles: ['/vector-addresses/tiles/{z}/{x}/{y}.pbf?layer=SOCIAL'],
maxzoom: 18
});
Storage
VectorAddress & VectorAddressPlane
Stack
Examples
POST /vector-addresses/generate {
layer: 'SOCIAL', latitude: '40.7589', longitude: '-73.9851', altitude: '87'
}
→ { vector_address: '35.7642,56.8931,87.000,0,0', layer: 'SOCIAL' }
'35.7642,56.8931,8.7000,0,0'
'35.7642,56.8931,8.7000,0,1'
'35.7642,56.8931,8.7000,0,2'
Ops
Swagger/OpenAPI docs
Auto-generated, versioned with the API.
Tiles caching
Vector tiles cached 15 minutes for performance.
CI testing
Jest + Supertest suites for endpoints and validation.
Use the HTTP API, vector tiles, and database schema to model spatial objects with layered precision.