Django Elasticsearch Ionic 打造 GIS 行動裝置 App —— 架構設計

來源:互聯網
上載者:User

標籤:django   elasticsearch   ionic   gis   android   

搜尋引擎是個好東西,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提供了這些一堆的搜尋引擎,當然支援地點搜尋的只有SolrElasticsearch,他們支援的空間搜尋有:

  • within
  • dwithin
  • distance
  • order_by(‘distance’)
  • polygon

在文檔上沒有寫Solr的polygon搜尋,但是實際上也是支援的(詳細見這篇文章: google map solr polygon 搜尋。

至於為什麼用的是Elasticsearch,是因為之前用Solr做過。。。

GIS架構說明 —— 用戶端簡單說明 —— GET
  1. 當我們訪問Map View的時候,會調用HTML5擷取使用者的位置
  2. 根據使用者的位置定位,設定縮放
  3. 根據使用者的位置發出Elasticsearch請求,返回結果中帶上距離
  4. 顯示
簡單說明 —— POST
  1. 使用者填寫資料會發給Django API,並驗證
  2. 成功時,存入資料庫,更新索引。
Ionic

Ionic提供了一個免費且開源的移動最佳化HTML,CSS和JS組件庫,來構建高互動性應用。基於Sass構建和AngularJS 最佳化。

用到的主要是AngularJS,之前用他寫過三個APP。

Django REST Framework

與Django Tastypie相比,DRF的主要優勢在於Web介面的調試。

其他

因為選的是比較熟悉的技術棧,所以也只花了不到兩天的業餘時間完成的。或許,這也是全棧程式員的優勢所在。

服務端代碼: https://github.com/phodal/django-elasticsearch

用戶端代碼: https://github.com/phodal/ionic-elasticsearch

Django Elasticsearch Ionic 打造 GIS 行動裝置 App —— 架構設計

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.