Tôi chỉ đơn giản là cố gắng chuyển đổi tệp .shp sang định dạng GeoJSON bằng cách sử dụng:
ogr2ogr -f geoJSON output.json input.shp
Sau khi thực hiện lệnh dường như không có gì sai. Đây là một đoạn trích từ output.json
{
"type": "FeatureCollection",
"features": [
{ "type": "Feature",
"properties": { "ID_0": 86, "ISO": "DEU", "NAME_0": "Germany", "ID_1": 1, "NAME_1": "Baden-Württemberg", "NL_NAME_1": null, "VARNAME_1": null, "TYPE_1": "Land", "ENGTYPE_1": "State" },
"geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 8.708400940398242, 47.715581894910606 ], [ 8.713716147005524, 47.701734382960055 ],
...
Nhưng khi tôi cố gắng sử dụng tệp de JSON trong d3 (http://d3js.org/) để vẽ đa giác SVG thì kết quả đầu ra là sai. Vì các tệp shp được hiển thị chính xác trong QGIS, tôi nghĩ rằng phải có điều gì đó không đúng với cách tôi sử dụng ogr2ogr
. SVG tôi nhận được không hoàn toàn sai nhưng dường như có một chi tiết tôi không thể tìm thấy. Có vẻ như nó đã bị đảo lộn và bằng cách nào đó bị biến dạng thành hai phần tách biệt.
Đây là javaScript tôi đã sử dụng để tạo svg:
//dimensions
var w = 2000;
var h = 2000;
var svg = d3.select("#chart").append("svg")
.attr("width", w)
.attr("height", h);
d3.json(
"http://localhost:8888/data/data.json",
function (json) {
var path = d3.geo.path();
svg.append("g")
.attr("class", "black")
.selectAll("path")
.data(json.features)
.enter()
.append("path")
.attr("d", path);
Có ai có một ý tưởng những gì đã sai ở đây? Tôi cũng đã cố gắng chuyển đổi tệp shp bằng Qgis và myGeodata (http://converter.mygeodata.eu/vector). Nhưng không ai trong số họ làm việc theo cách họ nên.
Tôi rất mới với toàn bộ công cụ bản đồ này. Vì vậy, tôi sẽ rất vui khi nhận được một số lời khuyên.
Cảm ơn rất nhiều!