GeoJSON文字列をSVG文字列に変換するすぐに使用できるJavascriptプラグインはありますか?TempoなどのレンダリングエンジンやプロジェクトJsonTは便利ですが、それらを機能させるにはテンプレートが必要です。
3 に答える
d3.jsライブラリを使用できます。次のコードスニペットがその役割を果たします。
htmlファイルにd3.jsを含めます
<script src="files/d3.v3.min.js"></script>
htmlファイルにidmapのdivがあると仮定します。
<div id="map"></div>
次のjsコードは、divマップにマップを追加します。geoJsonObjはあなたのgeojsonです。
var svg = d3.select("#map").append("svg")
.attr("width", width)
.attr("height", height);
svg.append("g")
.selectAll("path")
.data(geoJsonObj.features)
.enter().append("path")
.attr("d", path);
実用的な例を見るには、ここにアクセスしてください。この例では、.data()属性への入力としてtopojsonを使用していることに注意してください。
GeoJSON を SVG geojson2svgに変換し、npm モジュールとしても利用できる基本的なツールがあります。geojson2svg からの出力は SVG 文字列であるため、このツールは node.js だけでなくブラウザーでも使用できます。
次に例を示します。
npm install geojson2svg --save
var geojson2svg = require('geojson2svg')
var converter = geojson2svg(
{attributes: ['properties.foo', 'properties.bar', 'properties.baz']})
var svgStr = converter.convert({
type: 'FeatureCollection',
features: [{
type: 'Feature',
geometry: {type: 'LineString', coordinates: [[0,0], [1000,1000]]},
properties: {foo: 'fooVal-1', bar: 'barVal-1', baz: 'bazVal-1'}
}, {
type: 'Feature',
geometry: {type: 'LineString', coordinates: [[10,10], [100,100]]},
properties: {foo: 'fooVal-2', bar: 'barVal-2'}
}]
})
console.log(svgStr)
/* output
[
'<path d="M128,128 128.00638801979818,127.99361198020182" foo="fooVal-1" bar="barVal-1" baz="bazVal-1"/>',
'<path d="M128.00006388019798,127.99993611980202 128.00063880197982,127.99936119802018" foo="fooVal-2" bar="barVal-2"/>'
]
*/
SVG 文字列を DOM 要素に変換するのは非常に簡単です。これは、bobince hereによってJavaScript コードで非常にうまく説明されています。便宜上、npm モジュールを作成しました。
免責事項: 私は geojson2svg の作成者です。
GDAL を調べることはできますが、SVG の作成を完全にサポートしているかどうかはわかりませんが、GDAL は通常、すべての地理フォーマットを他の地理フォーマットに変換できます。