GIS常用npm包:GeoJSON文件合并与元素过滤\属性过滤\图形合并
GeoJSON文件合并
普通的geoJSON文件合并,只需geojson-merge插件就够了,https://www.npmjs.com/package/@mapbox/geojson-merge
mergeFeatureCollectionStream 合并文件
Merge GeoJSON files containing GeoJSON FeatureCollections into a single stream of a FeatureCollection as a JSON string.
merge 合并GeoJSON数组
Merge a series of GeoJSON objects into one FeatureCollection containing all features in all files. The objects can be any valid GeoJSON root object, including FeatureCollection, Feature, and Geometry types.
合并文件,官网的案例
var geojsonMerge = require('@mapbox/geojson-merge');
var mergedStream = geojsonMerge.mergeFeatureCollectionStream(['features.geojson','others.geojson'])
mergedStream.pipe(process.stdout);
在浏览器端,需要导入文件,fileReader读取文件,获取json,再合并
var geojsonMerge = require('@mapbox/geojson-merge')
let features = []
// Todo push jgeoJSON
let jsonObject = geojsonMerge.merge(features)
GeoJSON过滤
GeoJSON一feature properties过滤
https://www.npmjs.com/package/turf-filter
turf.filter(features, key, value)
var features = turf.featurecollection([
turf.point([-72.581777, 44.260875], {species: 'oak'}),
turf.point([-72.570018, 44.260691], {species: 'birch'}),
turf.point([-72.576284, 44.257925], {species: 'oak'}),
turf.point([-72.56916, 44.254605], {species: 'redwood'}),
turf.point([-72.581691, 44.24858], {species: 'maple'}),
turf.point([-72.583837, 44.255773], {species: 'oak'})
]); var key = 'species';
var value = 'oak';
var filtered = turf.filter(features, key, value);
这个过滤比较简单,https://www.npmjs.com/package/feature-filter-geojson
可以增加过滤规则,具体还是看官方文档。在浏览器端,其实用第一个就好
var ff = require('feature-filter');
var filter = [
"all",
["==", "class", "street_limited"],
["<=", "admin_level", 3],
["!=", "$type", "Polygon"]
]
var testFilter = ff(filter);
let feature = GeoJSONObject
testFilter(feature);
https://www.npmjs.com/package/geojson-filter,这个也是一样的,但是推荐用第一个
geojson-dissolve
GeoJSON 里面的点线面合并为Multi(point/linestring/polygon)
Dissolve contiguous GeoJSON (Multi)LineStrings and (Multi)Polygons into single units.
说实话,这个实际项目,我目前还没有用到。
merge polygon 合并多边形
merge-simple-polygons:https://www.npmjs.com/package/merge-simple-polygons
Merge two (adjacent) simple polygons into another simple polygon.
Takes two arrays of vertex IDs, each spanning a planar polygon and returns:
false if the given polygons share no vertices
null if there would be more than one resulting simple polygon (if the two given polygons share either exactly one vertex, which would result in two polygons or multiple egdes that are not connected, which would result in a polygon with a "hole")
a list of vertex IDs forming the merged polygon
const mergePolygons = require('merge-simple-polygons')
const polygonA = ['a', 'b', 'c', 'd', 'e']
const polygonB = ['e', 'a', 'g', 'h', 'i', 'd']
const polygonC = mergePolygons(polygonA, polygonB)
console.log(polygonC) // ['a', 'b', 'c', 'd', 'i', 'h', 'g']
const polygonD = ['a', 'b', 'c']
const polygonE = ['d', 'e', 'f']
console.log(mergePolygons(polygonD, polygonE)) // false
const polygonF = ['a', 'b', 'c', 'd', 'e']
const polygonG = ['a', 'b', 'f', 'e', 'd', 'g']
console.log(mergePolygons(polygonF, polygonG)) // null
这个,turfjs http://turfjs.org/docs/#booleanContains
其他GIS数据转 GeoJSON
Turn your geo data into GeoJSON.
转载本站文章《GIS常用npm包:GeoJSON文件合并与元素过滤\属性过滤\图形合并》,
请注明出处:https://www.zhoulujun.cn/html/GIS/WebGIS/8201.html
GIS常用npm包:GeoJSON文件合并与元素过滤\属性过滤\图形合并的更多相关文章
- nodejs常用npm包
express常用npm包整理如下 art-template 一款js模板引擎,性能不错 jayson 一款纯node的rpc应用包,可实现rpc服务.tcp.http等服务 multer ...
- 7. Buffer_包描述文件_npm常用指令_fs文件读写_模块化require的规则
1. Buffer 一个和数组类似的对象,不同是 Buffer 是专门用来保存二进制数据的. 特点: 大小固定: 在创建时就确定了,且无法调整 性能较好: 直接对计算机的内存进行操作 每个元素大小为1 ...
- nodejs npm包管理常用命令介绍
1.输入 npm config ls -l 可以查看当前的设置 2.针对某一项设置,可以通过下面方式: npm config set 属性名 属性值 eg:npm config set prefix ...
- 关于 npm 包管理器最常用的内容都在这儿了
Nodejs的诞生,给前端开发世界带来了翻天覆地的变化. 前端工程化,各种工具,以及向后端的能力扩展. 车子离不开轮子,node(前后端)开发离不开npm这个包管理工具,在这总结下常用配套工具: np ...
- npm的.npmrc文件在哪里?缓存及全局包文件在什么位置?
npm的.npmrc文件在哪里?缓存及全局包文件在什么位置? npm作为node开发过程中的必备工具,长期使用之后,您可能会想:这些全局安装的node包都放在硬盘里面的哪个地方?配置文件.npmr ...
- SSH框架应用中常用Jar包用途介绍
struts2需要的几个jar包:1)xwork-core-2.1.62)struts2-core-2.1.83)ognl-2.7.34)freemarker-2.3.155)commons-io-1 ...
- 记npm包开发全过程
概述 为什么开发npm包? 如何开发? 如何写单元测试? package.json 如何发布模块? 如何使用? 为什么开发npm模块? NPM的全称是Node Package Manager,是一个N ...
- 【vue系列之三】从一个vue-pdf-shower,说说vue组件和npm包
前言 从去年年初开始,自己便下决心要写一个vue系列的博客,但时至今日,才写系列的第三篇博客,想来甚是惭愧. 但是慢归慢,每一篇都要保证质量,以及要写出自己的心路历程,防止自己工作中填的坑再让读者走一 ...
- 了解可执行的NPM包
NPM是Node.js的包管理工具,随着Node.js的出现,以及前端开发开始使用gulp.webpack.rollup以及其他各种优秀的编译打包工具(大多数采用Node.js来实现),大家都开始接触 ...
- npm的packagejson文件
一.name,npm包名name和version字段是package.json文件中最重要的字段,都是必须的字段,如果你的npm包没有指定这两个字段,将无法被安装.name和version字段被假定组 ...
随机推荐
- [Python急救站课程]无角正方形
无角正方形 from turtle import * penup() fd(-100) pendown() pensize(10) penup() seth(0) fd(20) pendown() f ...
- 【Vue3响应式原理#02】Proxy and Reflect
专栏分享:vue2源码专栏,vue3源码专栏,vue router源码专栏,玩具项目专栏,硬核推荐 欢迎各位ITer关注点赞收藏 背景 以下是柏成根据Vue3官方课程整理的响应式书面文档 - 第二节, ...
- rust程序设计(5)结构体相关练习题| 附带解答
题目 基础结构体练习: 创建一个名为Person的结构体,包含name(字符串类型)和age(整数类型)两个字段. 写一个函数,接收一个Person实例作为参数,并打印出这个人的名字和年龄. 结构体方 ...
- ubuntu20 安装 mysql5.7.31 , 卸载mysql 8.0, Mysql只能本地登录,无法远程登录
ubuntu 18 可以直接命令安装:# 安装mysql服务sudo apt-get install mysql-server# 安装客户端sudo apt install mysql-client# ...
- 谷歌浏览器和火狐浏览器如何查看HTTP协议?
按F12
- extern关键字的用法
extern关键字的理解 extern是C/C++语言中的一个关键字,用于声明一个变量或函数具有外部链接性(external linkage),即这些变量或函数可以被其他文件访问. 在C/C++中,如 ...
- 深度掌握TypeScript中的重载【函数重载、方法重载】
深度掌握TypeScript中的重载[函数重载.方法重载] 1. 函数重载,方法重载的重要性 著名前端流行框架底层都用到函数重载,例如:Vue3 底层源码就多处使用到带泛型的函数重载.很多前端面试更是 ...
- Nougat:结合光学神经网络,引领学术PDF文档的智能解析、挖掘学术论文PDF的价值
Nougat:结合光学神经网络,引领学术PDF文档的智能解析.挖掘学术论文PDF的价值 这是Nougat的官方存储库,Nougat是一种学术文档PDF解析器,可以理解LaTeX数学和表格. Proje ...
- Tensorflow2.0实战之GAN
本文主要带领读者了解生成对抗神经网络(GAN),并使用提供的face数据集训练网络 GAN 入门 自 2014 年 Ian Goodfellow 的<生成对抗网络(Generative Adve ...
- SpringBoot-Validation优雅实现参数校验
1.是什么? 它简化了 Java Bean Validation 的集成.Java Bean Validation 通过 JSR 380,也称为 Bean Validation 2.0,是一种标准化的 ...