我需要将大量地理坐标存储在单个记录中的数据库中。无法将地理坐标存储在 sql 数据库中,所以目前我正在这样做:
geocoordinates-->string-->bytes-->database
数据库中字符串的限制是 8000 字节,所以这个数量的数据必须以字节格式存储(数据库认为它是图像,所以没有字节限制)。我已将地理坐标截断为 6d.p(从 15d.p 下调),但过程非常非常缓慢。
有谁知道如何提高这项任务的效率?
谢谢!
我需要将大量地理坐标存储在单个记录中的数据库中。无法将地理坐标存储在 sql 数据库中,所以目前我正在这样做:
geocoordinates-->string-->bytes-->database
数据库中字符串的限制是 8000 字节,所以这个数量的数据必须以字节格式存储(数据库认为它是图像,所以没有字节限制)。我已将地理坐标截断为 6d.p(从 15d.p 下调),但过程非常非常缓慢。
有谁知道如何提高这项任务的效率?
谢谢!
为什么不重新设计您的数据库,并将这些点存储为一对表示纬度/经度的双精度 - 如果需要,这些都可以引用“父”行。
我建议您将地理位置数据以经纬度对的形式存储到与当前表中的行/记录相关的新表中。
我不知道你对这些数据有什么计划,但这对我来说似乎是合乎逻辑的解决方案。
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/