Я просто пытаюсь преобразовать файл .shp в формат geoJSON, используя:
ogr2ogr -f geoJSON output.json input.shp
После выполнения команды кажется, что все в порядке. Вот выдержка из файла 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 ],
...
Но когда я пытаюсь использовать файл de JSON в d3 (http://d3js.org/) для рисования SVG-полигонов, результат получается неверным. Так как файлы shp правильно отображаются в QGIS, я думаю, что-то не так с тем, как я использую ogr2ogr
. SVG, который я получаю, не является полностью неправильным, но есть деталь, которую я не могу найти. Кажется, что оно перевернуто с ног на голову и каким-то образом разделено на две части.
Вот javaScript, который я использовал для генерации 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);
У кого-нибудь есть идеи, что здесь пошло не так? Я также попытался преобразовать shp-файл, используя Qgis и myGeodata (http://converter.mygeodata.eu/vector). Но ни один из них не работает так, как должен.
Я очень новичок во всей этой картографии. Поэтому я был бы очень рад получить совет.
Огромное спасибо!
Вы пытались указать правильный код EPSG для вашего шейп-файла и вывода GeoJSON? Например:
ogr2ogr -f GeoJSON -s_srs EPSG:.... -t_srs EPSG:.... output.json input.shp
источник
Вы правы, для карты Германии вам нужно изменить проекцию по умолчанию, так как она подходит для данных США. Это сосредоточено где-то в Канзасе и для карты размера 960xsomething.
Правильные параметры, конечно, также зависят от размеров вашей карты.
Если вы хотите использовать проекцию d3.geo.albers (лучше всего подходит для сопутствующих карт ), вот мои параметры:
источник