Конвертировать SVG в Geojson не удается с Ogr2ogr
Я скачал.svg карту Финляндии с http://www.amcharts.com/svg-maps/?map=finland
Я хочу преобразовать его в топойсон, чтобы использовать его с d3.js. Сначала я начинаю с преобразования svg в geojson, но это не удается.
Я старался:
ogr2ogr -f "GeoJSON" finland_kunta.json finlandHigh.svg
Ошибка, которую я получаю:
FAILURE:
Unable to open datasource `finlandHigh.svg' with the following drivers.
-> ESRI Shapefile
-> MapInfo File
-> UK .NTF
-> SDTS
-> TIGER
-> S57
-> DGN
-> VRT
-> REC
-> Memory
-> BNA
-> CSV
-> GML
-> GPX
-> KML
-> GeoJSON
-> GMT
-> GPKG
-> SQLite
-> WAsP
-> PCIDSK
-> OpenFileGDB
-> XPlane
-> AVCBin
-> AVCE00
-> DXF
-> Geoconcept
-> GeoRSS
-> GPSTrackMaker
-> VFK
-> PGDump
-> OSM
-> GPSBabel
-> SUA
-> OpenAir
-> PDS
-> WFS
-> HTF
-> AeronavFAA
-> EDIGEO
-> GFT
-> GME
-> SVG
-> CouchDB
-> Idrisi
-> ARCGEN
-> SEGUKOOA
-> SEGY
-> XLS
-> ODS
-> XLSX
-> ElasticSearch
-> PDF
-> CartoDB
-> SXF
Я только начинаю понимать эти инструменты, поэтому я не уверен, что именно вызывает ошибку. Когда я открываю svg, он выглядит нормально и содержит все элементы.
1 ответ
На самом деле в большинстве случаев вы можете использовать SVG-изображение как есть, нет необходимости конвертировать его в топойсон или GeoJSON, но есть несколько вопросов, которые следует рассмотреть:
Оригинальный размер файла SVG слишком велик для вашего приложения? Если это так, вы можете оптимизировать файл SVG (например, с помощью: http://petercollingridge.appspot.com/svg-editor). Если этого недостаточно, вы можете получить шейп-файл из другого источника (например, http://www.naturalearthdata.com/downloads/) и преобразовать его в GeoJSON (используйте ogr2ogr, либо через их веб-интерфейс по адресу http://ogre.adc4gis.com/ или вы загружаете его с помощью GDAL по адресу http://trac.osgeo.org/gdal/wiki/DownloadingGdalBinaries). Если полученный файл все еще слишком велик, вы можете сжать с помощью mapshaper ( http://www.mapshaper.org/ - он принимает как шейп-файлы, так и форматы GeoJSON!) И при необходимости (если размер файла все еще остается проблемой) преобразовать полученный результат карта из GeoJSON в топойсон (см.: http://github.com/mbostock/topojson/wiki).
Вам нужно использовать данные о местоположении на вашей карте? (например, вам может понадобиться отметить, где на карте находится определенный город, но этот город не отображается на исходном SVG-файле). Тогда проще получить шейп-файл и преобразовать его в GeoJSON (используя ogr2ogr), потому что, скорее всего, вы это делаете. нет информации о геолокации в загруженном файле SVG.
Если вы создаете хороплет и у вас нет требований к геолокации, вы можете просто добавить SVG прямо на свою страницу и использовать D3 для сопоставления данных с вашим изображением! Если у вас есть SVG на вашей странице, вы можете даже вручную редактировать все данные пути, включая классы и идентификаторы, которые облегчат вашу работу в D3.