mysql 支持地理信息查询

标签: 技术 | 发表时间:2014-08-21 18:24 | 作者:梦想家
出处:http://abloz.com

周海汉 2014.8.21
mysql> create table geom(g geometry);
mysql> desc geom;
+——-+———-+——+—–+———+——-+
| Field | Type     | Null | Key | Default | Extra |
+——-+———-+——+—–+———+——-+
| g     | geometry | YES  |     | NULL    |       |
+——-+———-+——+—–+———+——-+
1 row in set (0.01 sec)
mysql> insert into geom set g=geomfromtext(‘point(1 1)’);
Query OK, 1 row affected (0.00 sec)
mysql> insert into geom set g=geomfromtext(‘point(1000 1000)’);
Query OK, 1 row affected (0.00 sec)
mysql> select * from geom;
+—————————+
| g                         |
+—————————+
|              ??      ??   |
|             @?@     @?@   |
+—————————+
5 rows in set (0.00 sec)
mysql> select astext(g) from geom;
+——————+
| astext(g)        |
+——————+
| POINT(1 1)       |
| POINT(1000 1000) |
+——————+
5 rows in set (0.00 sec)

ALTER TABLE geom ADD pt POINT;ALTER TABLE geom DROP pt;

mysql> select g from geom where g= point(1,1);
+—————————+
| g                         |
+—————————+
|              ??      ??   |
+—————————+
1 row in set (0.00 sec)

mysql> help geometry;
Name: ‘GEOMETRY’
Description:
MySQL provides a standard way of creating spatial columns for geometry
types, for example, with CREATE TABLE or ALTER TABLE. Currently,
spatial columns are supported for MyISAM, InnoDB, NDB, and ARCHIVE
tables. See also the annotations about spatial indexes under [HELP
SPATIAL].

URL: http://dev.mysql.com/doc/refman/5.6/en/creating-spatial-columns.html

Examples:
CREATE TABLE geom (g GEOMETRY);

mysql> select astext(g) from geom where g= point(1,1);
+————+
| astext(g)  |
+————+
| POINT(1 1) |
+————+
1 row in set (0.00 sec)

UPDATE myTable
SET Coord = PointFromText(CONCAT(‘POINT(‘,myTable.DLong,’ ‘,myTable.DLat,’)'));

创建表并填入数据的方式,可以直接通过经纬度来导入数据:
CREATE TABLE `table_with_a_point` (
`id` bigint(20) not null,
`location` point not NULL,
`latitude` float default NULL,
`longitude` float default NULL,
`value` int(11) not null,
PRIMARY KEY (`id`)
);
create spatial index table_with_a_point_index on table_with_a_point(location);

LOAD DATA LOCAL INFILE ‘somedata.txt’
INTO TABLE table_with_a_point
COLUMNS TERMINATED BY ‘ ‘ LINES TERMINATED BY ‘\r\n’
(id, latitude, longitude, value)
set location = PointFromText(CONCAT(‘POINT(‘,latitude,’ ‘,longitude,’)'));

CREATE TABLE geom (g GEOMETRY NOT NULL, SPATIAL INDEX(g)) ENGINE=MyISAM;
ALTER TABLE geom ADD SPATIAL INDEX(g);
CREATE SPATIAL INDEX sp_index ON geom (g);

查找矩形中是否包含相应的点:

mysql> set @poly=’polygon((0 0,0 1001,1001 1001,1001 0,0 0))’;
Query OK, 0 rows affected (0.00 sec)
注意polygon后的两层括号,否则会出错。

mysql> select astext(g) from geom where mbrcontains(geomfromtext(@poly),g);
+——————+
| astext(g)        |
+——————+
| POINT(1 1)       |
| POINT(1000 1000) |
+——————+
2 rows in set (0.00 sec)

mysql> set @poly=’polygon((0 0,0 1000,1000 1000,1000 0,0 0))’;
Query OK, 0 rows affected (0.00 sec)

mysql> select astext(g) from geom where mbrcontains(geomfromtext(@poly),g);
+——————+
| astext(g)        |
+——————+
| POINT(1 1)       |
| POINT(1000 1000) |
+——————+
2 rows in set (0.00 sec)

mysql> set @poly=’polygon((0 0,0 100,100 100,100 0,0 0))’;
Query OK, 0 rows affected (0.00 sec)

mysql> select astext(g) from geom where mbrcontains(geomfromtext(@poly),g);
+————+
| astext(g)  |
+————+
| POINT(1 1) |
+————+
1 row in set (0.00 sec)

 

参考:

http://dev.mysql.com/doc/refman/5.6/en/using-spatial-data.html

相关 [mysql 地理 信息] 推荐:

mysql 支持地理信息查询

- - 瀚海星空
周海汉 2014.8.21. 创建表并填入数据的方式,可以直接通过经纬度来导入数据:. 查找矩形中是否包含相应的点:. 注意polygon后的两层括号,否则会出错. mysql 中int和varchar的长度. mysql 中对用户分数排名.

根据status信息对MySQL服务器进行优化

- - 开心平淡对待每一天。热爱生活
网上有很多的文章教怎么配置MySQL服务器,但考虑到服务器硬件配置的不同,具体应用的差别,那些文章的做法只能作为初步设置参考,我们需要根据自己的情况进行配置优化,好的做法是MySQL服务器稳定运行了一段时间后运行,根据服务器的”状态”进行优化.   可以列出MySQL服务器运行各种状态值,另外,查询MySQL服务器配置信息语句:.

[MySQL FAQ]系列 — profiling中要关注哪些信息

- - MySQL中文网
利用MySQL的PROFILE功能,我们可以很方便的查看一个SQL具体的执行代价是怎样的,尤其是可以分析它的最大瓶颈在哪里. 目前PROFILE功能可提供除了内存以外的其他资源消耗统计,例如CPU、I/O、CONTEXT、SWAP等. PROFILE功能只能在SESSION级别使用,还做不到像SQL Server那样可以全局开启,收集一段时间后再关闭,这点有待改进.

使用mysql来实现lbs(地理位置服务)功能

- - haohtml's blog
现在大型的网站实现的lbs服务基本上是用mongodb的实现定位的(gps不太清楚). 对于小的应用来说,有些大材小用了,而且还大大增加了维护成本. 这里用mysql来实现lbs的功能. 以下是从“知乎”网上的一篇文章( http://www.zhihu.com/question/20059072).

[转]在HBase上查询地理信息系统(HBase in Action)

- - 小鸥的博客
本章我们将进入一个使用HBase的新领域:地理信息系统(Geographic Information Systems). GIS是个有趣的研究领域,因为它提出了两个重要的挑战:大规模数据处理的延迟和空间位置建模. 我们将以GIS作为透镜来演示如何让HBase适应这些挑战. 为了做到这些,你需要充分运用一些特有的行业知识.

通过GeoIP2分析访问者IP获取地理位置信息

- - CSDN博客推荐文章
原文链接:http://blog.csdn.net/johnnycode/article/details/42028841. MaxMind GeoIP2 服务能识别互联网用户的地点位置与其他特征,应用广泛,包括个性化定制内容、诈欺检测、广告定向、网站流量分析、执行规定、地理目标定位、地理围栏定位 (geo-fencing)以及数字版权管理.

如何通过命令行查找一个IP的地理位置信息

- - 极客范 - GeekFan.net
如果你想查找一个IP地址在地球上的实际地理位置,现在已经有好多在线的GeoIp查找服务你可以利用(例如geoiptool.com). 这些在线服务大多数都是由免费的像 MaxMind这样的GeoIP数据库提供支持. 在使用这些基于网页的服务同时,这里也有一些不同的方法来查询GeoIP数据库,尤其是Linux命令行.

Linux Ksplice,MySQL and Oracle

- Syn - DBA Notes
Oracle 在 7 月份收购了 Ksplice. 使用了 Ksplice 的 Linux 系统,为 Kernel 打补丁无需重启动,做系统维护的朋友应该明白这是一个杀手级特性. 现在该产品已经合并到 Oracle Linux 中. 目前已经有超过 700 家客户,超过 10 万套系统使用了 Ksplice (不知道国内是否已经有用户了.

MySQL Replication 线程

- - CSDN博客推荐文章
Replication 线程. Mysql 的Replication 是一个异步的复制过程,从一个Mysql instace(我们称之为Master)复制到另一个Mysql instance(我们称之Slave). 在Master 与Slave 之间的实现整个复制过程主. 要由三个线程来完成,其中两个线程(Sql 线程和IO 线程)在Slave 端,另外一个线程(IO 线程)在Master 端.

mysql backup 脚本

- - ITeye博客
网上备份脚本很多,但考虑都不周全. 保证创建备份文件只能是创建者跟root可以访问,其他用户没有权限,保证了数据库备份的安全. 上面脚本是负责备份的份数管理,. 已有 0 人发表留言,猛击->> 这里<<-参与讨论. —软件人才免语言低担保 赴美带薪读研.