【发布时间】:2015-03-18 17:04:13
【问题描述】:
情况如下:
- 每个供应商都有一些服务区域,这些区域是用户使用 GoogleMaps(多边形)定义的。
- 我需要将此数据存储在数据库中并对此进行简单(但快速)的查询。
- 查询应如下所示:“列出所有服务区包含 x,y 的供应商”或“其中包含 x,y 的多边形(服务区)?”
此时,我发现 GeoDjango 看起来是一个非常复杂的解决方案。要使用它,我需要一个相当复杂的设置,而且我找不到任何最近的(和好的)教程。
我提出了这个解决方案:
- 将每个多边形作为 Json 存储到数据库中
- 应用一种方法来确定某个 x,y 是否属于任何多边形
这个解决方案的问题很明显:考虑到我需要评估每个多边形,查询可能需要很长时间才能执行。
最后:我正在为这个问题寻找另一种解决方案,我希望在我当前运行的服务器中找到没有设置 GeoDjango 的东西
确定某个点是否在多边形内不是问题(我找到了几个例子);问题是从数据库中检索每个多边形并评估它不会缩放。为了解决这个问题,我需要以可以快速查询的方式存储多边形。
【问题讨论】:
-
你不会为此使用 GeoDjango。您可以改用 Shapely。 streamhacker.com/2010/03/23/python-point-in-polygon-shapely。但是你同时问很多事情。问题是如何将数据存储在数据库中?或者如何判断一个点是否在多边形中?
-
发送@AntonisChristofides!我添加了更多细节。问题不是确定该点是否在多边形内,而是我需要以一种可以快速查询其中几个的方式存储多边形。现在清楚了吗?看起来Shapely并没有解决问题
-
也许你需要的是 PostGIS。
-
这是一个老问题,但添加了这条评论,因为它仍然在这里显眼地出现。使用 geodjango 绝对没有您尝试过的基于 json 的方法复杂。空间数据库是专门为查找空间关系而设计的。很多有才华的人写了很多代码。如果你想用 JSON 重现它,你会很伤心。
标签: python django geolocation geodjango