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

geoshp

v0.1.5

Published

Shapefile to GeoJSON converter

Downloads

492

Readme

GeoShp

中文 | English

Overview

GeoShp is a lightweight JavaScript library that allows you to parse Shapefile (.shp and .dbf) files and convert them into GeoJSON objects. It supports both Node.js and browser environments, and can be used with either CommonJS or ES Modules. With no external dependencies, GeoShp provides a simple and efficient way to handle geographic data in your JavaScript applications.

Features

  • Pure JavaScript: No additional libraries or dependencies required.
  • Cross-environment: Works in both Node.js and modern browser environments.
  • Module support: Compatible with CommonJS and ES Modules.
  • Shapefile parsing: Parses .shp and .dbf files to extract geographic data.
  • GeoJSON output: Converts parsed data into GeoJSON format for easy integration with mapping libraries.

Installation

Node.js

To use GeoShp in a Node.js project, install it via npm:

npm install geoshp

Browser

For browser usage, you can include GeoShp as a module in your JavaScript bundle. Ensure your build system supports ES Modules or use a CDN link if available.

Usage

CommonJS Example

The following example demonstrates how to use GeoShp with CommonJS in a Node.js environment:

const fs = require("fs");
const GeoShp = require('geoshp');

// Read .shp and .dbf files synchronously
const dbfBuffer = fs.readFileSync('./data/mian.dbf');
const shpBuffer = fs.readFileSync('./data/mian.shp');

// Convert the Shapefile data to GeoJSON
const json = GeoShp.toJSON(
    shpBuffer.buffer,       // SHP file buffer
    shpBuffer.byteOffset,   // SHP file buffer offset
    dbfBuffer.buffer,       // DBF file buffer
    dbfBuffer.byteOffset    // DBF file buffer offset
);

// Output the GeoJSON object as a string
console.log(JSON.stringify(json, null, 2));

ES Modules Example

For ES Modules, the usage is similar but with import statements:

import * as GeoShp from 'geoshp';
import fs from 'fs';

// Read .shp and .dbf files synchronously
const dbfBuffer = fs.readFileSync('./data/mian.dbf');
const shpBuffer = fs.readFileSync('./data/mian.shp');

// Convert the Shapefile data to GeoJSON
const json = GeoShp.toJSON(
    shpBuffer.buffer,       // SHP file buffer
    shpBuffer.byteOffset,   // SHP file buffer offset
    dbfBuffer.buffer,       // DBF file buffer
    dbfBuffer.byteOffset    // DBF file buffer offset
);

// Output the GeoJSON object as a string
console.log(JSON.stringify(json, null, 2));

Browser Usage

In a browser environment, you would typically load the GeoShp module along with your other dependencies using a module bundler like Webpack or Rollup. Once included, the usage is the same as in Node.js, except you would obtain the .shp and .dbf file contents through other means (e.g., fetching from a server).

API

GeoShp.toJSON(shpBuffer, shpOffset, dbfBuffer, dbfOffset)

  • shpBuffer: ArrayBuffer - The buffer containing the .shp file data.
  • shpOffset: number - The byte offset within the .shp buffer where the data starts.
  • dbfBuffer: ArrayBuffer - The buffer containing the .dbf file data.
  • dbfOffset: number - The byte offset within the .dbf buffer where the data starts.

Returns a GeoJSON object representing the parsed Shapefile data.

License

GeoShp is licensed under the MIT License.

Contributing

Feel free to contribute to GeoShp by submitting issues, feature requests, or pull requests on the GitHub repository.

Support

For support or questions, please use the GitHub issues page.