2016-03-25 10 views
1

いくつかのシェープファイルをNeo4j 2.3.1にインポートできました。 このデータを地図上でどのように表示できますか?Neo4j-Spatialデータベースを地図で視覚化する

私はGeoServerとuDigでWikiの手順を試しましたが、どちらも古くなっており、動作させることができませんでした。

この問題を解決できる最新のチュートリアルやその他のツールはありますか?

答えて

0

mapのジオメトリを視覚化するためにneo4j-spatialをMapbox.jsと使用しました。私のユースケースについては

私は、ユーザーがWKT文字列との結果を含めて、最も近い地区を返す、地図上のクリックした場所に基づいて空間インデックスをクエリのNeo4j空間に米国議会の地区の形状をインデックス化Cypherクエリ。マップにWKTポリゴンをレンダリングするために、マップアノテーションを追加するためのポイントの配列に解析するための単純なjavascript関数を書きました。ここで

は、いくつかの関連するコードスニペットです:

は、マップを作成し、マップのクリックハンドラを定義します。

L.mapbox.accessToken = MB_API_TOKEN; 
var map = L.mapbox.map('map', 'mapbox.streets') 
    .setView([39.8282, -98.5795], 5); 

map.on('click', function(e) { 
    clearMap(map); 
    getClosestDistrict(e); 
}); 

ハンドルのマウスクリック

/** 
    * Find the District for a given latlng. 
    * Find the representative, commitees and subjects for that rep. 
    */ 
function infoDistrictWithinDistance(latlng, distance) { 

    var districtParams = { 
    "layer": "geom", 
    "pointX": latlng.lng, 
    "pointY": latlng.lat, 
    "distanceInKm": distance 
    }; 

var districtURL = baseURI + findGeometriesPath; 
makePOSTRequest(districtURL, districtParams, function (error, data) { 

    if (error) { 
    console.log("Error"); 
    } else { 
    console.log(data); 

    var params = { 
    "state": data[0]["data"]["state"], 
    "district": data[0]["data"]["district"] 
    }; 

    var points = parseWKTPolygon(data[0]["data"]["wkt"]); 

    makeCypherRequest([{"statement": subjectsQuery, "parameters": params}], function (error, data) { 

    if (error) { 
     console.log("Error"); 
    } else { 
     console.log(data); 

     var districtInfo = data["results"][0]["data"][0]["row"][0]; 
     districtInfo["points"] = points; 
     districtInfo["state"] = params["state"]; 
     districtInfo["district"] = params["district"]; 
     console.log(districtInfo); 

     addDistrictToMap(districtInfo, latlng); 
    } 
    }); 
} 
}); 

解析WKTを点列に配列

/** 
* Converts Polygon WKT string to an array of [x,y] points 
*/ 
function parseWKTPolygon(wkt) { 
    var pointArr = []; 
    var points = wkt.slice(10, -3).split(","); 

    $.each(points, function(i,v) { 
    var point = $.trim(v).split(" "); 
    var xy = [Number(point[1]), Number(point[0])]; 
    pointArr.push(xy) 
    }); 

    return pointArr; 
} 

コードはthis repoです。シンプルマップのデモhere(開始するには、米国のどこかをクリックするだけです)が表示されます。この例の最新のブログ記事hereもあります。

+0

ありがとうございました!それが私が探していたものです。私はあなたが私と同じようにNeo4jにデータを追加するのを見ます。レイヤースクリプトへのインポート/ノードの追加は本当に遅いのですか、それとも私だけですか? –

関連する問題