geoshp
v0.1.5
Published
Shapefile to GeoJSON converter
Downloads
45
Readme
GeoShp
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.