将 GPS 线保存到阵列中

Posted

技术标签:

【中文标题】将 GPS 线保存到阵列中【英文标题】:Saving gps cords into Array 【发布时间】:2014-06-23 13:46:42 【问题描述】:

这听起来可能很基本,但我真的想知道标准是什么。 为了收集 GPS 线,并在(最好)一个数组中保存纬度和经度,什么算法带来了最好的性能? 我的方法好吗?还有其他(更好的)建议吗? 谢谢

 public void onLocationChanged(Location loc)   

// new I and J, in increment
 givemeIandJ()

 Array[i][j]=(loc.getLatitude());
 Array[i][j]=(loc.getLongitude());

【问题讨论】:

为什么还要有一个二维数组?你知道什么是数组吗? @323go mmm 我不需要它们来保存纬度和经度吗?我希望任何给定点都有一个唯一的索引 我不明白你在问什么。而且我猜你不知道数组是如何工作的? @XaverKapeller 你错了 想详细说明一下?您将经度和纬度都分配给数组中的同一个元素,因此用另一个值覆盖一个值,如果您知道数组是如何工作的,这会如何发生? 【参考方案1】:

节省内存的最佳性能是将纬度和经度存储在不同的数组中:

int[] longitudes = new int[maxSize];
int[] latitudes  = new int[maxSize];

longitudes[i] = loc.getLongitude() * 1E7; / 1E7 = 1000000: converts to integer
latitudes[i] = loc.getLatitdue() * 1E7;

maxSize 可能是写入存储之前的最大缓冲区大小。

Java 中的二维数组需要更多空间(比 C 中的),因为二维数组是 int[] 类型对象的一维数组,每个 (1-d) 条目会丢失 20 个字节。

如果需要,您甚至可以将 lat/lon 存储在一个 int[] 数组中:

int[] latLongs= new int[2 * maxSize];

latLongs[2*i] = (int) (loc.getLongitude() * 1E7);
latLongs[2*i + 1] = (int) (loc.getLatitude() * 1E7);

如果您想省略 faktor 1E7,只需使用 double[](或 float[])数组即可。

【讨论】:

Weel 解释道。但是关于索引的增量:在每次调用时简单地增加它们就可以了? 是的,一旦您从位置 API 接收到位置,就增加缓冲区索引并存储该位置。确保索引不超过最大大小。

以上是关于将 GPS 线保存到阵列中的主要内容,如果未能解决你的问题,请参考以下文章

将阵列保存到设备

保存阵列猫鼬

python 将GPS数据从供应商保存到数据库。

保存 3D 蒙版阵列

从 GPS 获取当前标记位置并保存到 mySQL

MySQL 中保存 GPS 数据的数据类型