当前位置: 首页 > article >正文

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



http://www.kler.cn/news/329040.html

相关文章:

  • 消息队列(MQ)深度探索:架构精髓、卓越优势与广泛应用
  • UE5 项目缓存文件删除、版本控制说明(工程目录结构)
  • 解决DHCP服务异常导致设备无法获取IP地址的方法
  • Thinkphp/Laravel基于vue的少数民族民歌网络图书馆管理系统
  • STM32低功耗实验学习日记
  • GO语言环境搭建和字符说明
  • 【Linux系统编程】第二十六弹---彻底掌握文件I/O:C/C++文件接口与Linux系统调用实践
  • 中国身份证号码校验
  • python和r语言的区别是什么
  • alpine安装docker踩坑记
  • git初级使用学习(图文)
  • uniapp微信小程序使用ucharts遮挡自定义tabbar的最佳解决方案
  • Windows 11 的 24H2 更新將帶來全新 Copilot+ AI PC 功能
  • linux文本三剑客
  • 【SQLite】sqlite | insert插入存在即更新
  • 828华为云征文 | 华为云X实例CPU性能测试详解与优化策略
  • Android Studio :The emulator process for AVD was killed。
  • 微服务--SpringAMQP
  • YOLOv5改进:Unified-loU,用于高品质目标检测的统一loU ,2024年8月最新IoU
  • 【嵌入式linux】GPIO子系统 | 用户空间交互
  • 使用 Nginx 和 Gunicorn 部署 Flask 项目详细教程
  • 《论文阅读》PECER:通过动态人格提取和情境情绪推理产生同理心反应 ICASSP 2024
  • Spring1
  • golang学习笔记21-面向对象(三):封装与继承【重要】
  • Spring Boot助力IT领域交流平台开发
  • ffmpeg拉取rtsp网络视频流报错解析
  • XPath基础知识点讲解——用于在XML中查找信息的语言
  • Redis 篇-深入了解 Redis 中的 RESP 通信协议与内存回收(过期 key 处理、内存淘汰策略)
  • CentOS系统yum出现Could not retrieve mirrorlist问题
  • G502 鼠标自定义(配合 karabiner)