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 问题 页面。


上一篇:成功使用DDNS动态域名访问我的群晖NAS(TP-link路由器)


下一篇:计算机网络基础