通过坐标定位 5 英里半径内的建筑物
本指南详细介绍了如何高效检索给定坐标 5 英里半径内的所有建筑物。
第 1 步:优化数据存储
使用几何或地理数据类型存储建筑物位置数据。这显着提高了空间查询性能并防止数据类型转换问题。
第 2 步:使用 ST_DWithin 或 ST_Distance
两个函数有利于距离计算:
ST_DWithin: 此函数有效地确定几何图形是否落在指定距离内。 要查找 (-4.6314, 54.0887) 5 英里范围内的建筑物:
<code class="language-sql">SELECT name, longitude, latitude FROM building WHERE ST_DWithin('POINT(-4.6314 54.0887)'::geography, ST_MakePoint(longitude, latitude), 8046.72); -- 8046.72 meters = 5 miles</code>
ST_Distance: 此函数计算以米为单位的距离。 使用以下命令将米转换为英里:distance * 0.000621371
。 对于 (-4.6314, 54.0887) 5 英里范围内的建筑物:
<code class="language-sql">SELECT name, longitude, latitude, ST_Distance('POINT(-4.6314 54.0887)'::geography, ST_MakePoint(longitude, latitude)) * 0.000621371 AS distance_miles FROM building WHERE distance_miles <= 5;</code>
第 3 步:关键考虑因素
以上是如何使用坐标查找 5 英里半径内的建筑物?的详细内容。更多信息请关注PHP中文网其他相关文章!