GeoShp:shapefile转geojson支持nodejs和浏览器

GeoShp

概述

GeoShp 是一个轻量级的 JavaScript 库,允许您解析 Shapefile(.shp 和 .dbf)文件并将其转换为 GeoJSON 对象。它支持 Node.js 和浏览器环境,并且可以与 CommonJS 和 ES Modules 兼容。GeoShp 不依赖任何外部库,为您的 JavaScript 应用程序提供了一种简单而高效的方式来处理地理数据。

功能

  • 纯 JavaScript:无需任何额外的库或依赖。
  • 跨环境:适用于 Node.js 和现代浏览器环境。
  • 模块支持:兼容 CommonJS 和 ES Modules。
  • Shapefile 解析:解析 .shp 和 .dbf 文件以提取地理数据。
  • GeoJSON 输出:将解析的数据转换为 GeoJSON 格式,便于与地图库集成。

安装

Node.js

要在 Node.js 项目中使用 GeoShp,请通过 npm 安装:

npm install geoshp

浏览器

对于浏览器使用,您可以将 GeoShp 作为模块包含在您的 JavaScript 包中。确保您的构建系统支持 ES Modules,或者使用 CDN 链接(如果可用)。

使用方法

CommonJS 示例

以下示例演示了如何在 Node.js 环境中使用 GeoShp 与 CommonJS:

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

// 同步读取 .shp 和 .dbf 文件
const dbfBuffer = fs.readFileSync('./data/mian.dbf');
const shpBuffer = fs.readFileSync('./data/mian.shp');

// 将 Shapefile 数据转换为 GeoJSON
const json = GeoShp.toJSON(
    shpBuffer.buffer,       // SHP 文件缓冲区
    shpBuffer.byteOffset,   // SHP 文件缓冲区偏移量
    dbfBuffer.buffer,       // DBF 文件缓冲区
    dbfBuffer.byteOffset    // DBF 文件缓冲区偏移量
);

// 以字符串形式输出 GeoJSON 对象
console.log(JSON.stringify(json, null, 2));

ES Modules 示例

对于 ES Modules,使用方法类似,但使用 import 语句:

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

// 同步读取 .shp 和 .dbf 文件
const dbfBuffer = fs.readFileSync('./data/mian.dbf');
const shpBuffer = fs.readFileSync('./data/mian.shp');

// 将 Shapefile 数据转换为 GeoJSON
const json = GeoShp.toJSON(
    shpBuffer.buffer,       // SHP 文件缓冲区
    shpBuffer.byteOffset,   // SHP 文件缓冲区偏移量
    dbfBuffer.buffer,       // DBF 文件缓冲区
    dbfBuffer.byteOffset    // DBF 文件缓冲区偏移量
);

// 以字符串形式输出 GeoJSON 对象
console.log(JSON.stringify(json, null, 2));

浏览器使用

在浏览器环境中,您通常会使用像 Webpack 或 Rollup 这样的模块打包工具,与其他依赖项一起加载 GeoShp 模块。包含后,使用方式与 Node.js 中相同,只是您会通过其他方式(例如从服务器获取)来获取 .shp 和 .dbf 文件的内容。

API

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

  • shpBuffer: ArrayBuffer - 包含 .shp 文件数据的缓冲区。
  • shpOffset: number - .shp 缓冲区中数据开始的字节偏移量。
  • dbfBuffer: ArrayBuffer - 包含 .dbf 文件数据的缓冲区。
  • dbfOffset: number - .dbf 缓冲区中数据开始的字节偏移量。

返回一个表示解析后的 Shapefile 数据的 GeoJSON 对象。

许可证

GeoShp 采用 MIT 许可证 进行许可。

贡献

欢迎通过提交问题、功能请求或拉取请求,为 GeoShp 做出贡献。请访问 GitHub 仓库 进行操作。

支持

如有支持或疑问,请使用 GitHub 问题 页面。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值