</span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> importShapfile</span><span class="pun">()</span><span class="pln"> </span><span class="kwd">throws</span><span class="pln"> </span><span class="typ">ShapefileException</span><span class="pun">,</span><span class="pln"> </span><span class="typ">FileNotFoundException</span><span class="pun">,</span><span class="pln"> </span><span class="typ">IOException</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> </span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="str">"\n=== Test Import Shapefile ==="</span><span class="pun">);</span><span class="pln">
1 </span><span class="typ">GraphDatabaseService</span><span class="pln"> graphdb </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">EmbeddedGraphDatabase</span><span class="pun">(</span><span class="pln">databasepath</span><span class="pun">);</span><span class="pln"> 2 </span><span class="kwd">try</span><span class="pln"> 3 </span><span class="pun">{</span><span class="pln"> 4 </span><span class="typ">ShapefileImporter</span><span class="pln"> shpImporter </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">ShapefileImporter</span><span class="pun">(</span><span class="pln">graphdb</span><span class="pun">);</span><span class="pln"> 5 shpImporter</span><span class="pun">.</span><span class="pln">importFile</span><span class="pun">(</span><span class="str">"/home/vent/environment/neo4j/data/shp/river.shp"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"river"</span><span class="pun">,</span><span class="pln"> </span><span class="typ">Charset</span><span class="pun">.</span><span class="pln">forName</span><span class="pun">(</span><span class="str">"UTF-8"</span><span class="pun">));</span><span class="pln"> 6 </span><span class="pun">}</span><span class="pln"> 7 </span><span class="kwd">finally</span><span class="pln"> 8 </span><span class="pun">{</span><span class="pln"> 9 graphdb</span><span class="pun">.</span><span class="pln">shutdown</span><span class="pun">();</span><span class="pln"> 10 </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span><span class="pln"> </span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">static</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> main</span><span class="pun">(</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> args</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">throws</span><span class="pln"> </span><span class="typ">ShapefileException</span><span class="pun">,</span><span class="pln"> </span><span class="typ">FileNotFoundException</span><span class="pun">,</span><span class="pln"> </span><span class="typ">IOException</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> </span><span class="com">// TODO Auto-generated method stub</span><span class="pln"> importShapefiletest isf </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> importShapefiletest</span><span class="pun">();</span><span class="pln"> isf</span><span class="pun">.</span><span class="pln">importShapfile</span><span class="pun">();</span><span class="pln"> </span><span class="pun">}</span></code></pre><p>}</p></pre><p></p>
<div><span><img src="http://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div> </div> <h3>3.3导入OSM</h3> <p>导入OSM的过程和导入shapefile差异不大,旧版Neo4j Spatial 提供了批量读入的接口BatchInserter,可以加快大文件的导入。具体JavaDoc请参阅打包后的文档。</p> <div> <div><span><img src="http://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div> <pre>package edu.sirc.gis.data; <p>import java.io.File; import java.nio.charset.Charset; import java.util.HashMap; import java.util.Map;</p> <p>import org.neo4j.gis.spatial.osm.OSMImporter; import org.neo4j.graphdb.GraphDatabaseService; import org.neo4j.kernel.EmbeddedGraphDatabase; import org.neo4j.kernel.impl.batchinsert.BatchInserter; import org.neo4j.kernel.impl.batchinsert.BatchInserterImpl;</p> <p>public class importOSMTest {</p> <pre class="prettyprint"><code><span class="com">/\*\* \* @param args \*/</span><span class="pln"> </span><span class="com">//import osm file into the default db for server .</span><span class="pln"> </span><span class="kwd">private</span><span class="pln"> </span><span class="typ">String</span><span class="pln"> databasepath</span><span class="pun">=</span><span class="str">"/home/vent/environment/neo4j/data/graph.db"</span><span class="pun">;</span><span class="pln"> </span><span class="kwd">private</span><span class="pln"> </span><span class="typ">String</span><span class="pln"> osmPath</span><span class="pun">=</span><span class="str">"/home/vent/Downloads/"</span><span class="pun">;</span><span class="pln"> </span><span class="kwd">private</span><span class="pln"> </span><span class="kwd">static</span><span class="pln"> </span><span class="kwd">final</span><span class="pln"> </span><span class="typ">Map</span><span class="pun">&</span><span class="pln">lt</span><span class="pun">;</span><span class="typ">String</span><span class="pun">,</span><span class="pln"> </span><span class="typ">String</span><span class="pun">&</span><span class="pln">gt</span><span class="pun">;</span><span class="pln"> NORMAL\_CONFIG </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">HashMap</span><span class="pun">&</span><span class="pln">lt</span><span class="pun">;</span><span class="typ">String</span><span class="pun">,</span><span class="pln"> </span><span class="typ">String</span><span class="pun">&</span><span class="pln">gt</span><span class="pun">;();</span><span class="pln"> </span><span class="kwd">static</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> NORMAL\_CONFIG</span><span class="pun">.</span><span class="pln">put</span><span class="pun">(</span><span class="pln"> </span><span class="str">"neostore.nodestore.db.mapped\_memory"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"50M"</span><span class="pln"> </span><span class="pun">);</span><span class="pln"> NORMAL\_CONFIG</span><span class="pun">.</span><span class="pln">put</span><span class="pun">(</span><span class="pln"> </span><span class="str">"neostore.relationshipstore.db.mapped\_memory"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"120M"</span><span class="pln"> </span><span class="pun">);</span><span class="pln"> NORMAL\_CONFIG</span><span class="pun">.</span><span class="pln">put</span><span class="pun">(</span><span class="pln"> </span><span class="str">"neostore.propertystore.db.mapped\_memory"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"150M"</span><span class="pln"> </span><span class="pun">);</span><span class="pln"> NORMAL\_CONFIG</span><span class="pun">.</span><span class="pln">put</span><span class="pun">(</span><span class="pln"> </span><span class="str">"neostore.propertystore.db.strings.mapped\_memory"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"200M"</span><span class="pln"> </span><span class="pun">);</span><span class="pln"> NORMAL\_CONFIG</span><span class="pun">.</span><span class="pln">put</span><span class="pun">(</span><span class="pln"> </span><span class="str">"neostore.propertystore.db.arrays.mapped\_memory"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"0M"</span><span class="pln"> </span><span class="pun">);</span><span class="pln"> NORMAL\_CONFIG</span><span class="pun">.</span><span class="pln">put</span><span class="pun">(</span><span class="pln"> </span><span class="str">"dump\_configuration"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"false"</span><span class="pln"> </span><span class="pun">);</span><span class="pln"> </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">private</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> importOSM</span><span class="pun">()</span><span class="pln"> </span><span class="kwd">throws</span><span class="pln"> </span><span class="typ">Exception</span><span class="pln"> </span><span class="pun">{</span><span class="pln">1</span><span class="typ">OSMImporter</span><span class="pln"> osmIm </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">OSMImporter</span><span class="pun">(</span><span class="str">"FUJIAN"</span><span class="pun">);</span><span class="pln"> 2</span><span class="typ">Map</span><span class="pun">&</span><span class="pln">lt</span><span class="pun">;</span><span class="typ">String</span><span class="pun">,</span><span class="pln"> </span><span class="typ">String</span><span class="pun">&</span><span class="pln">gt</span><span class="pun">;</span><span class="pln"> config </span><span class="pun">=</span><span class="pln"> NORMAL_CONFIG</span><span class="pun">;</span><span class="pln"> 3</span><span class="lit">@SuppressWarnings</span><span class="pun">(</span><span class="str">"deprecation"</span><span class="pun">)</span><span class="pln"> 4</span><span class="com">//BatchInserter baIns = new BatchInserterImpl(osmPath,config);</span><span class="pln"> 5</span><span class="typ">String</span><span class="pln"> dataset </span><span class="pun">=</span><span class="str">"/home/vent/Downloads/Fujian.osm"</span><span class="pun">;</span><span class="pln"> 6</span><span class="com">//osmIm.importFile(baIns,dataset,false);</span><span class="pln"> 7 8</span><span class="typ">GraphDatabaseService</span><span class="pln"> db </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">EmbeddedGraphDatabase</span><span class="pun">(</span><span class="pln">databasepath</span><span class="pun">);</span><span class="pln"> 9osmIm</span><span class="pun">.</span><span class="pln">importFile</span><span class="pun">(</span><span class="pln">db</span><span class="pun">,</span><span class="pln"> dataset</span><span class="pun">);</span><span class="pln"> 10osmIm</span><span class="pun">.</span><span class="pln">reIndex</span><span class="pun">(</span><span class="pln">db</span><span class="pun">,</span><span class="pln"> </span><span class="lit">100</span><span class="pun">);</span><span class="pln"> 11db</span><span class="pun">.</span><span class="pln">shutdown</span><span class="pun">();</span><span class="pln">
</span><span class="pun">}</span><span class="pln"> </span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">static</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> main</span><span class="pun">(</span><span class="typ">String</span><span class="pun">[]</span><span class="pln"> args</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">throws</span><span class="pln"> </span><span class="typ">Exception</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> </span><span class="com">// TODO Auto-generated method stub</span><span class="pln"> importOSMTest iOSM </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> importOSMTest</span><span class="pun">();</span><span class="pln"> iOSM</span><span class="pun">.</span><span class="pln">importOSM</span><span class="pun">();</span><span class="pln"> </span><span class="pun">}</span></code></pre><p>}</p></pre><p></p>
<div><span><img src="http://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div> </div> <p> </p> <p>下讲会讲述Neo4j Spatial与GeoServer 的集成,以及与Neo4j Server的集成。</p> <p> </p> <p>\[8\]Neo4j Spatial <a href="http://nowiki.neo4j.org/content/Neo4j\_Spatial" target="\_blank">http://nowiki.neo4j.org/content/Neo4j\_Spatial</a></p> <p>\[9\] OpenGIS® Simple Features Specification For SQL</p> <p>\[10\]Vicknair, C. et al. 2010. A Comparison of a Graph Database and a Relational Database. In Proceedings of the 48th annual Southeast regional conference</p> <p>\[11\]Apache Lucene <a href="http://lucene.apache.org/core/" target="\_blank">http://lucene.apache.org/core/</a></p> <p>\[12\]R-tree <a href="http://en.wikipedia.org/wiki/R-tree" target="\_blank">http://en.wikipedia.org/wiki/R-tree</a></p> <p>\[13\]GiST <a href="http://en.wikipedia.org/wiki/GiST" target="\_blank">http://en.wikipedia.org/wiki/GiST</a></p> <p>\[14\]空间数据库索引技术 郭薇 郭菁 上海交通大学出版社 P104-105 2006</p> <p>\[15\]EGit <a href="http://www.eclipse.org/egit/" target="\_blank">http://www.eclipse.org/egit/</a></p> <p>\[16\]Maven Integration (m2e) <a href="http://eclipse.org/m2e/" target="\_blank">http://eclipse.org/m2e/</a></p></div> 原文地址:http://neo4j.com.cn/topic/581925ac5ab6525b6d6ab80b </div>