在 Web 开发中,地理位置信息是广泛使用的一种数据类型。由于其特殊性,我们需要一种数据格式来表示地理位置信息。而 GeoJSON 就是这样一种格式。
什么是 GeoJSON ?
GeoJSON 是一种基于 JSON 的地理位置数据格式。它支持点,线,面等几何类型,并且可以在地图上进行可视化展示。
例如,下面是一个 GeoJSON 格式表示的多边形:
-- -------------------- ---- ------- - ------- ---------- ----------- - ------- ---------- -------------- - - ------------ ----------- ------------ ----------- ------------ ----------- ------------ ----------- ------------ ----------- ------------ ---------- - - -- ------------- - ------- ----------- - -
什么是 bookshelf-geojson?
bookshelf-geojson 是一个可以将 GeoJSON 数据存储到关系型数据库中的 npm 包。它是基于 ORM 模式的 bookshelf.js 的扩展,支持点、线、面等多种类型地理位置数据的存储与查询。
安装 bookshelf-geojson
要使用 bookshelf-geojson,我们需要先安装 bookshelf.js。如果您还没有安装,可以在命令行中输入以下命令进行安装:
npm install bookshelf --save
接下来,我们需要安装 bookshelf-geojson。同样在命令行中输入以下命令进行安装:
npm install bookshelf-geojson --save
在代码中使用 bookshelf-geojson
在代码中使用 bookshelf-geojson 非常简单。我们只需要将 bookshelf
的实例传递给 bookshelf-geojson
的构造函数即可。
const bookshelf = require('bookshelf'); const geoJson = require('bookshelf-geojson'); const model = bookshelf(knex) model.plugin(geoJson(pluginOptions));
其中,knex
是一个用于访问数据库的库(必须传入),pluginOptions
则是插件的选项。
插件选项中使用了多个参数,包括:
geomColumn
: 用于存储 Geometry 数据的字段名,默认为geometry
。geomType
: 存储 Geometry 数据的类型,包括 Point、LineString、Polygon、MultiPoint、MultiLineString 和 MultiPolygon,默认为point
。srid
: 存储 Geometry 数据采用的坐标系编号,默认为4326
。
添加与查询地理位置数据
在使用 bookshelf-geojson 存储地理位置数据时,我们需要将 GeoJSON 数据转换为 PostgreSQL 模式下支持的坐标格式 Point(x,y)
、LineString((x1,y1),(x2,y2),...,(xn,yn))
和 Polygon((x1,y1),(x2,y2),...,(xn,yn))
。
在示例中,我们定义了一个表 places
,用于存储地点信息,包括经纬度、名称等。
const Place = model.extend({ tableName: 'places', hasTimestamps: true, geojson: true, });
接着我们可以通过以下代码来创建一个包含地方名称、经度、纬度信息的地方:
-- -------------------- ---- ------- -- ----------------- ------------- ----- ------- --------- - ----- -------- ------------ ----------- ---------- -- -- ------- ------------- -- - ---------------------------- ---
同样,我们也可以用下面的代码来查询所有的地方信息:
Place.query((qb) => { qb.whereExists(qb.select('*').from('places')); }) .fetchAll() .then((places) => { console.log(places.toJSON()); });
以上代码将返回 places
表中所有地方的信息,其中包括经纬度等信息。
总结
本文介绍了 GeoJSON 和 bookshelf-geojson 的相关内容,主要包括安装、配置、添加与查询地理位置数据等内容。这些功能对于使用地理位置数据的后端 Web 开发人员是非常有用的,可以帮助他们快速、准确地存储并查询地理位置数据,并且可以使用 GeoJSON 格式在地图上进行可视化展示。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60056be881e8991b448e5a2a