Skip to content

horensen/sg-areas

Repository files navigation

sg-areas

sg-areas is a TypeScript library for finding regions, areas and subzones in Singapore.

Installation

npm i sg-areas

Usage

import {
  administrativeLocations,
  getAreas,
  getSubzones,
  getNearest,
} from "sg-areas";
const { Region, Area, Subzone } = administrativeLocations;

Get areas based on regions

An area (or planning area) in Singapore is the first level of census division. They are organised into different regions.

const regions = [
  Region.CENTRAL,
  Region.EAST,
  Region.NORTH,
  Region.NORTHEAST,
  Region.WEST,
]; // any number of regions
const areas = getAreas(regions);

// {
//   "BSH": {
//     "name": {"en": "Bishan", "zh": "碧山"},
//     "coordinates": {"latitude": 1.35382, "longitude": 103.84327},
//     "region": "C"
//   },
//   "BMR": {
//     "name": {"en": "Bukit Merah", "zh": "红山"},
//     "coordinates": {"latitude": 1.27549, "longitude": 103.82313},
//     "region": "C"
//   },
//   "BKT": {
//     "name": {"en": "Bukit Timah", "zh": "武吉知马"},
//     "coordinates": {"latitude": 1.32999, "longitude": 103.7907},
//     "region": "C"
//   },
//   ... and so on ...
// }

regions may be an empty array or undefined. If so, all areas are returned.

Get subzones based on areas

A subzone is more granular division within an area.

const areas = [Area.TANGLIN]; // any number of areas
const subzones = getSubzones(areas);

// {
//   "TGL_CHA":{
//     "name":{"en":"Chatsworth"},
//     "coordinates":{"latitude":1.29703461507,"longitude":103.823402263},
//     "area":"TGL"
//   },
//   "TGL_NAS":{
//     "name":{"en":"Nassim"},
//     "coordinates":{"latitude":1.3138608469,"longitude":103.82435728},
//     "area":"TGL"
//   },
//   "TGL_RID":{
//     "name":{"en":"Ridout"},
//     "coordinates":{"latitude":1.30343427502,"longitude":103.811468698},
//     "area":"TGL"
//   },
//   "TGL_TYE":{
//     "name":{"en":"Tyersall"},
//     "coordinates":{"latitude":1.31458674408,"longitude":103.812945338},
//     "area":"TGL"
//   }
// }

areas may be an empty array or undefined. If so, all subzones are returned. The full list of areas are found in Area.

Get nearest area/subzone by given location

const MARINA_BAY_SANDS = {latitude: 1.2836491, longitude: 103.8575854};

const proximity = { closest: 1 }; // default is 1

const nearest = getNearest(MARINA_BAY_SANDS, proximity);

// {
//   areas: {
//     DTC: {
//       name: { en: "Downtown Core", zh: "市中心" },
//       coordinates: { latitude: 1.28506, longitude: 103.8543 },
//       region: "C",
//       distance: 398,
//     },
//   },
//   subzones: {
//     DTC_BAY: {
//       name: { en: "Bayfront" },
//       coordinates: { latitude: 1.28333472525, longitude: 103.858533762 },
//       area: "DTC",
//       distance: 111,
//     },
//   },
// }

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

License

MIT

About

Regions, areas and subzones in Singapore

Resources

License

Stars

Watchers

Forks

Packages

No packages published