我试图在Sequelize中有一个几何列的表中插入一行.js ORM.

进行转换的PostGIS存储过程是

ST_MakePoint( longitude, latitude, altitude ) 

要插入一行,我使用sequelize模型.创建函数

models.Data.create({    
  location: "ST_MakePoint("+request.params.lon+", "+request.params.lat+", "+request.params.alt+")", // PSUEDO code, How can I call this function?
  speed: request.params.spd,
  azimuth: request.params.azi,
  accuracy: request.params.acc
});

现在我想做的是,当我插入行时,让字段location返回"ST_MakePoint("+request.params.lon+", "+request.params.lat+", "+request.params.alt+")"的结果.

我该怎么做?

推荐答案

在l0oky的答案的基础上,integration test提供了很多关于如何将json用于不同类型的几何体的好线索.基本上,sequelize似乎会将提供的几何体对象字符串化,假设它是有效的GeoJSON,并将其导入PostGIS函数ST_GeoFromGeoJSON.因此,对于几何体对象,只需遵循GeoJSON spec即可.

Points:

var point = { type: 'Point', coordinates: [39.807222,-76.984722]};

User.create({username: 'username', geometry: point }).then(function(newUser) {
...
});

Linestrings:

var line = { type: 'LineString', 'coordinates': [ [100.0, 0.0], [101.0, 1.0] ] };

User.create({username: 'username', geometry: line }).then(function(newUser) {
...
});

Polygons:

var polygon = { type: 'Polygon', coordinates: [
             [ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0],
               [100.0, 1.0], [100.0, 0.0] ]
             ]};

User.create({username: 'username', geometry: polygon }).then(function(newUser) {
...
});

Setting a custom SRID:

var point = { 
  type: 'Point', 
  coordinates: [39.807222,-76.984722],
  crs: { type: 'name', properties: { name: 'EPSG:4326'} }
};

User.create({username: 'username', geometry: point }).then(function(newUser) {
...
});

Postgresql相关问答推荐

在Go中,如何在没有数据库包的情况下运行PostgreSQL查询?

ANTLR4 PostgreSQL语法被 destruct 了吗?

PostgreSQL\d命令:有办法只 Select 一列吗?

在特定值的组聚合中添加标签列作为结果

无法将 json 范围读取为 pgtype.Int4range

如何在 postgres where 子句中使用 or 对条件进行组合或分组

为什么我使用 VBA 只能从 postgres 获得 10 行?

在 Ubuntu 11.04 服务器中启用对 postgresql 的 PHP 支持

带有初始数据的 docker postgres 不会在提交中持久化

LAG 函数和 GROUP BY

是否可以在 Postgres 中存储一个 1 字节的数字?

PostgreSQL 不区分大小写的 SELECT 数组

在 MAC OS X 10.6 for PostgreSQL 上设置 SHMMAX 等值

从长时间的postgres转换日期

PostgreSQL 中的行编号

docker postgres 无法从指定端口启动

如何将 PostgreSQL 查询输出导出到 csv 文件

Ecto Postgres 安装错误密码验证失败

Postgresql 用随机值更新每一行

postgresql NOT ILIKE 子句不包含空字符串值