3

我从http://www.amcharts.com/svg-maps/?map=finland下载了芬兰的 .svg 地图

我想将其转换为 topojson 以将其与 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 时,它看起来很好并且拥有所有元素。

4

1 回答 1

4

实际上在大多数情况下,您可以按原样使用 SVG 图像,无需将其转换为 topojson 或 GeoJSON,但有一些问题需要考虑:

  1. 原始 SVG 文件对于您的应用程序来说是否太大?如果是,那么您可以优化 SVG 文件(例如,使用:http ://petercollingridge.appspot.com/svg-editor )。如果这还不够,那么您可以从另一个来源(例如: http: //www.naturalearthdata.com/downloads/)获取 shapefile 并将其转换为 GeoJSON(使用 ogr2ogr,或者通过他们在http://ogre的 Web 界面.adc4gis.com/或者您使用 GDAL 在http://trac.osgeo.org/gdal/wiki/DownloadingGdalBinaries下载它)。如果生成的文件仍然太大,您可以使用 mapshaper ( http://www.mapshaper.org/- 它同时采用 shapefile 和 GeoJSON 格式!),如有必要(如果您的文件大小仍然存在问题)将生成的地图从 GeoJSON 转换为 topojson(参见:http://github.com/mbostock/topojson/wiki

  2. 您需要在地图中使用位置数据吗?(例如,您可能需要标记某个城市在地图中的位置,但该城市并未绘制在原始 SVG 上)然后更容易获取 shapefile 并将其转换为 GeoJSON(使用 ogr2ogr),因为您很可能会这样做下载的 SVG 文件中没有地理位置信息。

  3. 如果您正在创建 choropleth 并且没有地理位置要求,那么您只需将 SVG 直接添加到您的页面并使用 D3 将数据映射到您的图像!一旦您的页面中包含 SVG,您甚至可以手动编辑所有路径数据以包含类和 ID,这将使您的 D3 工作更轻松。

于 2016-01-07T21:13:53.983 回答