2012-03-16 44 views
0

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

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

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

回答

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。

+0

@是什么?我已经在没有@的情况下尝试过了,而且之后这个字段仍然是空的。 – 2012-03-16 16:30:28

+1

@表示它是用户定义的变量。 SET用于定义变量,然后在SELECT语句中使用该变量。 – 2012-03-16 16:47:10

+0

http://dev.mysql.com/doc/refman/5.0/en/example-user-variables.html – 2012-03-16 16:49:20

0

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

1

你想要什么叫serialization /你可以访问链接和阅读关于编程语言支持/。例如在php中存在函数serialize(php serialize)这对你的情况非常有帮助。你可以使用它,然后存储该值,然后使用php unserialize在php中阅读它。

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

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