Ich versuche einfach, eine .shp-Datei in ein geoJSON-Format zu konvertieren:
ogr2ogr -f geoJSON output.json input.shp
Nach dem Ausführen des Befehls scheint nichts mehr zu stimmen. Hier ist ein Auszug aus der 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 ],
...
Aber wenn ich versuche, die JSON-Datei in d3 (http://d3js.org/) zu verwenden, um SVG-Polygone zu zeichnen, ist die Ausgabe einfach falsch. Da die shp-Dateien in QGIS korrekt angezeigt werden, muss meines Erachtens etwas mit der Art und Weise, wie ich sie verwende, nicht stimmen ogr2ogr
. Die SVG, die ich bekomme, ist nicht ganz falsch, aber es scheint ein Detail zu geben, das ich nicht finden kann. Es scheint, als wäre es auf den Kopf gestellt und irgendwie in zwei getrennte Teile verzerrt worden.
Hier ist das JavaScript, mit dem ich das SVG generiert habe:
//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);
Hat jemand eine Idee was hier schief gelaufen ist? Ich habe auch versucht, die shp-Datei mit Qgis und myGeodata (http://converter.mygeodata.eu/vector) zu konvertieren. Aber keiner von ihnen arbeitet so, wie sie sollten.
Ich bin sehr neu in diesem ganzen Kartografie-Zeug. Daher würde ich mich sehr über einen Rat freuen.
Vielen Dank!
Haben Sie versucht, den richtigen EPSG-Code für Ihre Shapefile- und GeoJSON-Ausgabe anzugeben? Z.B:
ogr2ogr -f GeoJSON -s_srs EPSG:.... -t_srs EPSG:.... output.json input.shp
quelle
Sie haben Recht, für eine Deutschlandkarte müssen Sie die Standardprojektion ändern, da sie für USA-Daten passt. Es ist irgendwo in Kansas zentriert und für eine Karte der Größe 960x etwas.
Die richtigen Parameter hängen natürlich auch von Ihren Kartenabmessungen ab.
Wenn Sie die Projektion d3.geo.albers verwenden möchten (am besten für Coropleth-Karten ), sind hier meine Parameter:
quelle