- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我不确定如何保存大面积的测量数据,以便可以从数据库中快速检索。
测量数据包括:
每个区域可能有多个发射器。
描述来自单个发射器的信号的数据存储在一个文件中。我从一个文件中创建了大约 200 万行(具有信号功率的点)。由于信号强度变化,应保存所有数据。
对于只有一个发射器的表,选择距离特定点(经度、纬度)在任何公共(public)相对方向(←↑→↓)+/- x 米的点大约需要 0.5
我必须在单个查询中显示大约 65000 个点的信号,因此计算它需要很长时间(65000x05 秒)。
我决定将每个发射器保存到一个单独的表中。在主表中,我只保存左下角和右上角的坐标(这样我可以确定哪个发射机表由一个点旁边的点组成,我可以从该特定表中选择数据)。但是,问题仍然存在,因为我的表仍有大约 200 万行。
保存所有发送器的主表:
╔════╦═══════════════════════╦═══════════════════════╦════════════════════════╦════════════════════════╗║ id ║ left_lower_corner_lon ║ left_lower_corner_lat ║ right_upper_corner_lon ║ right_upper_corner_lat ║╠════╬═══════════════════════╬═══════════════════════╬════════════════════════╬════════════════════════╣║ 1 ║ 12 ║ 48 ║ 13 ║ 49 ║║ 2 ║ 12.5 ║ 48 ║ 14 ║ 50 ║╚════╩═══════════════════════╩═══════════════════════╩════════════════════════╩════════════════════════╝
and now tables for single transmitters (i.e. transmitter_1):
╔═════════╦═════════╦═══════════╗║ lon ║ lat ║ sig ║╠═════════╬═════════╬═══════════╣║ 48,0004 ║ 12,0002 ║ -123,0000 ║║ 48,0004 ║ 12,0003 ║ 124,0000 ║╚═════════╩═════════╩═══════════╝
Now in order to get signals from all transmitters for a specific point, first I select the id of the trasmitter and after that i look in the next table for the nearest point. But it takes too long already for only one point (0.5 s.).
#in order to test, im using these variables:
SET @_lon = 13.729520117164848;
SET @_lat = 51.126581079972624;
SELECT lat, lon, sig, SQRT(
POW(69.1 * (lat - @_lat), 2) +
POW(69.1 * (@_lon - lon) * COS(lat / 57.3), 2)) AS distance
FROM (SELECT * FROM `transmitter_1` WHERE (lon <= @_lon+0.00009 && lon >= @_lon-0.00009 && lat <= @_lat+0.00009 && lat >= 0.00009)) AS nearest_points
HAVING distance < 25 ORDER BY distance LIMIt 1;
我相信我为单个发射器创建了更多表格并再次保存了 2 个角的坐标。
最佳答案
任何时候您在“where”中输入一个字段,请确保该字段已编入索引。您还可以尝试使用多字段索引(如果您总是按经度和纬度搜索,请放入包含这两个字段的索引)。
这就是速度的来源。我已经看到通过适当的索引将花费数小时(字面上)减少到几秒钟的查询。
在具有数百万条记录的表上,您还可以通过使用单独的表、单独的数据库来尝试对数据进行分段,还可以考虑在数据库内对数据进行分区。
但在你去那里之前:索引。
运行您的查询。索引 lon 然后索引 lat(只是索引,不是唯一的或主要的)。再次运行它。然后在同一个索引中将 long 和 lat 一起索引并再次运行查询。比较你的时间。您应该会看到响应时间显着减少。
关于mysql - 大面积的测量点如何存入数据库,以便快速选取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44705926/
我正在开发一个企业名录网站,其搜索将由 Google map 驱动。用户将能够根据各种标准搜索他们所在地区的企业,但主要的想法是,如果您搜索例如“新泽西州的水管工”,您将获得新泽西州所有水管工的结果。
我得到了一条任意形状的曲线,包围了一些区域。 我想估计曲线在 iPhone/iPad 屏幕上包围的像素数。我该怎么做? 曲线被定义为点的连续 x/y 坐标。 闭合曲线。 通过用户的触摸(touches
我想删除 R 在点阵图周围的默认边距。这意味着我想摆脱红色矩形之外的所有空白。这是示例: library (raster) library(rasterVis) f <- system.file("e
无法找到任何直接的解决方案来计算 GMSPolygon 对象面积。有什么方法可以做到这一点,或者我必须用边长和一些数学计算来计算它? 最佳答案 感谢@Larme; GMSGeometryArea 就是
假设例如我想将标准正态分布的密度曲线下方的面积着色为十分。我希望最左边 10% 的区域具有与接下来的 10% 不同的阴影,依此类推。 这是问题“Shading a kernel density plo
我正在为 Extjs 开发一个混合图表组件,并且曲线太尖锐了。我找不到曲线具有半径的配置。如果你处理过类似的事情,你能提供一些方法让我的曲线变得平滑一点吗?这是我的代码: Ext.define('Ex
上下文 我有一个 3D 对象,我有它的坐标。然后我将对象旋转 n 次,当对象投影到网格上时,我想计算对象的 2D 面积(以纳米为单位)。 例如, 我在下面有一张图片描述了我的问题。我有相同的对象,但在
当我知道我需要的地 block 总数并且我希望排列是一个正方形(可能有一些空的子地 block )时,我正在尝试弄清楚如何计算子地 block 尺寸。 例如,如果我需要 22 个子图,那么我会为总共
我是一名数据科学家。主要使用Python和SQL来编写代码。我使用data studio进行可视化。所以我对JS不熟悉。我的诀窍data studio community visualizations
我有 1797 张 Mnist 图像,为此我需要提取两个特征(FilledArea、EulerNumber)。我知道如何在 Matlab 中做到这一点。我的特征矩阵在 Matlab 中具有(并且是正确
我希望能够在 Google map 上绘制形状(圆形、多边形和矩形),但我想限制可以绘制的形状的大小(面积)。因此,以圆圈为例,期望的行为是当用户开始从 map 上的某个点拖动鼠标以形成圆圈时,圆圈会
我是一名优秀的程序员,十分优秀!