在svg中绘制地理数据
svgis的Python项目详细描述
空间地理信息系统
从vector geodata文件(shp、geojson等)创建svg图形。
SVGIS非常适合:创建小倍数,在一个合理的投影中组合大量数据集,以及根据源数据中的类绘制样式它非常适合在绘图程序中创建用于编辑的基本地图,其基于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
文档:http://pythonhosted.org/svgis
安装
需要fiona,而这又需要gdal。
安装步骤:
在os x上:brew install gdal
(需要Homebrew)
在Linux上:sudo apt-get install libgdal1-dev
在Windows上:请参见OSGeo4W
然后:
pip install svgis
svgis的一个可选功能是将多边形剪裁到边界框。如果只需要绘制非常复杂的特征的一部分,这将加快速度
要支持剪切输出形状,需要GEOS库:
- 苹果操作系统x:
brew install geos
- Linux系统:
sudo apt-get install geos
- windows:geos是osgeo4w的一部分,所以你有它!
然后,使用稍有不同的命令安装svgis:
pip install svgis[clip]
命令
svgis
命令行工具包括几个实用程序最重要的是svgis draw
,它根据输入的地理数据层绘制svg地图。
其他命令:
svgis bounds
:获取给定投影中图层的边界框svgis graticule
:在给定范围内创建一个网格svgis project
:确定(可选)为给定的边界框生成的投影svgis draw
< < < >< } >:更改现有SVG的比例>- {< CD12> }:将CSS样式添加到现有SVG
有关这些命令及其选项的完整信息,请阅读docs。
示例
绘制以反照率投影的相邻美国的轮廓:
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 Earthadmin-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
使用Albers projection绘制欧洲的国家边界和湖泊,简化输出多边形,并用紫色绘制德国。
svgis draw ne_110m_admin_0_countries.shp ne_110m_lakes.shp \ --crs EPSG:102013 \ --scale 1000\ --simplify 90\ --style '.ne_110m_admin_0_countries { fill: tan } .Germany { fill: purple }'\ --style '.ne_110m_lakes { fill: #09d; stroke: none; }'\ --class-fields name \ --bounds -10 304065\ -o out.svg