跳转到主要内容

从矢量地理数据文件(SHP、geoJSON等)创建SVG图形。

项目描述

SVGIS

从矢量地理数据文件(SHP、geojson等)创建SVG图形。

SVGIS非常适合:创建小 multiples,在合理的投影中组合大量数据集,并基于源数据中的类别进行样式化绘制。它非常适合创建用于在绘图程序中编辑的基础地图,其基于CSS的样式提供了极大的灵活性。

svgis draw input.shp -o out.svg
svgis draw south_dakota.shp north_dakota.geojson -o dakota.svg
svgis draw england.shp scotland.shp wales.shp --style gb.css -o great_britain.svg

完整的文档,包括更多示例和类和方法的解释: https://svgis.readthedocs.io/en/stable/

安装

需要 fiona,它反过来需要GDAL。

有关安装信息,请参阅 GDAL文档

然后

pip install svgis

svgis的一个可选功能是将多边形裁剪到边界框内。如果您只需要绘制非常复杂特征的一部分,这将加快速度。

pip install 'svgis[clip]'

命令

svgis 命令行工具包含几个实用程序。其中最重要的是 svgis draw,它根据输入的地理数据层绘制SVG地图。

其他命令

  • svgis bounds:获取给定投影中图层的外接矩形
  • svgis graticule:在给定的范围内创建网格
  • svgis project:确定svgis draw将针对给定的边界框(可选)生成什么投影
  • svgis scale:更改现有SVG的缩放比例
  • svgis style:向现有SVG添加CSS样式

阅读文档以获取有关这些命令及其选项的完整信息。

示例

绘制阿伯斯投影的连续美国轮廓

curl -O http://www2.census.gov/geo/tiger/GENZ2014/shp/cb_2014_us_nation_20m.zip
unzip cb_2014_us_nation_20m.zip
svgis draw cb_2014_us_nation_20m.shp --crs EPSG:5070 --scale 1000 --bounds -124 20.5 -64 49 -o us.svg

以下两个示例使用Natural Earth行政0数据集。

用绿色绘制高收入国家,用蓝色绘制低收入国家

/* style.css */
.income_grp_5_Low_income {
    fill: blue;
}
.income_grp_3_Upper_middle_income {
    fill: green
}
.ne_110m_lakes {
    fill: #09d;
    stroke: none;
}
svgis draw --style style.css --class-fields income_grp ne_110m_admin_0_countries.shp ne_110m_lakes.shp -o out.svg

使用LAEA Europe投影在欧洲绘制国家边界和湖泊,简化输出多边形,并将德国染成紫色。

svgis draw ne_110m_admin_0_countries.shp ne_110m_lakes.shp \
    --crs EPSG:3035 \ 
    --scale 1000 \ 
    --simplify 90 \ 
    --style '.ne_110m_admin_0_countries { fill: tan } #Germany { fill: purple }' \
    --style '.ne_110m_lakes { fill: #09d; stroke: none; }' \ 
    --id-field name \ 
    --bounds -10 30 40 65 \ 
    -o out.svg

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面