gpt4 book ai didi

node.js - 如何在 Sequelize ORM 中插入 PostGIS GEOMETRY 点?

转载 作者:IT老高 更新时间:2023-10-28 22:11:42 25 4
gpt4 key购买 nike

我正在尝试在 Sequelize.js ORM 中具有几何列的表中插入一行。我有纬度、经度和高度,需要先将其转换为一个点,以便将其作为几何图形插入。

进行转换的 PostGIS 存储过程是

ST_MakePoint( longitude, latitude, altitude ) 

要插入一行,我正在使用 sequelize model.create 函数

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_GeomFromGeoJSON。因此,可以直接关注 GeoJSON spec用于几何对象。

积分:

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

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

线串:

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

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

多边形:

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) {
...
});

设置自定义 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) {
...
});

关于node.js - 如何在 Sequelize ORM 中插入 PostGIS GEOMETRY 点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32059758/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com