Simplemente estoy tratando de convertir un archivo .shp a un formato geoJSON usando:
ogr2ogr -f geoJSON output.json input.shp
Después de ejecutar el comando, nada parece estar mal. Aquí hay un extracto de la salida.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 ],
...
Pero cuando intento usar el archivo de JSON en d3 (http://d3js.org/) para dibujar polígonos SVG, el resultado es simplemente incorrecto. Dado que los archivos shp se muestran correctamente en QGIS, creo que tiene que haber algo mal con la forma en que lo uso ogr2ogr
. El SVG que obtengo no está completamente equivocado, pero parece que hay un detalle que no puedo encontrar. Parece que se ha invertido y de alguna manera distorsionado en dos partes separadas.
Aquí está el javaScript que utilicé para generar el 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);
¿Alguien tiene una idea de lo que salió mal aquí? También intenté convertir el archivo shp usando Qgis y myGeodata (http://converter.mygeodata.eu/vector). Pero ninguno de los dos trabaja como debería.
Soy muy nuevo en todo esto de la cartografía. Así que estaría muy feliz de recibir algunos consejos.
¡Muchas gracias!
¿Has intentado especificar el código EPSG correcto para tu archivo shape y salida GeoJSON? P.ej:
ogr2ogr -f GeoJSON -s_srs EPSG:.... -t_srs EPSG:.... output.json input.shp
fuente
Tiene razón, para un mapa de Alemania necesita cambiar la proyección predeterminada ya que se ajusta a los datos de EE. UU. Está centrado en algún lugar de Kansas y para un mapa de tamaño 960x algo.
Los parámetros correctos, por supuesto, también dependen de las dimensiones de su mapa.
Si desea utilizar la proyección d3.geo.albers (la mejor para mapas coropleth ) aquí están mis parámetros:
fuente