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