前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GIS常用npm包:GeoJSON文件合并与元素过滤\属性过滤\图形合并

GIS常用npm包:GeoJSON文件合并与元素过滤\属性过滤\图形合并

原创
作者头像
周陆军博客
发布2023-04-09 21:57:59
1.5K0
发布2023-04-09 21:57:59
举报
文章被收录于专栏:前端博客前端博客

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.

合并文件,官网的案例

代码语言:javascript
复制
var geojsonMerge = require('@mapbox/geojson-merge'); 
var mergedStream = geojsonMerge.mergeFeatureCollectionStream(['features.geojson','others.geojson']) 
mergedStream.pipe(process.stdout);

在浏览器端,需要导入文件,fileReader读取文件,获取json,再合并

代码语言:javascript
复制
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)

代码语言:javascript
复制
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

可以增加过滤规则,具体还是看官方文档。在浏览器端,其实用第一个就好

代码语言:javascript
复制
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
代码语言:javascript
复制
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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • GeoJSON文件合并
  • GeoJSON过滤
  • geojson-dissolve
  • merge polygon 合并多边形
  • 其他GIS数据转 GeoJSON
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档