±à¼ÍƼö: |
±¾ÎÄÖ÷ÒªNeo4jµÄ¸ÅÄîºÍ°²×°£¬Í¬Ê±°üÀ¨½éÉÜÁËGitºÍMavenÁ½¸ö¹¤¾ß£¬Neo4j
SpatialÏîÄ¿ÒÔ¼°¿Õ¼äÊý¾Ý(ʸÁ¿)µÄ´æ´¢¡£
±¾ÎÄÀ´×Ôcsdn£¬ÓÉ»ðÁú¹ûÈí¼þAnna±à¼¡¢ÍƼö¡£
|
|
Neo4J¼ò½éÓë°²×°
1.¼ò½é
¡°Neo4jÊÇÒ»¸ö¸ßÐÔÄܵģ¬·Ç¹ØÏµµÄ£¬¾ßÓÐÍêÈ«ÊÂÎñÌØÐÔµÄ,³°ôµÄͼÊý¾Ý¿â¡£¡±
neo4jÔÚ´¦Àí¸´ÔÓµÄÍøÂçÊý¾Ýʱºò£¬¾ßÓкܺõÄÐÔÄܱíÏÖ[1]£¬ÊÊÓÃÓÚÉç½»ÍøÂ磬¶¯Ì¬ÍøÂçµÈ³¡¾°¡£Ëü»ùÓÚjavaÓïÑÔʵÏÖ£¬ÓÐÁ½¸ö·Ö·¢°æ±¾£¬ÉçÇø°æ(community
version)ÒÔGPLv3µÄÐí¿ÉÔÚGithubÉÏ¿ªÔ´;ÆóÒµ°æ£¬Í¬Ê±×ñÑAGPLv3ºÍÉÌÒµÐí¿É£¬ËüÔÚÉçÇø°æ»ù´¡ÉÏÔö¼ÓÁ˰üÀ¨¸ß¿ÉÓÃÐÔ(High
Availability)£¬È«ÌìºîÖ§³ÖµÈÌØÐÔ¡£Neo4jµÄ¿ª·¢·Ç³£»îÔ¾£¬Î§ÈÆËüÓзdz£¶àµÄÏîÄ¿£¬°üÀ¨
REST API °ó¶¨£¨¸÷ÖÖÓïÑÔʵÏÖÁÐ±í£©£¬¿Õ¼äÊý¾Ý¿âÖ§³Ö£¨Ô´ÂëµØÖ·£©µÈ¡£
ÓÉÓÚneo4j°æ±¾Éý¼¶Æµ·±£¬ÎªÁ˼°Ê±»ñȡеÄÈí¼þÌØÐÔ£¬ÎÒÃÇʹÓÃGitÀ´¹ÜÀí£¬¸üдúÂë¡£GitÊÇÒ»¸ö»ùÓÚCÓïÑÔʵÏֵķֲ¼Ê½°æ±¾¿ØÖÆÏµÍ³ÓëÔ´Âë¹ÜÀíϵͳ£¬Óësvn²»Í¬µÄÊÇ£¬Ëü²¢Ã»ÓÐÖÐÐÄ·þÎñÆ÷Õâ¸ö¸ÅÄ¶øÊÇÿһ·ÝµÄ±¾µØ°æ±¾¶¼»á°üº¬Ô´ÂëµÄÍêÕûÀúÊ·¼Ç¼[2,3]¡£GitµÄÎļþÖ÷Òª´¦ÓÚÈýÖÖ״̬:staged,modified,committed¡£ËüµÄ²Ù×÷Ö÷Òª°üÀ¨£ºpull,fetch,push,commitµÈ¡£ÕâÑùµÄ»úÖÆµ¼ÖÂGit״̬ºÍ²Ù×÷ÈçͼһËùʾ£º

ͼ1 Git Êý¾ÝÁ÷¼òµ¥½á¹¹Í¼
¸ü¶àµÄ¹ØÓÚGitµÄ½Ì³ÌÇë²éÔIJο¼ÎÄÏ×[3,4]¡£
MavenÊÇÒ»¸öÓÉApacheÈí¼þ»ù½ð»á¿ªÔ´javaÏîÄ¿¹¹½¨£¬ÒÀÀµ¹ÜÀí£¬ÏîÄ¿ÐÅÏ¢¹ÜÀíµÄ¹¤¾ß[6]¡£»ùÓÚÏîÄ¿¶ÔÏóÄ£ÐÍ(POM)µÄ¸ÅÄî,Maven¸ù¾ÝÖÐÐÄÐÅÏ¢¿ÉÒÔ¹ÜÀíÏîÄ¿µÄ¹¹½¨£¬»ã±¨ºÍÎĵµ¹¤×÷¡£ËüÄܹ»×Ô¶¯»¯¹¹½¨¹ý³Ì£¬´ÓÇåÀí£¬±àÒ룬²âÊÔµ½Éú³É±¨¸æ£¬ÔÙµ½´ò°üºÍ²¿Êð¡£Maven³éÏóÁËÏîÄ¿ÍêÕûµÄ¹¹½¨ÉúÃüÖÜÆÚÄ£ÐÍ£¬Í¬Ê±±ê×¼»¯Á˹¹½¨¹ý³Ì£¬´Ù½øÏîÄ¿ÍŶӱê×¼»¯£¬»¹ÌṩÁËÒ»ÖµIJÙ×÷½Ó¿Ú[7]¡£MavenÏîÄ¿ºËÐÄÊÇPOM.xml£¬Ëü¶¨ÒåÁËÏîÄ¿µÄ»ù±¾ÐÅÏ¢£¬ÓÃÓÚÃèÊöÏîÄ¿ÈçºÎ¹¹½¨£¬ÉêÃ÷ÏîÄ¿ÒÀÀµµÈ¡£ÑùÀýPOM´úÂëÈçÏÂËùʾ£º

Õâ¸öÏîÄ¿µÄPOM×îÖØÒªµÄÊǵÚÒ»¶ÎgroupId,artifactId ,versionÈý¸öÔªËØ£¬ËüÃǶ¨ÒåÁËÒ»¸öÏîÄ¿µÄ»ù±¾×ø±ê¡£groupId¶¨ÒåÏîÄ¿µÄ¹éÊô×éÖ¯£¬artifactId¶¨ÒåÁ˵±Ç°ÏîÄ¿ÔÚ¹éÊôÖеÄΨһID
,vesrion¾ÍÊÇÏîÄ¿µÄ°æ±¾ºÅ¡£MavenÖ÷ÒªµÄÃüÁî°üÀ¨mvn clean complie test
package install µÈ¡£¸ü¶àMavenµÄÄÚÈÝÇë²éÔIJο¼ÎÄÏ×[7]¡£
2.°²×°
2.1 Git °²×°
GitµÄ°²×°·Ç³£¼òµ¥£¬´ó¶àÊýµÄLinux·¢Ðа汾µÄÔ´Öж¼´ò°üºÃ¡£ÒÔUbuntu
ΪÀý(½ö²âÊÔOneiric£¬Precise)£¬Ö»ÐèÒªÊäÈëÈçÏÂÃüÁî¼´¿É°²×°¡£
WindowºÍMacOS°æ±¾¿ÉÒÔÔÚgithubÉÏÏÂÔØ£¬²¢°´ÕÕÉÏÃæÖ¸Äϰ²×°¡£
2.2 Maven °²×°
ͬÑùµÄUbuntu£¨ÎÒ×ϵͳ£©Ï£¬°²×°Maven3·Ç³£¼òµ¥£¬ÊäÈëÈçÏÂÃüÁî:
2.3 Neo4j °²×°
°²×°ºÃÒÔÉÏÁ½Õߺó£¬ÎÒÃÇÖ±½Ó´ÓgithubµÄÔ´Â룬²¢ÓÃmavenÀ´°²×°neo4j£¬ÃüÁîÈçÏ£º
mkdir neo4j
cd ./neo4j
git clone https://github.com/neo4j/community.git
mvn clean install |
Èç´Ë£¬neo4j¼´°²×°³É¹¦¡£Èç¹ûÐèÒªbuild²»Í¬µÄ°æ±¾¿ÉÒÔ×ñÕղο¼ÎÄÏ×5ReadmeµÄָʾÀ´ÊµÏÖ¡£
Neo4J¿Õ¼äÊý¾Ý´æ´¢
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£¬µ«Ëü¶ÔÊʺÏͼģÐ͵ÄÊý¾Ý£¨ÈçÍøÂçÊý¾Ý£©²Ù×÷ЧÂʷdz£¸ß[14]¡£×ÛÉÏËùÊö£¬Neo4jÔÚ·ûºÏͼÊý¾ÝÄ£Ð͵ķÖÎöÖÐÈçÁÚ½üËÑË÷£¬Â·¾¶·ÖÎöµÈÕâÐ©ÌØ¶¨ÀàÐ͵ÄÓ¦ÓÃÓзdz£´óµÄÓÅÊÆ¡£
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
»áÈçͼ1Ëùʾ£º

ͼ1 °²×°EGit
°²×°³É¹¦µÄ»°£¬ÐèÒªÖØÆôEclipse¡£File ->New -> Other£¬»á¿´µ½GitµÄ×ÖÑù¡£
2.2 M2eclipse°²×°
M2eclipseÊÇMavenµÄEclipse²å¼þ£¬ÏîÄ¿µÄÄ¿±êÊÇÌṩΪEclipse
ÌṩһÁ÷µÄMavenÖ§³Ö£¬Ê¹ËüÄܹ»¸ü·½±ãµØ±à¼POMÎļþ£¬¹¹½¨ÏîÄ¿µÈ[16]¡£Í¬Ñù¿ÉÒÔͨ¹ýUpdate
Site °²×°£º¡£Èçͼ2Ëùʾ£º

ͼ2 °²×°M2Eclipse
°²×°³É¹¦µÄ»°£¬ÐèÒªÖØÆôEclipse¡£File ->New
-> Other£¬»á¿´µ½MavenµÄ×ÖÑù¡£
2.3Neo4j 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¡£
ÔÚeclipse²Ù×÷ÊÇ Run as ->5. Maven Build
->ÊäÈë¹¹½¨Ä¿±ê¡£ Èçͼ7Ëùʾ£º
ͼ7 ¹¹½¨Neo4j Spatial ÏîÄ¿
M2eclipse»á×Ô¶¯¹¹½¨¹¤³Ì¡£Èç¹û°²×°Ê§°ÜµÄ»°£¬¿ÉÒÔʹÓÃÈçÏÂÃüÁîÌø¹ýµ¥Ôª²âÊÔ
mvn clean install
-DskipTests |
×îºóeclipseµÄconsole»á±¨³öbuild success¡£
3.Neo4j Spatial ¿Õ¼äÊý¾Ý¶ÁÈ¡
3.1µØÀíͼ²ãÓë±àÂë
Spatial ¿âÖÐÊ×ÏÈÐèÒª¶¨Òåͼ²ãÖм¸ºÎÒªËØ£¬¿É¹©²éѯµÄË÷Òý£¬Í¬Ê±Í¼²ãÊÇ·ñ¿É±à¼ £¬Æä´ÎÊÇÈ·¶¨¼¸ºÎ±àÂë½Ó¿Ú¡£SpatialÀà¿âÌṩµÄĬÈÏͼ²ãÊDZê׼ͼ²ã£¬Ê¹ÓÃWKBGeometryEncoder£¬½«ËùÓеÄÒªËØÒÔ×Ö½ÚÊý×éµÄÐÎʽÀ´´æ´¢¡£µØÀíÊý¾ÝÖÐʵÌåµÄÊôÐԻᵱ×÷ͼÊý¾ÝÄ£ÐÍÖж¥µãµÄÊôÐÔÀ´´æ´¢¡£OSMLayer
ÊÇÖ§³ÖOpen Street Map¸ñʽµÄÌØÊâͼ²ã£¬neo4jʹÓõ¥¸öÍêȫͼ[17]À´´æ´¢¸Ãͼ²ã¡£Í¬Ê±
OMSLayer¼Ì³Ð¶¯Ì¬Í¼²ã£¬ÔÊÐí°üº¬ÈÎÒâ¸ö×Óͼ²ã¡£
3.2µ¼Èëshapefile
µ¼Èëshapefile´ó¸Å¹ý³ÌÊÇ1.Éú´æNeo4jÊý¾Ý¿â£¨µ÷ÓÃÒÑÓУ©
2.ʵÀý»¯£¬²¢µ÷ÓÃShapefileImporter 3.¹Ø±ÕÊý¾Ý¿â ʵÀý´úÂëÈçÏÂËùʾ£º

3.3µ¼ÈëOSM
µ¼ÈëOSMµÄ¹ý³ÌºÍµ¼Èëshapefile²îÒì²»´ó£¬¾É°æNeo4j Spatial ÌṩÁËÅúÁ¿¶ÁÈëµÄ½Ó¿ÚBatchInserter£¬¿ÉÒÔ¼Ó¿ì´óÎļþµÄµ¼Èë¡£¾ßÌåJavaDocÇë²ÎÔÄ´ò°üºóµÄÎĵµ¡£

|