npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

jmaps

v0.5.3

Published

A light Javascript API for reading Natural Earth DB files

Downloads

40

Readme

jMaps

NPM version GitHub last commit Github workflow Test coverage License

jMaps is a light Javascript API for reading Natural Earth's DB files. jMaps provides methods to extract data from the database and creates GeoJSON and XML SVG outputs.

Usage

Extract data and create a GeoJSON object

var jMaps = require('jmaps');

// Create the object
const jmap = jMaps();

// Load the Natural Earth database:
jmap.load('<path>, <ne_110m_admin_0_countries>')

// Get a collection of maps (FeatureCollection)
const maps = jmap.getCollection();

// Get a map (Feature)
const map = jmap.getFeature('feature number');

The GeoJSON object looks like:

{
  bbox: [ ... ],
  type: 'FeatureCollection',
  features: [
    { type: 'Feature', properties: [Object], geometry: [Object] },
    ...
    { type: 'Feature', properties: [Object], geometry: [Object] }
  ]
}

A Feature looks like:

{
  type: 'Feature',
  properties: { ... },
  geometry : {
    type: 'Polygon'
    coordinates: [ ... ]
  }

Nota:

A Natural Earth's database is a folder that contains, at least, two files having the same name as the folder and with the suffix .dbf and .shp. For instance, Natural Earth's database ne_50m_admin_0_countries must contains the two files: ne_50m_admin_0_countries.dbf and ne_50m_admin_0_countries.shp.

Create an XML SVG file

const fs = require('fs');
const jMaps = require('jmaps');

const jmap = jMaps();
jmap.load('<path>, <ne_110m_admin_0_countries>')

// Transform the longitudes and latitudes, from a collection, to x, y plane coordinates
const map = jmap.transform({scale: 1, projection: 'mercator', mirror: 'x'});

// Create a File stream
const fd = fs.createWriteStream('path/to/svg/file', {flags: 'w'});

// Fill the write stream
jmap.toSVG(map, fs);

It creates an XML file that looks like:

<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
  <g transform="translate(0, 0) scale(1, 1)">
    <path id="" class="land" d="...."></path>
  </g>
</svg>

A Feature produces an XML SVG file with one path while a FeatureCollection produces an XML SVG file with a multitude of paths.

You can enrich your XML files with information extracted from the property properties of a Feature object.

API

This module implements four methods:

  • getFeature(feature number),
  • getCollection(),
  • transform(options),
  • toSVG(GeoJSON object, write file stream).

getFeature(n)

This method extracts one Feature from Natural Earth's database and returns a Javascript GeoJSON object.

This method requires one argument. Its is a number - the Feature number. It starts from 1.

getCollection()

This method extracts a FeatureCollection from Natural Earth's database and returns a Javascript GeoJSON object. A FeatureCollection is a set of Feature.

transform(options)

This methods converts the longitude and latitude coordinates of the GeoJSON object to x, y plane coordinates. It returns the transformed Javascript GeoJSON object.

This methods extracts a collection from the loaded database, converts it and returns the converted GeoJSON object.

The options argument is optional. If nothing is provided, the default options are:

{ scale: 1, projection: none, mirror: 'none' }

scale can be any number from 1 to 'infinity'.

projection can be none or mercator.

mirror can be none, x, y, xy.

toSVG(GeoJSON, fd)

This method generates XML SVG data from a collection or a transformed collection.

This method requires two arguments. A GeoJSON object (collection) and fd, a file write stream handler.

License

MIT.