バウンディングボックス内にポイントが存在するレコードを検索する必要がありますが、MariaDBで使用するためにSequelizeでこれをどのように定式化するかはわかりません。現在、Sequelizeは地理的な検索をネイティブにサポートしているようには見えないので、SQL関数を使って直接行うことができます。以上によりバウンドボックス内のポイントを検索して続行
// latlon1 and latlon2 are of form [lat,lon]
// representing bottom-left and top-right corners of the box
var a = latlon1[0] + ' ' + latlon1[1];
var b = latlon2[0] + ' ' + latlon1[1];
var c = latlon2[0] + ' ' + latlon2[1];
var d = latlon1[0] + ' ' + latlon2[1];
var e = latlon1[0] + ' ' + latlon1[1];
var boundingBox = `${a},${b},${c},${d},${e}`;
var fn = `ST_CONTAINS(ST_MakePolygon(ST_GeomFromText('LINESTRING(${boundingBox})'), latlon)`;
Address.findAll({ ... }).then(function (results) {
// results will contain all records where the value of the
// latlon column is within the bounding box
// latlon column is of type 'point'
});
を私は(私が正しいと信じて)SQLのGIS機能とのfindAllを持って次のように
現在、私のコードが見えます。問題は、私が探している結果を私に提供するために、2つをどのようにマージするのかわからないということですか?誰も助けることができますか?
Sequelize 3.24.3、node.js 6.7.0およびMariaDB 10.0を使用します。