---
id: "packages/active-geo/api/world-50m"
title: "World 50m"
description: "GeoCountryAttributes, GeoCountryCodes, GeoCountryFeature, GeoCountryGeometry and 5 more: generated from the source of active-geo."
url: "/packages/active-geo/api/world-50m"
locale: "en"
revision: "g0mvjxwj5c-88bdbe1c:world-50m"
---

# World 50m

Exported by `@workspace/active-geo/collections/world-50m`. Generated from the package source; part of [the index of every export](/packages/active-geo/api).

## Functions, hooks and constants

**world50m**: `{ readonly collection: "world-50m"; readonly dataset: { readonly id: "active-geo/world-50m"; readonly version: "ne-5.1.1+r1"; }; readonly title: "Natural Earth Admin 0 - Countries, 1:50m"; readonly coverage: "world"; readonly level: "admin-0"; readonly scale: "1:50m"; readonly featureCount: 242; readonly bounds: readonly [-180, -89.9989, 180, 83.5996]; readonly crs: "WGS 84, longitude and latitude in degrees"; readonly convention: "rfc7946"; readonly key: { readonly field: "ADM0_A3"; readonly type: "string"; }; readonly source: { readonly name: "Natural Earth Admin 0 - Countries, 1:50m"; readonly themeVersion: "5.1.1"; readonly release: "v5.1.2"; readonly url: "https://raw.githubusercontent.com/nvkelso/natural-earth-vector/v5.1.2/geojson/ne_50m_admin_0_countries.geojson"; readonly sha256: "3e458fc036ad0a66411f2c1e6cac49c5d7bfb81cb1123bc513b22511a2b7fdeb"; readonly primaryUrl: "https://naciscdn.org/naturalearth/50m/cultural/ne_50m_admin_0_countries.zip"; readonly primarySha256: "5fed433373581fa648920435f937d95f2d3c0200e067409c6478dcdf1b853139"; readonly acquired: "2026-10-04"; }; readonly rights: { readonly status: "public-domain"; readonly terms: "https://www.naturalearthdata.com/about/terms-of-use/"; readonly license: "https://github.com/nvkelso/natural-earth-vector/blob/master/LICENSE.md"; }; readonly attribution: "Made with Natural Earth. Free vector and raster map data @ naturalearthdata.com."; readonly boundaryPolicy: { readonly id: "natural-earth-de-facto"; readonly url: "https://www.naturalearthdata.com/about/disputed-boundaries-policy/"; readonly statement: "Boundaries follow the Natural Earth default de facto representation. Disputed areas stay the objects the source draws. A cartographic representation; no position on sovereignty."; }; readonly transformation: { readonly tool: "topojson-server 3.0.1"; readonly decimals: 4; readonly quantization: 100000; readonly steps: readonly ["select and type the fields; -99 becomes null", "round coordinates to 4 decimals", "write the RFC 7946 winding (exterior counter-clockwise, holes clockwise)", "build one TopoJSON topology quantized at 100000"]; readonly assetSha256: "cc9b86b2d288ccf29a9e77fe422d91abd12b6847326df07f7b718955bc9e0f3f"; }; }`

Source, version, rights, boundary policy, bounds and build of the
collection. `world50m.dataset` goes to `GeoMapProps.dataset`;
`world50m.attribution` is the suggested `GeoMapProps.attribution` (Natural
Earth asks for no credit).

**loadWorld50m**: `() => Promise<readonly GeoCountryFeature[]>`

Loads and decodes the collection's 242 areas, in source order. Every call
resolves to the SAME frozen array: features, geometry, positions, codes
and attributes are frozen, so the data can be shared between maps and the
map's per-geometry work is reused. A host that needs to change an area
copies it. A failed load (the chunk did not arrive, or the asset is not
the supported format) rejects, and the next call tries again. No network
request leaves the host: the data is part of the consumer's bundle.

## Types

**GeoCountryAttributes**

```ts
interface GeoCountryAttributes {
  readonly nameLong: string;
  readonly type: string;
  readonly sovereign: string;
  readonly continent: string;
}
```

Source attributes with their Natural Earth meaning; no hierarchy.

**GeoCountryCodes**

```ts
interface GeoCountryCodes {
  readonly neId: number;
  readonly isoA3: string | null;
  readonly isoA2: string | null;
  readonly isoN3: string | null;
  readonly wikidata: string | null;
}
```

Codes of the source, for a host that maps its own records to keys. None of
them is a key of this collection: `isoA3` repeats (`AUS` names three
objects) and is `null` where the source writes `-99`.

**GeoCountryFeature**

```ts
interface GeoCountryFeature {
  readonly key: string;
  readonly name: string;
  readonly geometry: GeoCountryGeometry;
  readonly codes: GeoCountryCodes;
  readonly attributes: GeoCountryAttributes;
}
```

One area of the collection. Frozen: shared by every load.

**GeoCountryGeometry**

```ts
type GeoCountryGeometry =
  | {readonly type: 'Polygon'; readonly coordinates: readonly GeoCountryRing[]}
  | {
      readonly type: 'MultiPolygon';
      readonly coordinates: readonly (readonly GeoCountryRing[])[];
    };
```

**GeoCountryPosition**

```ts
type GeoCountryPosition = readonly [longitude: number, latitude: number];
```

The public shapes of the world-50m collection. Declared here, not imported
from the package root, so the collection entry reaches nothing outside its
own directory. A `GeoCountryFeature` is structurally a
`GeoAreaFeature` of the root entry: pass `features` to an area layer as
they are (pinned by a type test).

**GeoCountryRing**

```ts
type GeoCountryRing = readonly GeoCountryPosition[];
```

**GeoWorld50mMetadata**

```ts
type GeoWorld50mMetadata = typeof WORLD_50M_METADATA;
```

The collection's provenance and identity; loads no geometry.
