type tipos sequelize querytypes data node.js postgresql postgis sequelize.js

node.js - tipos - sequelize type of data



¿Cómo insertar un punto de GEOMETRÍA PostGIS en Sequelize ORM? (2)

Estoy tratando de insertar una fila en una tabla que tiene una columna de geometría en Sequelize.js ORM. Tengo latitud, longitud y altitud y necesito convertirlo primero en un punto para poder insertarlo como una geometría.

El procedimiento almacenado de PostGIS que hace la conversión es

ST_MakePoint( longitude, latitude, altitude )

Para insertar una fila estoy usando la función de secuela 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 });

Ahora lo que quiero hacer es hacer que la location del campo tenga el resultado devuelto de "ST_MakePoint("+request.params.lon+", "+request.params.lat+", "+request.params.alt+")" cuando inserto La fila.

¿Cómo puedo hacer eso?


Ampliando la respuesta de l0oky, la prueba de integración tiene muchas buenas pistas sobre cómo usar el json con diferentes tipos de geometría. Básicamente, parece que la secuenciación delimitará el objeto de geometría proporcionado, asumiendo que es GeoJSON válido y canalizará eso a la función ST_GeomFromGeoJSON de PostGIS. Por lo tanto, uno solo puede seguir la especificación GeoJSON para objetos de geometría.

Puntos:

var point = { type: ''Point'', coordinates: [39.807222,-76.984722]}; User.create({username: ''username'', geometry: point }).then(function(newUser) { ... });

Linstings:

var line = { type: ''LineString'', ''coordinates'': [ [100.0, 0.0], [101.0, 1.0] ] }; User.create({username: ''username'', geometry: line }).then(function(newUser) { ... });

Polígonos:

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

Configuración de un SRID personalizado:

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


Después de investigar un poco, descubrí que Sequelize 3.5.1 (es compatible con GEOMETRY) tenía una test que inserta un Point .

var point = { type: ''Point'', coordinates: [39.807222,-76.984722] }; return User.create({ username: ''user'', email: [''[email protected]''], location: point})

Donde la location es un campo de GEOMETRÍA. De esta manera no necesito llamar a ST_MakePoint manualmente, la secuencia se encarga de eso.