我从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时,它看起来很好并且拥有所有元素。
答案 0 :(得分:4)
实际上在大多数情况下,您可以按原样使用SVG图像,无需将其转换为topojson或GeoJSON,但有一些问题需要考虑:
原始SVG文件大小是否适合您的应用程序?如果是,那么您可以优化SVG文件(例如,使用:http://petercollingridge.appspot.com/svg-editor)。如果这还不够,那么您可以从其他来源获取shapefile(例如:http://www.naturalearthdata.com/downloads/)并将其转换为GeoJSON(使用ogr2ogr,通过他们在http://ogre.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)。
您是否需要在地图中使用位置数据? (例如,您可能需要标记某个城市在您的地图中的位置,但城市未在原始SVG上绘制)然后更容易获得shapefile并将其转换为GeoJSON(使用ogr2ogr),因为您很可能没有关于下载的SVG文件的地理位置信息。
如果您正在创建一个等值区并且没有地理定位要求,那么您只需将SVG directy添加到您的页面并使用D3将数据映射到您的图像!一旦在页面中安装了SVG,您甚至可以手动编辑所有路径数据,以包含使您的D3工作更轻松的类和ID。