Django ElasticSearch Ionic 打造 GIS 移动应用 —— 架构设计
搜索引擎是个好东西,GIS也是个好东西。当前还有Django和Ionic。最后效果图


构架设计
对我们的需求进行简要的思考后,设计出了下面的一些简单的架构。

GIS架构说明 —— 服务端
简单说明:
- 用户在前台或者后台创建数据。
- 在model保存数据的时候,会调用Google的API解析GPS
- 在haystack的配置中设置实时更新,当数据创建的时候自动更新索引
- 数据被ElasticSearch索引
下面是框架的一些简单的介绍
Django
Django 是一个开放源代码的Web应用框架,由Python写成。采用了MVC的软件设计模式,即模型M,视图V和控制器C。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的。并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。
Django 的主要目标是使得开发复杂的、数据库驱动的网站变得简单。Django注重组件的重用性和“可插拔性”,敏捷开发和DRY法则(Don't Repeat Yourself)。在Django中Python被普遍使用,甚至包括配置文件和数据模型。
首先考虑Django,而不是其他Node或者Ruby框架的原因是:
- 内置认证系统
- 内置CSRF
当然这是其他框架也所拥有的,主要特性还有:
- 一个表单序列化及验证系统,用于HTML表单和适于数据库存储的数据之间的转换。
- 一套协助创建地理信息系统(GIS)的基础框架
最后一个才是亮点,内置GIS,虽然没怎么用到,但是至少在部署上还是比较方便的。
Haystack
Haystack provides modular search for Django. It features a unified, familiar API that allows you to plug in different search backends (such as Solr, Elasticsearch, Whoosh, Xapian, etc.) without having to modify your code.
Haystack是为Django提供一个搜索模块blabla..,他的主要特性是可以
write your search code once and choose the search engine you want it to run on
也就是说你只需要写你的代码选择你的搜索引擎就可以工作了。
ElasticSearch
在上面的Haystack提供了这些一堆的搜索引擎,当然支持地点搜索的只有Solr和ElasticSearch,他们支持的空间搜索有:
- within
- dwithin
- distance
- order_by(‘distance’)
- polygon
在文档上没有写Solr的polygon搜索,但是实际上也是支持的(详细见这篇文章: google map solr polygon 搜索。
至于为什么用的是ElasticSearch,是因为之前用Solr做过。。。
GIS架构说明 —— 客户端
简单说明 —— GET
- 当我们访问Map View的时候,会调用HTML5获取用户的位置
- 根据用户的位置定位,设置缩放
- 根据用户的位置发出ElasticSearch请求,返回结果中带上距离
- 显示
简单说明 —— POST
- 用户填写数据会发给Django API,并验证
- 成功时,存入数据库,更新索引。
Ionic
Ionic提供了一个免费且开源的移动优化HTML,CSS和JS组件库,来构建高交互性应用。基于Sass构建和AngularJS 优化。
用到的主要是AngularJS,之前用他写过三个APP。
Django REST Framework
与Django Tastypie相比,DRF的主要优势在于Web界面的调试。
其他
因为选的是比较熟悉的技术栈,所以也只花了不到两天的业余时间完成的。或许,这也是全栈程序员的优势所在。
Django ElasticSearch Ionic 打造 GIS 移动应用 —— 架构设计的更多相关文章
- 4- vue django restful framework 打造生鲜超市 -restful api 与前端源码介绍
4- vue django restful framework 打造生鲜超市 -restful api 与前端源码介绍 天涯明月笙 关注 2018.02.20 19:23* 字数 762 阅读 135 ...
- [置顶] 遵循Java EE标准体系的开源GIS服务平台架构
传送门 ☞ 系统架构设计 ☞ 转载请注明 ☞ http://blog.csdn.net/leverage_1229 传送门 ☞ GoF23种设计模式 ☞ 转载请注明 ☞ http://blog.csd ...
- 关于Django Web应用架构设计开发的几个问题
1.关于分层,做过传统JEE应用的同学肯定知道JEE应用会分很多个设计层.根据传统Web应用架构设计一般从上到下分这么几个层(太懒了,不画图了):Web前端层.Web后端交互层.业务层.基础数据设施层 ...
- 3- vue django restful framework 打造生鲜超市 - model设计和资源导入
3- vue django restful framework 打造生鲜超市 - model设计和资源导入 使用Python3.6与Django2.0.2(Django-rest-framework) ...
- Java生鲜电商平台-电商中海量搜索ElasticSearch架构设计实战与源码解析
Java生鲜电商平台-电商中海量搜索ElasticSearch架构设计实战与源码解析 生鲜电商搜索引擎的特点 众所周知,标准的搜索引擎主要分成三个大的部分,第一步是爬虫系统,第二步是数据分析,第三步才 ...
- 引爆潮流技术 Vue+Django REST framework打造生鲜电商项目
引爆潮流技术Vue+Django REST framework打造生鲜电商项目 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受, ...
- .NET Core实战项目之CMS 第九章 设计篇-白话架构设计
前面两篇文章给大家介绍了我们实战的CMS系统的数据库设计,源码也已经上传到服务器上了.今天我们就好聊聊架构设计,在开始之前先给大家分享一下这几天我一直在听的<从零开始学架构>里面关于架构设 ...
- 架构设计:负载均衡层设计方案(3)——Nginx进阶
版权声明:欢迎转载,但是看在我辛勤劳动的份上,请注明来源:http://blog.csdn.net/yinwenjie(未经允许严禁用于商业用途!) 目录(?)[-] Nginx继续进阶 1gzip ...
- .NET架构设计、框架设计系列文章总结
从事.NET开发到现在已经有七个年头了.慢慢的可能会很少写.NET文章了.不知不觉竟然走了这么多年,热爱.NET热爱c#.突然想对这一路的经历进行一个总结. 是时候开始下一阶段的旅途,希望这些文章可以 ...
随机推荐
- Idea项目添加新文件后运行出现404问题
今天在项目里添加了一个新的html文件,然后运行项目页面跳转出现了404问题,找不到页面,经过我的一番查找,我注意到了Idea项目下有一个target文件,然后上网搜了解到这个target文件是mav ...
- Qt:输出为CSV文件时汉字乱码
参考 (18条消息) QT5写csv文件,文件打开后中文显示乱码的问题解决_yanzi150207348的博客-CSDN博客 解决方法 1.在文件开头写一段: #if _MSC_VER >= 1 ...
- Python:list和ndarray的互相转化
a=np.arange(9).reshape(3,3) #a是一个3*3的array #array -> list l=a.tolist() [[0, 1, 2], [3, 4, 5], [6, ...
- 根据文件url,下载文件到本地
/// <summary> /// 根据文件url,下载文件到本地 /// </summary> /// <param name="fileUrl"& ...
- JZ-014-链表中倒数第 K 个结点
链表中倒数第 K 个结点 题目描述 输入一个链表,输出该链表中倒数第k个结点. 题目链接: 链表中倒数第 K 个结点 代码 /** * 标题:链表中倒数第 K 个结点 * 题目描述 * 输入一个链表, ...
- LeetCode-019-删除链表的倒数第 N 个结点
删除链表的倒数第 N 个结点 题目描述:给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点. 进阶:你能尝试使用一趟扫描实现吗? 示例说明请见LeetCode官网. 来源:力扣(Leet ...
- MAT工具分析Dump文件(大对象定位)
前段时间线上服务经常发生卡顿,经过排查发现是大对象引起的Fullgc问题,特此记录排查逻辑. 目录 目的 一.获得服务进程 二.生成dump文件 三.下载mat工具 四.使用mat工具导入第二步生成的 ...
- Nebula Graph 在企查查的应用
本文首发于 Nebula Graph Community 公众号 背景 企查查是企查查科技有限公司旗下的一款企业信用查询工具,旨在为用户提供快速查询企业工商信息.法院判决信息.关联企业信息.法律诉讼. ...
- ENVI提取水系并进行生态敏感性分析
4 具体步骤 4.1 DEM数据拼接 (1)打开ENVI软件,选择[File][Open],添加文件夹DEM数据中的影像,操作如图4.1.1所示,结果如图4.1.2. 图4.1.1 添加DEM数据影像 ...
- TypeScript方法的定义
在 JavaScript 中,有两种方式定义方法. 1.命名的方法 function add(x,y){ return x+y;}2.匿名方法 var myAdd = function(x,y) { ...