0

我需要将大量地理坐标存储在单个记录中的数据库中。无法将地理坐标存储在 sql 数据库中,所以目前我正在这样做:

geocoordinates-->string-->bytes-->database

数据库中字符串的限制是 8000 字节,所以这个数量的数据必须以字节格式存储(数据库认为它是图像,所以没有字节限制)。我已将地理坐标截断为 6d.p(从 15d.p 下调),但过程非常非常缓慢。

有谁知道如何提高这项任务的效率?

谢谢!

4

3 回答 3

2

为什么不重新设计您的数据库,并将这些点存储为一对表示纬度/经度的双精度 - 如果需要,这些都可以引用“父”行。

于 2012-06-25T17:38:58.873 回答
1

我建议您将地理位置数据以经纬度对的形式存储到与当前表中的行/记录相关的新表中。

我不知道你对这些数据有什么计划,但这对我来说似乎是合乎逻辑的解决方案。

于 2012-06-25T17:45:05.303 回答
1

Postgres 确实直接支持点和其他几何图元:http ://www.postgresql.org/docs/9.1/interactive/datatype-geometric.html

此外,它具有 <-> 距离比较运算符,您可能会发现它很有用http://www.postgresql.org/docs/9.1/interactive/functions-geometry.html

还可以优化最近邻搜索的索引,您可以在此处阅读:http ://www.postgresql.org/docs/9.1/interactive/indexes-types.html

最后,这是一个示例,取自上述链接:

SELECT * FROM places ORDER BY location <-> point '(101,456)' LIMIT 10;

您可能还想查看一些专用的 GIS 数据库。一个建立在 postgres 之上的是 PostGIS: http: //postgis.refractions.net/

于 2012-06-25T18:06:38.623 回答