wicket API 解读

1 篇文章 0 订阅
1 篇文章 0 订阅

背景

因为在业务中有一些关于地图数据使用的场景,因为也使用了 wictet 这个库。但是在使用过程可参考文档较少,中文文档更是没有,导致不能完全掌握其打开方式。所以抽空扒了一下源码,并且也实际跑了测试代码验证后总结了如下内容。

在有WKT数据、GeoJSON数据以及地图引擎数据等场景数据转换中可以方便使用

一句话介绍

Wicket 是一个轻量级库,用于在WKT和各种矢量地图数据之间转换。

安装

npm install wicket

特性

1、read

作用:读取WKT字符串,进行验证并且获得解析数据。可读取类型为 WKTGeoJSON

入参:

参数

类型

是否必须

说明

str

String

出参:

参数

类型

说明

obj

wkt实例对象

{ type: "", components: [], delimiter: "" }

示例:

import Wkt from 'wicket';
const wkt = new Wkt.Wkt();

// Read in any kind of WKT string
wkt.read("POLYGON ((30 10, 10 20, 20 40, 40 40, 30 10))");

// output: polygon
console.log(wkt.type)

// output: "(30 10, 10 20, 20 40, 40 40, 30 10)"
console.log(wkt.base)

// output: [ [ {x: 30, y: 10}, {x: 10, y: 30}, ...] ]
console.log(wkt.components)
import Wkt from 'wicket';
const wkt = new Wkt.Wkt();

// Read a GeoJSON string
wkt.read('{"coordinates": [[[30, 10], [10, 20], [20, 40], [40, 40], [30, 10]]], "type": "Polygon"}');

// output: polygon
console.log(wkt.type)

// output: [ [ {x: 30, y: 10}, {x: 10, y: 30}, ...] ]
console.log(wkt.components)

2、write

作用:写入WKT串,可与 read 等方法结合使用。

入参:

参数

类型

是否必须

说明

components

Array

当与 readmerge等方法结合使用时,返回为处理后数据;当未使用任何方法时,参数为必须

出参:

参数

类型

说明

str

String

POLYGON((30 10,10 20,20 40,40 40,30 10))

示例:

import Wkt from 'wicket';
const wkt = new Wkt.Wkt();

// Read in any kind of WKT string
wkt.read("POLYGON ((30 10, 10 20, 20 40, 40 40, 30 10))");

// merge
wkt.merge(new Wkt.Wkt('POLYGON((35 15,15 25,25 45,45 45,35 15))'));

// output: MULTIPOLYGON(((30 10,10 20,20 40,40 40,30 10)),((35 15,15 25,25 45,45 45,35 15)))
wkt.write();

3、merge

作用:接受另一个WKT串,与自己合并,创建并返回一个MULTI-geometry集合。主要是用于两个同类型WKT合并,或者向MULTIPOLYGON中添加POLYGON

入参:

参数

类型

是否必须

说明

wkt

Wkt.Wkt object

出参:

参数

类型

说明

obj

Object

可通过wkt.write()或wkt.toString()获取WKT结果

示例:


import Wkt from 'wicket';
const wkt = new Wkt.Wkt();

// Read in any kind of WKT string
wkt.read("POLYGON ((30 10, 10 20, 20 40, 40 40, 30 10))");

wkt.merge(new Wkt.Wkt('POLYGON((35 15,15 25,25 45,45 45,35 15))'));

// output: MULTIPOLYGON(((30 10,10 20,20 40,40 40,30 10)),((35 15,15 25,25 45,45 45,35 15)))
console.log(wkt.toString());
import Wkt from 'wicket';
const wkt = new Wkt.Wkt();

// Read in any kind of WKT string
wkt.read('MULTIPOLYGON(((30 10,10 20,20 40,40 40,30 10)),((35 15,15 25,25 45,45 45,35 15)))');

wkt.merge(new Wkt.Wkt('POLYGON((25 15,5 15,15 35,35 35,25 15))'));

// output: MULTIPOLYGON(((30 10,10 20,20 40,40 40,30 10)),((35 15,15 25,25 45,45 45,35 15)),((25 15,5 15,15 35,35 35,25 15)))
console.log(wkt.toString());

4、sameCoords

作用:比较两个x、y坐标是否相等。

入参:

参数

类型

是否必须

说明

a

Object({ x,y })

b

Object({ x,y })

出参:

参数

类型

说明

bool

Boolean

示例:

import Wkt from 'wicket';
const wkt = new Wkt.Wkt();

const bool = wkt.sameCoords({ x:30, y: 10 }, { x:30, y: 10 });

// output: true
console.log(bool);

5、fromObject

依赖于框架的构造方法对象,用于生成适配框架且一致的各种几何类的对象。也就是在WKT和给定框架的特性之间转换(框架一般指各种地图引擎,例如gmaparcgisleaflet高德amap,几何类对象包括 point、multipoint、linestring、multilinestring、box、polygon、multipolygon等)。使用前必须先引入对应框架扩展或者重新定义wicket原型方法deconstruct

作用:将外部框架的几何数据对象,转化为WKT。

入参:

参数

类型

是否必须

说明

obj

Object

geometry 数据,数据包含typecoordinates字段

出参:

参数

类型

说明

obj

any

示例:

import Wkt from 'wicket';
const wkt = new Wkt.Wkt();

// Deconstruct an existing point feature e.g. google.maps.Marker instance
wkt.fromObject(somePointObject);

// output: POINT(100 0)
console.log(wkt.toString());

6、toObject

赖于框架的构造方法对象,用于生成适配框架且一致的各种几何类的对象。也就是在WKT和给定框架的特性之间转换(框架一般指各种地图引擎,例如gmaparcgisleaflet高德amap,几何类对象包括 point、multipoint、linestring、multilinestring、box、polygon、multipolygon等)。使用前必须先引入对应框架扩展或者重新定义wicket原型方法deconstruct

作用:与 fronObject 使用类似,作用相反。创建一个外部框架的几何数据对象,将WKT进行映射。

入参:

参数

类型

是否必须

说明

config

Object

数据处理时可传入自定义参数

出参:

参数

类型

说明

obj

Object

可通过wkt.write()或wkt.toString()获取WKT结果

示例:

import Wkt from 'wicket';
const wkt = new Wkt.Wkt();

// Read in any kind of WKT string
wkt.read("POLYGON ((30 10, 10 20, 20 40, 40 40, 30 10))");

// outputs an object
console.log(wkt.toObject());

7、toString

作用:返回WKT串,与 write()方法返回结果一致。

8、fromJson

作用:解析 json 并转化为WKT

入参:

参数

类型

是否必须

说明

obj

Object

geometry 数据,数据包含typecoordinates字段;或者 geometry中包含的。

出参:

参数

类型

说明

obj

Object

可通过wkt.write()或wkt.toString()获取WKT结果

示例:

import Wkt from 'wicket';
const wkt = new Wkt.Wkt();

wkt.fromJson({ "type": "Point", "coordinates": [100.0, 0.0] });

// output: POINT(100 0)
console.log(wkt.toString());
import Wkt from 'wicket';
const wkt = new Wkt.Wkt();

wkt.fromJson(
  {
    "type": "Feature",
    "bbox": [-180.0, -90.0, 180.0, 90.0],
    "geometry": {
      "type": "Polygon",
      "coordinates": [[
        [-180.0, 10.0], [20.0, 90.0], [180.0, -5.0], [-30.0, -90.0]
        ]]
    }
  }
);

// output: POLYGON((-180 10,20 90,180 -5,-30 -90))
console.log(wkt.toString());

9、toJson

作用:返回GeoJSON格式地理数据。

入参:

出参:

参数

类型

说明

obj

Object

GeoJSON schema

示例:

import Wkt from 'wicket';
const wkt = new Wkt.Wkt();

// Read in any kind of WKT string
wkt.read("POLYGON ((30 10, 10 20, 20 40, 40 40, 30 10))");

// output: { type: 'Polygon', coordinates: [[[30, 10]], [], ...] }
console.log(wkt.toJson());

10、isCollection

作用:用于判断是否为几何图形的集合(polygons、multi)

示例:

import Wkt from 'wicket';
const wkt = new Wkt.Wkt();
const bool1 = wkt.isCollection('POLYGON ((30 10, 10 20, 20 40, 40 40, 30 10))');
// output true
const bool2 = wkt.isCollection('MULTIPOLYGON(((30 10,10 20,20 40,40 40,30 10)),((35 15,15 25,25 45,45 45,35 15))');
// output true
const bool1 = wkt.isCollection('POINT (30, 10)');
// output true

WKT预览

输出WKT可直接在此进行查看效果

Wicket - Lightweight Javascript for WKT [Sandbox]

参考地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值