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

news/2024/10/8 22:46:36 标签: shapefile, geojson

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



http://www.niftyadmin.cn/n/5694907.html

相关文章

ssm图书管理系统的设计与实现

系统包含:源码论文 所用技术:SpringBootVueSSMMybatisMysql 免费提供给大家参考或者学习,获取源码请私聊我 需要定制请私聊 目 录 摘 要 I Abstract II 第1章 绪论 1 1.1 课题研究背景 1 1.2课题研究现状 1 1.3课题实现目的和意义 …

Word转PDF的转换方法有哪些?这7个效率技巧,不知道就亏大了!

Word转PDF怎么转?我们在日常工作生活中,经常会用到word文档。如果是编写报告、做会议记录、制定文案等内容,一般都会选择创建word文档。但是如果需要发送给同事、客户或合作伙伴协作时,pdf格式会更加方便。 那么如何将word转为pdf…

使用CMake构建C动态库

文章目录 概要为什么目的设想工作空间代码代码结构库Private implementationPublic implementation编译一切使用库 概要 这篇文章的目的是提供一个示例,介绍如何在 Linux 中使用 CMake 作为构建工具来创建 C 共享库。 为什么 我找不到一个清晰而简单的示例来说明…

docker compose入门2—docker-compose.yaml中的version表示什么意思

在 Docker Compose 中,version 字段用于指定 docker-compose.yml 文件的版本格式。不同版本定义了不同的功能和语法,因此 version 决定了你能够使用哪些特性和指令。 常见的 Compose 文件版本 Version 1: 不需要明确指定 version 字段。只支持最基础的功…

Koa2项目实战1(项目搭建)

前言 在正式开始之前,需要先知道用到的东西: koa:Koa 是一个基于 Node.js 的 Web 应用框架,非常适合开发API服务,可以与前端框架(如 Vue.js、React.js)结合使用,实现前后端分离的开…

滚雪球学Oracle[2.4讲]:创建Oracle数据库实例

全文目录: 前言一、使用DBCA进行复杂环境下的实例创建1.1 使用DBCA的步骤案例演示:DBCA创建实例 1.2 优点与适用场景 二、手动创建数据库实例的步骤与脚本2.1 手动创建数据库实例的步骤案例演示:手动创建Oracle数据库实例 2.2 手动创建的优点…

C(十一)scanf、getchar(第三弹)

问题引入:如何实现输入一串密码,如:“123 xxxx” ,然后读取并确认,是 -- Y;否 -- N。 自然的,我们想到用scanf,但是在使用过程中你是否遇到跟我一样的困惑呢?如下&…

23.第二阶段x86游戏实战2-背包遍历(OD卡死解决办法,背包数量基址)

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 本人写的内容纯属胡编乱造,全都是合成造假,仅仅只是为了娱乐,请不要…