上講回顧:介紹了Neo4j的概念和安裝,同時包括介紹了Git和Maven兩個工具。本文會介紹Neo4j Spatial項目以及空間資料(向量)的儲存。
1.Neo4j Spatial 簡介1.1Neo4j Spatial概念
Neo4j Spatial項目是圖資料庫Neo4j的一個外掛程式,它通過將空間資料映射到圖模型(graph model),它將對象和關係當作頂點和邊儲存在圖模型中。因而使得Neo4j具有空間資料的匯入,儲存,查詢等功能[8]。Neo4j Spatial支援的地理要素遵循OpenGIS的規範[9],包括點(point),線段(line-string),面(polygon),多點(multipoint),多線段(multi-linestring)等簡單要素。Neo4j Spatial使用R樹作為空白間索引,主要是整合了Lucene 的索引庫,支援的空間查詢包括覆蓋(cover),被覆蓋(cover by),包含(contian),相交(intersect)等。一般而言,R樹會將葉子結點(COUNT,LEVEL,<OIi,MBRi>)上幾何要素分組並用它們的資料矩形來表示,相比PostGIS所使用的最佳化過GisT[13]索引要低效,會使Neo4j在範圍查詢上效率有所不及PostGIS,但它對適合圖模型的資料(如網路資料)操作效率非常高[14]。綜上所述,Neo4j在符合圖資料模型的分析中如鄰近搜尋,路徑分析等這些特定類型的應用有非常大的優勢。
Neo4J圖資料庫實踐系列
圖資料庫實踐系列 (一)--Neo4J簡介與安裝
圖資料庫實踐系列 (二)--Neo4J空間資料儲存
圖資料庫實踐系列 (三)--Neo4j Spatial的REST整合
1.2 Neo4j Spatial特性
Neo4j Spatial的部分核心特性包括
- 支援Esri Shapefile格式,OSM(OpenStreetMap)格式(只支援.osm格式)(補充:Open Street Map目前逐步適用PBF替代OSM)
- 支援所有通用的幾何要素
- 在空間查詢的時候支援拓撲操作
- 允許任何圖資料都實現空間操作功能
- 能夠將單一圖層或者資料集拆分成多個子圖層
2.Neo4j Spatial安裝2.1 EGit安裝
EGit是Eclipse團隊提供的Git外掛程式,它基於JGit(Git的java實現版本)實現的,允許在Eclipse中實現Git的各種命令[15]。它的安裝和其他外掛程式一樣,在eclipse中選擇Help->Install New Software,加入Update site http://download.eclipse.org/egit/updates 會1所示:
圖1 安裝EGit
安裝成功的話,需要重啟Eclipse。File ->New -> Other,會看到Git的字樣。
2.2 M2eclipse安裝
M2eclipse是Maven的Eclipse外掛程式,項目的目標是提供為Eclipse 提供一流的Maven支援,使它能夠更方便地編輯POM檔案,構建項目等[16]。同樣可以通過Update Site 安裝:http://download.eclipse.org/technology/m2e/releases。2所示:
圖2 安裝M2Eclipse
安裝成功的話,需要重啟Eclipse。File ->New -> Other,會看到Maven的字樣。
2.2Neo4j Spatial安裝
Neo4j Spatial源碼可以在Github下載,我們通過以上安裝的兩個外掛程式,來構建和安裝我們的Neo4j Spatial項目。首先在eclipse中File中匯入Git項目,
File -> Import -> Git -> Project from Git.如果本地已經存在Git庫,可以選擇Local.我們遠程下載Spatial,選擇URI,3所示。
圖3 選擇遠程庫
輸入Neo4j Spatial URI,然後Next,-4所示:
圖4 輸入URI
EGit會自動Fetch回所有的源碼,我們可以按照自己需要選擇特定版本,然後Next。5所示:
圖5 選擇源碼版本
然後可以一直Next,直至選擇匯入的項目類型,選擇Import as general projcet.6 所示:
圖6 匯入項目
再Next然後點finish 完成neo4j spatial 的匯出。此時,還需要將該項目轉化成Maven Project ,選中項目,右鍵:Configure ->Convert to Maven Project.最後我們得到了一個git管理下的maven項目。使用如下命令來安裝Neo4j Spatial。
mvn clean install
在eclipse操作是 Run as ->5. Maven Build ->輸入構建目標。 7所示:
圖7 構建Neo4j Spatial 項目
M2eclipse會自動構建工程。如果安裝失敗的話,可以使用如下命令跳過單元測試
mvn clean install -DskipTests
最後eclipse的console會報出build success。