npm 包 geojson-project 使用教程

阅读时长 8 分钟读完

前言

在当今数字化社会,地理信息(Geospatial Information)的应用越来越广泛。在前端开发中,GeoJSON 是一种方便的地理信息数据格式。在某些场景下,我们需要对 GeoJSON 数据进行地理坐标转换,即投影变换(Projection Transform),这就需要使用到 npm 包 geojson-project。

geojson-project 是一个基于 JavaScript 的 npm 包,用于进行 GeoJSON 数据的投影变换操作。本篇文章将详细介绍 geojson-project 的使用方法,包括安装、基本使用和高级用法,并提供实际示例代码。

安装

使用 npm 包管理工具可以很方便地安装 geojson-project:

安装完成后,我们可以在项目的 package.json 文件中看到以下依赖:

基本使用

投影变换一般需要两个步骤:

  1. 将待转换的经纬度坐标(WGS84)转换为笛卡尔坐标系(Cartesian Coordinate System);
  2. 将转换后的笛卡尔坐标系转换为需要的投影坐标系(Projected Coordinate System)。

使用 geojson-project 就是为了方便完成这两个步骤。首先,我们需要准备一个 GeoJSON 数据。

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

这是一个标准的 GeoJSON Point 类型,经纬度坐标为 [113.2610204, 23.1189208]。现在我们将这个数据导入到 JavaScript 中:

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

假设我们需要将这个经纬度坐标转换为中国标准的投影坐标系 GCJ-02,也就是火星坐标系,可以按照以下方式使用 geojson-project:

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

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

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

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

上述代码中,我们首先导入 geojson-project 模块,然后定义了一个坐标系变量 gcj02,使用 proj4 定义了其投影变换规则。

最后,我们调用 transform() 函数将 GeoJSON 数据从 WGS84 坐标系(默认)转换到 gcj02 投影坐标系,得到 target。输出 target,就可以看到转换后的结果:

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

转换后的坐标在投影坐标系下,可以看出明显的变化。

高级用法

geojson-project 不仅能够完成投影坐标系的转换,还有以下高级用法:

快速选取常用坐标系

geojson-project 提供了常用坐标系的预定义变量,可以轻松选择常见的投影坐标系,如 WGS84、GCJ-02、BD-09,具体内容可以参考文档。

以下示例展示了如何选取 BD-09 投影坐标系并进行转换:

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

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

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

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

投影坐标系之间的转换

geojson-project 提供了将投影坐标系之间进行转换的函数。需要明确两个坐标系的 proj4 定义以及其 EPSG 代码。

以下示例展示了如何将 GCJ-02 投影坐标系转换为 UTM 49N 投影坐标系:

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

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

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

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

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

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

GeoJSON 数据的 NPM 包导出

geojson-project 提供了将经纬度坐标转换为投影坐标系的函数,我们还需要将其与其他代码相结合,才能实现完整的应用。我们可以将需要的代码打包成为一个 npm 包并导出。

以下示例展示了如何导出一个 npm 包,其中包含了将 WGS84 坐标系下的 GeoJSON 数据转换为 UTM 49N 投影坐标系下坐标的功能:

index.js

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

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

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

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

geojson.json

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

导出后,其他用户可以轻松使用该 npm 包完成投影变换操作。

总结

本文详细介绍了 npm 包 geojson-project 的使用方法,包括安装、基本使用和高级用法。我们了解了如何将 GeoJSON 数据从经纬度坐标系转换到投影坐标系,还掌握了将投影坐标系之间进行转换和将代码打包成 npm 包导出的方法。当然,geojson-project 还有更多更丰富的功能,希望本文可以帮助读者更好地利用 geojson-project 实现应用。

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

纠错
反馈