如何在Sequelize ORM中插入PostGIS几何点?
我想在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的答案上进行扩展, 集成testing对于如何使用具有不同types几何的json有很多好的线索。 基本上看来,sequelize会将提供的几何对象串联起来,假设它是有效的GeoJSON,并将其传递到PostGIS函数ST_GeomFromGeoJSON中。 因此,可以按照几何对象的GeoJSON规范 。
要点:
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) { ... });
经过一番研究,我发现Sequelize 3.5.1(支持GEOMETRY)已经插入了一个Point
的testing 。
var point = { type: 'Point', coordinates: [39.807222,-76.984722] }; return User.create({ username: 'user', email: ['foo@bar.com'], location: point})
哪里location
是GEOMETRY领域。 这种方式我不需要手动调用ST_MakePoint
,sequelize照顾。
- 如何检查一个string是否与node.js中的任何一个正则expression式匹配?
- 我怎样才能parsing一个string到适当的参数child_process.spawn?
- 使用handlebars.js显示JSON数据
- Socket.io重新授权
- 用Q.deferred捕获错误
- (nodejs上的Socket.io)使用mysql数据更新div不会显示错误
- 在Node.js中使用TypeScriptasynchronous等待
- 如何使用我的Express 4路由中的socket.io将事件发送到连接的套接字?
- Slickgrid基本示例 – 在node / express中,只加载第一行数据,但不可见