MySql在POLYGON和POINT(或POLYGON和POLYGON)内的st_within函数上收到错误3037

时间:2018-07-06 13:16:40

标签: mysql geolocation geospatial geocoding

我正在运行MySql 5.7.22,并且试图获取建筑物所在的区域标识,所以我有两个表,一个表用于建筑物地址及其各自的地理空间坐标:

表格:建筑物
列:
id int(11)AI PK
国家varchar(50)
状态varchar(50)
城市varchar(60)
路线varchar(255)
坐标点

另一个针对普查区域的定义如下:

表格:ref_shape_area_pond
列:
OGR_FID int(11)AI PK
形状几何
id int(11)
数倍
area_pond文字

所以我为此尝试了两种方法:

1)像这样的常规JOIN语句:

选择building.id,area_pond
来自建筑物
JOIN ref_shape_area_pond ON st_within(ST_GeomFromText(ST_AsWKT(coords)),
ST_GeomFromText(ST_AsWKT(ref_shape_area_pond.SHAPE)));

2)像这样的协调查询:

SELECT ID,(SELECT Area_pond
           来自ref_shape_area_pond
在st_within(buildings.coords,ref_shape_area_pond.SHAPE))
来自建筑物;

两种方法均会产生错误MySql错误3037:

错误代码:3037。为函数st_within提供了无效的GIS数据。

我检查了ref_shape_area_pond.SHAPE上的几何图形,它们定义了封闭的多边形(即:POLYGON上的第一个点和最后一个点是相同的);另外,ref_shape_area_pond.SHAPE和buildings.coords都是相同的RSID(2)。

此外,我还在建筑物表上创建了一个额外的字段,如下所示:

coords_geometry几何

试图确保为st_within()函数提供相同类型的参数;还是一样的错误。

还有什么可以检查的;我在做什么错了?

0 个答案:

没有答案