mysql - 我的多边形是否正确插入到数据库中?

标签 mysql database geospatial

mysql> show create table places\G;
*************************** 1. row ***************************
       Table: places
Create Table: CREATE TABLE `places` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
  `name_full` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `network_id` int(11) DEFAULT NULL,
  `fence_ll` polygon NOT NULL,
  `fence_utm` polygon NOT NULL,
  `area` bigint(20) NOT NULL,
  `created_at` bigint(20) DEFAULT NULL,
  `updated_at` bigint(20) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `network_id` (`network_id`),
  CONSTRAINT `places_ibfk_1` FOREIGN KEY (`network_id`) REFERENCES `networks` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
1 row in set (0.01 sec)

这是我的查询:

INSERT IGNORE INTO places(name, fence_ll, fence_utm, area, created_at) 
VALUES('West Covina',
   GeomFromText('POLYGON(( 34.08166844698419 -118.01307678222656,33.994611584814606 -118.01307678222656,33.994042291874415 -117.89566040039062,34.08280585343835 -117.89634704589844)) ', 0), 
   GeomFromText('POLYGON(( 406532.3562310586 3771674.3531455416,406436.8059323749 3762021.032807315,417280.6563504976 3761856.9033192885,417303.43441323494 3771699.900605784)) ', 0), 105355675, 1471220285)

该命令正确插入了记录,但由于某些原因 fence_llfence_utm 是空白的。

*************************** 5. row ***************************
        id: 11
      name: Los Angeles
 name_full: NULL
network_id: NULL
  fence_ll: 
 fence_utm: 
      area: 6859688899
created_at: 1471220285
updated_at: NULL

我担心的是 polygon 点太精确了。如果是这样,我应该将这些点截断到小数点后几位?

最佳答案

看起来你的多边形的第一个点和最后一个点不一样,这似乎是一个要求。试试这个:

INSERT IGNORE INTO places(name, fence_ll, fence_utm, area, created_at)
VALUES
    ('West Covina',
     GeomFromText('POLYGON(( 34.08166844698419 -118.01307678222656, 33.994611584814606 -118.01307678222656, 33.994042291874415 -117.89566040039062,34.08280585343835 -117.89634704589844, 34.08166844698419 -118.01307678222656 )) ', 0),
     GeomFromText('POLYGON(( 406532.3562310586 3771674.3531455416,406436.8059323749 3762021.032807315,417280.6563504976 3761856.9033192885,417303.43441323494 3771699.900605784, 406532.3562310586 3771674.3531455416 )) ', 0), 105355675, 1471220285)

Reference

关于mysql - 我的多边形是否正确插入到数据库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38947797/

相关文章:

php - 数据库查询,比较每两行但只获取前两行

mysql - 从多个表中选择字段并在一个表上使用 OUTER JOIN

php - 匹配数据库表中的任意一组字段

sql - 几何列的 SRID 0 是什么?

Mysql从另一个表中减去

database - 如何使用 Flyway 从 DB Schema 导出或导入数据

mysql - 在实时站点上通过Golang连接到Cloud SQL(MySQL)

geospatial - 关于 Cloudant 地理空间使用的架构/设计建议

postgresql - Postgis 中 2 个点之间的距离,单位为 srid 4326,以米为单位

Mysql 内部连接两次并在两次连接上使用 WHERE