npm 包 jsts-node 使用教程

阅读时长 4 分钟读完

在前端开发中,我们常常需要进行空间计算操作,例如:计算两个经纬度之间的距离、判断点是否在一个区域内等等。这时候,我们可以使用 jsts-node 这个 npm 包来简化我们的操作。

安装

首先,我们需要安装 jsts-node。在终端中输入以下命令进行安装:

使用

创建几何图形对象

jsts-node 提供了一些几何图形对象的构造函数,例如:PointLineStringLinearRingPolygon 等等。下面我们以创建一个点 Point 对象为例进行介绍:

上述代码中,我们通过 require 函数引入 jsts-node 包,然后使用 jsts.geom.Point 构造函数构造了一个 Point 对象,将经度和纬度包装在数组中作为参数传入构造函数。

其它几何图形的构造方法与 Point 类似:将坐标等信息作为参数传入构造函数即可。

计算两个几何图形之间的距离

在 jsts-node 中,我们可以通过 distance 方法来计算两个几何图形之间的距离。下面我们以计算两个点之间的距离为例进行介绍:

-- -------------------- ---- -------
----- ---- - ---------------

-- ---- ----- --
----- ------ - --- ------------------------- --------
----- ------ - --- ------------------------ -------

-- ----------
----- -------- - -----------------------

------------------------------------

上述代码中,我们首先构造了两个 Point 对象,然后通过 point1.distance(point2) 的方式计算了两个点之间的距离。

判断点是否在一个区域内

在 jsts-node 中,我们可以通过 contains 方法来判断一个几何图形是否包含另外一个几何图形。下面我们以判断点是否在一个区域内为例进行介绍:

-- -------------------- ---- -------
----- ---- - ---------------

-- -- ------- --
----- ------- - --- ------------------
  --- ----------------------
    --- ----------------------------- --------
    --- ----------------------------- --------
    --- ----------------------------- --------
    --- ----------------------------- -------
  --
-

-- -- ----- --
----- ----- - --- ------------------------- --------

-- ----------
----- -------- - -----------------------

-----------------------------------

上述代码中,我们首先构造了一个 Polygon 对象,表示一个多边形区域;然后构造了一个 Point 对象,表示一个点位置。最后,通过 polygon.contains(point) 的方法判断该点是否在多边形内。

总结

以上是 jsts-node 的一些基本用法,通过 jsts-node,我们可以方便地完成一些空间计算操作。需要注意的是,jsts-node 对象的坐标系默认为 WGS 84 地理坐标系,因此在使用时需要注意坐标系转换的问题。

示例代码

下面是一个完整的示例代码,演示如何使用 jsts-node 计算两个经纬度之间的距离。

-- -------------------- ---- -------
----- ---- - ---------------

-- -- ----- --
----- ------ - --- ------------------------- --------
----- ------ - --- ------------------------ -------

-- ----------
----- -------- - -----------------------

---------------------------------- ---

输出结果为:

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60065f84238a385564ab6c57

纠错
反馈