【发布时间】:2020-03-14 21:17:02
【问题描述】:
MYSQL 5.7 版
要求:
我在 MYSQL 表中有一堆 POINT 几何,我必须找到 GEOMETRYCOLLECTION 对象 5 公里距离/半径内的所有 POINT 几何。
GEOMETRYCOLLECTION 可能包含不止一种几何类型,例如 POINT、POLYGON 等。
GEOMETRYCOLLECTION 数据示例:SET @g1 = ST_GeomFromText('GEOMETRYCOLLECTION(POINT (-156.366489591715 66.913750389327),POLYGON ((-156.357608905242 66.906958164897, -156.360302383363 66.9066027336476, -156.361997104194 66.9067073607308, -156.363616093774 66.9066368440642, -156.365477697938 66.9065867326059, -156.368127298976 66.9065970034393, -156.370061891681 66.9066888794808, -156.37182258022 66.9068547305222, -156.373286981259 66.9070724523969, -156.374390675008 66.9072952721882, -156.376359777088 66.9077681138541, -156.377706173961 66.9080113180204, -156.379222192708 66.9081328753119, -156.380729601039 66.9081591586452, -156.382562289578 66.9081211961453, -156.387571662487 66.9099676951007, -156.389320598943 66.9125180930134, -156.389291120818 66.9145787836353, -156.384722634367 66.9167899596735, -156.37955035 66.9195246586276, -156.372520662511 66.9209119638337, -156.360432280238 66.9215118034161, -156.355776993787 66.9203754471679, -156.34906598338 66.9180659711298, -156.347941981299 66.9174007836309, -156.346853913592 66.9167568252985, -156.34605399901 66.9158971169665, -156.346982815675 66.9151925950926, -156.346794497967 66.9144321773854, -156.345642955261 66.9140107294695, -156.343831364638 66.9136152003034, -156.342996512556 66.9130307378043, -156.343113243806 66.9123137492637, -156.343498096931 66.9119029992644, -156.344661664637 66.9111819440571, -156.345080786511 66.9105884961414, -156.345524286511 66.9099605023924, -156.347168040675 66.9098486503092, -156.348952756297 66.9096090419763, -156.348689200048 66.9089614565606, -156.349495732338 66.908706844061, -156.350786711503 66.9082992794783, -156.352211271917 66.9083472388533, -156.353952768789 66.90829894302, -156.355389368787 66.9082072242701, -156.356512531285 66.9079768284371, -156.356677961493 66.9078075857291, -156.356422527119 66.907644261771, -156.355901372953 66.9072802273965, -156.357608905242 66.906958164897)))');
示例 POINT 数据:SET @p1 = ST_GeomFromText('GEOMETRYCOLLECTION(POINT (-156.342840017 66.9320439348))');
我尝试过 ST_DISTANCE_SPHERE(@g1,@p1) 空间函数(它返回以米为单位的值),但它似乎不支持 POINT 和 MULTIPOINT 以外的几何类型。
那我用过:
ST_DISTANCE(@g1,@p1)
'0.015301834064271899'
我无法理解这个返回值在 MYSQL 5.7 中的 UNIT 是什么?
我在互联网上进行了很多搜索,但没有相关的适当文档。在 POSTGIS 中,可以做到这一点,但我在 MYSQL 5.7 版中很难做到这一点。
感谢任何帮助。
提前致谢!
【问题讨论】:
标签: mysql geospatial