1.0.3 • Published 5 years ago

shapefile-parser v1.0.3

Weekly downloads
5
License
MIT
Repository
github
Last release
5 years ago

shapefile-parser

A Node.js/Typescript module to parse geometries data from the (.shp) Shape and (.dbf) dBase files.

Installation

npm install shapefile-parser --save
yarn add shapefile-parser
bower install shapefile-parser --save

Usage

TypeScript

Methods for parsing geometries data from the shape Files

import {ShapeFileParser} from 'shapefile-parser';
import { ShapeFile } from 'shapefile-parser/models/shapefile';

let shapeFile:ShapeFile = ShapeFileParser.parse(shpBuffer);
let shapeFileWithAttributes:ShapeFile = ShapeFileParser.parseShpAndDbf(shpBuffer, dbfBuffer);
Output should be an instance of ShapeFile class

Example 1:Reading shape file from local path 'D:\Workspace\tests\sampleShpFiles\sample2-line.shp'

import {ShapeFileParser} from 'shapefile-parser';
import { ShapeFile } from 'shapefile-parser/models/shapefile';
import * as fs from "fs";

let buffer:Buffer=fs.readFileSync('/Workspace/tests/sampleShpFiles/sample2-line.shp')
let shapeFile:ShapeFile = ShapeFileParser.parse(buffer);
if(shapeFile.isValid()){
    console.log(shapeFile.shapeFileHeader);
    console.log(shapeFile.ShapeRecords);
}

Example 2:Reading shape file from 'File' input HtmlElement

<input type="file" id="avatar" (change)="onFileChange($event)" #fileInput>
import {ShapeFileParser} from 'shapefile-parser';
import { ShapeFile } from 'shapefile-parser/models/shapefile';
import * as fs from "fs";

onFileChange(event) {
    let reader = new FileReader();
    if (event.target.files && event.target.files.length > 0) {
      let file = event.target.files[0];
      reader.readAsArrayBuffer(file);
      reader.onload = () => {
        var arrayBuffer: ArrayBuffer = reader.result as ArrayBuffer;
        if (arrayBuffer) {
          let buffer: any = Buffer.from(arrayBuffer);
          let shapeFile:ShapeFile = ShapeFileParser.parse(buffer);
          if(shapeFile.isValid()){
            console.log(shapeFile.shapeFileHeader);
            console.log(shapeFile.ShapeRecords);
          }
        }
      };
    }
  }

Javascript

Example 1:Reading shape file from local path 'D:\Workspace\tests\sampleShpFiles\sample2-line.shp'

var shapeFileParser = require('shapefile-parser');
var fs = require('fs');

var buffer:Buffer=fs.readFileSync('/Workspace/tests/sampleShpFiles/sample2-line.shp')
var shapeFile:ShapeFile = shapeFileParser.parse(buffer);
if(shapeFile.isValid()){
    console.log(shapeFile.shapeFileHeader);
    console.log(shapeFile.ShapeRecords);
}

Exmaple 2:Reading shape file from 'File' input HtmlElement

<input type="file" id="avatar" (change)="onFileChange($event)" #fileInput>
var shapeFileParser = require('shapefile-parser');

function onFileChange(event) {
    var reader = new FileReader();
    if (event.target.files && event.target.files.length > 0) {
      var file = event.target.files[0];
      reader.readAsArrayBuffer(file);
      reader.onload = () => {
        var arrayBuffer: ArrayBuffer = reader.result as ArrayBuffer;
        if (arrayBuffer) {
          var buffer: any = Buffer.from(arrayBuffer);
          var shapeFile:ShapeFile = ShapeFileParser.parse(buffer);
          if(shapeFile.isValid()){
            console.log(shapeFile.shapeFileHeader);
            console.log(shapeFile.ShapeRecords);
          }
        }
      };
    }
  }

AMD

define(function(require,exports,module){
  var parser = require('shapefile-parser');
});

Supported Shape File

ShapeFile Extension

*.shp: Supported
*.dbf: Supported
*.prj: Not Supported
*.shx: Not Required, as reading geometries sequentially

Supported Geometry Shape

2D Geometry Shape

NullShape: Supported
Point: Supported
PolyLine: Supported
Polygon: Supported
MultiPoint: Supported

3D Geometry Shape

PointM: Supported
PolyLineM: Supported
PolygonM: Supported
MultiPointM: Supported

4D Geometry Shape

PointZ: Supported
PolyLineZ: Not Supported
PolygonZ: Not Supported
MultiPointZ: Not Supported

Other Geometry Shape

MultiPatch: Not Supported

Support

You can directly send any bug/issue or suggestion to my personal email id: shubhgupta4u@gmail.com.
1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago