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