mysql写入和读取地理边界(矩形)

时间:2012-03-16 16:19:43

标签: mysql gis

我需要在MySQL数据库中存储地图边界。我花了一些时间在geospacial扩展的文档上,但这很困难,在我的情况下,没有必要学习所有相关的信息(WKT,WKB等) 我只需要一种方法来存储一个坐标矩形并稍后再读回来。 当然我也可以把原始坐标写成浮点数,但如果它不复杂,我宁愿把它放在1列中。

那么,该要求的最简单的SQL代码是什么?

PS:我已在该表中使用POINT值,因此扩展已安装并正常工作。

3 个答案:

答案 0 :(得分:1)

您想要的是 serialization /您可以访问链接并阅读有关编程语言支持/的内容。例如在php中存在一个名为serialize(php serialize)的函数,这在你的情况下非常有用。您可以使用它然后存储该值,然后使用php unserialize在php中读取它。

我知道MyISAM支持一些空间扩展,但在我看来使用它们并不像序列化那样灵活。

干杯!
我希望它有所帮助。 :)

答案 1 :(得分:0)

您可以将多边形存储在mysql中的几何列中。然后,这将允许您对它们执行某些几何函数(如果您需要 - 但听起来不像您那样)

http://dev.mysql.com/doc/refman/4.1/en/polygon-property-functions.html

SET @poly = 'Polygon((0 0,0 3,3 0,0 0))';
SELECT Area(GeomFromText(@poly));

编辑:

CREATE TABLE `test` (`geo` geometry NOT NULL) ENGINE=MyISAM DEFAULT CHARSET=latin1;
INSERT INTO test SET geo = GeomFromText('Polygon((0 0,0 3,3 0,0 0))');
SELECT asText(geo) FROM `test`;

尝试上面的sql语句。我创建了一个带有几何列的表,添加多边形,然后选择数据astext。

答案 2 :(得分:0)

如果您只对存储和检索列的点感兴趣,那么我建议只将点(逗号分隔,或者您喜欢)转储到BLOB字段中。如果您想使用任何空间分析功能,您可能需要查看Polygon class并使用您的点为每个坐标矩形定义一个多边形。