postgresql如何检查所选区域的lat/lon是否在使用Java的数据库中定义的范围内
我有一张地图,其中OpenLayers用于渲染地图。通过在地图上选择一个区域,我们可以找到所选区域的lat/lon值。我在一个数据库中有数据,它定义了特定车辆的纬度/经度值。我想检查车辆是否位于我在地图上选择的区域内。在Java中我该怎么做
(function () {
var map, drawControls, boxLayer;
function init() {
map = new OpenLayers.Map('map');
var wmsLayer = new OpenLayers.Layer.WMS("OpenLayers WMS",
"http://vmap0.tiles.osgeo.org/wms/vmap0?", {
layers: 'basic'
});
boxLayer = new OpenLayers.Layer.Vector("Box layer");
map.addLayers([wmsLayer, boxLayer]);
map.addControl(new OpenLayers.Control.LayerSwitcher());
map.addControl(new OpenLayers.Control.MousePosition());
var box = new OpenLayers.Control.DrawFeature(boxLayer,
OpenLayers.Handler.RegularPolygon, {
handlerOptions: {
sides: 4,
irregular: true
},
callbacks: {
up: function (geom) {
console.log(geom);
alert(geom);
}
}
});
map.addControl(box);
box.activate();
map.setCenter(new OpenLayers.LonLat(0, 0), 3);
}
init();
})();
Jsfiddle to select a region on map
上面的fiddle选择了地图上的一个区域,我有一个Postgres数据库,其中有一个表track_vehicle,其中包含vehicle_id、latitude和longitude列。我想用Java检查车辆的纬度和经度是否在地图上选择的范围内
# 1 楼答案
纬度和经度是数字(正数表示东/南,负数表示西/北),因此可以使用大于和小于运算来检查点是否位于某个区域内
所以
66° 33′ 39″ N
变成66033039
,而66° 33′ 39″ S
变成-66033039
。只要把每一步都写成三位数的整数,你就会以九位数结束你可能会问:“为什么是三位数而不是两位数?”