Конвертировать 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, но есть несколько вопросов, которые следует рассмотреть:

  1. Оригинальный размер файла 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).

  2. Вам нужно использовать данные о местоположении на вашей карте? (например, вам может понадобиться отметить, где на карте находится определенный город, но этот город не отображается на исходном SVG-файле). Тогда проще получить шейп-файл и преобразовать его в GeoJSON (используя ogr2ogr), потому что, скорее всего, вы это делаете. нет информации о геолокации в загруженном файле SVG.

  3. Если вы создаете хороплет и у вас нет требований к геолокации, вы можете просто добавить SVG прямо на свою страницу и использовать D3 для сопоставления данных с вашим изображением! Если у вас есть SVG на вашей странице, вы можете даже вручную редактировать все данные пути, включая классы и идентификаторы, которые облегчат вашу работу в D3.

Другие вопросы по тегам