本文介绍了如何搜索某个国家/地区的餐厅?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在Postgis中有一些餐厅的信息:
Last name
longitude
latitude
address.
地址被分成几个带有外键通知的表,这样我就有了一个国家表、一个地区表等。
我想知道一个国家(如法国)某个地区有哪些餐厅。
所以我有两个解决方案:
在国家/地区表中搜索,然后在区域中搜索,然后显示附加到该区域的餐厅列表或使用Postgis多边形系统。我想听听您对哪个最有效/最相关的意见。
目前我使用这个查询(在我看来可以改进):
"select *
from data where ST_Intersects(st_point(lon, lat) ,
" +
" ST_GeomFromGeoJSON('
" +
" %polygone*
"+
"')
" +
") = 'true' order by name";
此处具有点列表的Polygon对象(太长,无法在此问题中写出,我将其命名为%Polygon)
谢谢您。
推荐答案
您正在构建点和面-而不是具有正确的几何列-这效率很低。
您尚未讨论空间索引,因此交集操作将会很慢。
您还没有指定多边形的复杂性:如果它们有许多许多顶点,相交操作将会很慢。可以通过先细分它们来改进这一点。
因此,从技术上讲,使用索引并最终细分的多边形可以使此类操作变得快速。
但,地址通常并不完美。有些可能是不完整的,有些可能是错误的(例如:有人输入了邻近城镇的名称)。按几何图形选择将得到与按属性选择不同的结果,因此您可能需要在决定之前分析数据质量,并仔细比较这两种方法之间的结果差异。
这篇关于如何搜索某个国家/地区的餐厅?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!