JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 2
  • Score
    100M100P100Q20062F
  • License ISC

Reads a PSGC publicaton file

Package Exports

  • psgc-reader
  • psgc-reader/dist/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (psgc-reader) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

psgc-reader

A package for ingesting PSGC publication files

How to use

1. Import the package

import PSGC from "psgc";

// We only need one instance of the object
const psgc = PSGC.instance;

2. Read

  • supply the publication file to filePath
  • sheetName has default value set to "PSGC"
  • Records will be stored in locations
await psgc.readExcel(filePath, sheetName);

console.log(psgc.locations);

3. Filter

  • filteredPSGC is just filtered locations
  • tables contain location data that we can associate to each other
psgc.filterGeoLevel();

console.log(psgc.filteredPSGC);
console.log(psgc.tables);

4. Associate

This will link all the locations in the tables property

psgc.associateLocations();

5. Explore

console.log("[Regions]");
psgc.tables.regions.map((region) => console.log(" >", region.name));

console.log("[SubMunicipalities under Manila]");
psgc.tables.cities
    .filter((city) => city.code === "1380600000")[0]
    .subMunicipalities?.map((subMunicipality) =>
        console.log(" >", subMunicipality.name)
    );

// https://stackoverflow.com/a/66523350
const barangayCountByName = psgc.tables.barangays.reduce(
    (barangay, { name }) => {
        barangay[name] = barangay[name] || 0;
        barangay[name] += 1;

        return barangay;
    },
    {}
);

// https://stackoverflow.com/a/1069840
const barangayCountByNameSorted: any[] = [];
for (let name in barangayCountByName) {
    barangayCountByNameSorted.push([name, barangayCountByName[name]]);
}
barangayCountByNameSorted.sort(function (a, b) {
    return b[1] - a[1];
});

console.log("[Top 10 barangay names]");
console.log(barangayCountByNameSorted.slice(0, 10));