[Python库] ospybook-地理数据可视化(Python显示shp文件)

ospybook库来自《Python地理数据处理》书籍,用于地理数据的简单显示

【书】《Python地理数据处理》[美] Chris Garrard 著 2017年7月
【文件夹介绍】本文件夹为该书的代码与数据
【书内资源下载网址】https://www.manning.com/books/geoprocessing-with-python

ospybook介绍——Python可视化地理数据

【ospybook】为该书作者提供的一个很好用的Python库

  1. 优势:可以帮助你不用打开其他软件程序,就可以可视化数据
  2. 缺点:交互性差

安装

  1. 安装包:ospybook-1.0文件夹下(下载地址:http://manning.com/garrard/?a_aid=geopy&a_bid=c3bae5be)
  2. 安装,定位setup.py目录打开命令行运行python setup.py build
  3. 再运行python setup.py install安装

print_attributes查看属性

【使用】

import ospybook as pb
fn = r'D:\polygon.shp'
pb.print_attributes(fn, 3, ['NAME', 'POP_MAX'] )

【函数函数】

print_attributes(lyr_or_fn, [n], [fields], [geom], [reset] )
  1. lyr_or_fn 可以是一个图层,也可以是一个数据源路径。如果是一个数据源,使用的是第一个图层
  2. n 是一个可选值,用于设置输出记录数目,默认输出所有数值
  3. fields 是一个可选值,用于设置输出结果中包含的属性字段列表,默认包括所有字段
  4. geom是一个可选的布尔值,用于设置是否输出几何要素类型,默认为True
  5. reset是一个可选的布尔值,用于设置在输出数值之前,是否重置到第一条记录,默认为true

VectorPlotter绘制空间数据

依赖于:matplotlib模块

plot函数

plot(self, geom_or_lyr, [symbol], [name], [kwargs])
  1. geom_or_lyr 可是是一个要素对象、图层或者指向一个数据源的路径。如果是一个数据源,数据源中的第一个图层会被绘制显示
  2. symbol是一个可选值,用于设置几何要素的符号样式
    • fill=False:空心多边形
    • “bo”:蓝色的圆圈
    • “rs”:正方形
    • “b-” 蓝线?
    • “r–” 虚线(每个单元是横的)
    • “g:” 虚线(每个单元是竖的)
    • edgecolor=‘blue’
    • ec=“read”
    • linestyle=“dashed” 或者 ls=“dotted”
    • linewidth=3
  3. name是一个可选值,用于为数据设定名称,以便后期可以访问它
  4. kwargs是一个可选值,通过关键字进行指定。kwargs经常被用作一个不确定数量的关键字参数(an indeterminate number of keyword arguments)的缩写

使用例子

【在Python交互环境下】

>>> import os
>>> os.chdir(2001) #更改工作目录
>>> from ospybook.vectorplotter import VectorPlotter
>>> vp = VectorPlotter(True) #创建一个交互式的绘图面板
>>> vp.plot('countries.shp', fill=False) #fill参数使文件用一个空心多边形表示
>>> vp.plot('places.shp', 'bo') #fill=bo:为places.shp文件所设的bo符号表示蓝色的圆圈

【.py文件下】

from ospybook.vectorplotter import VectorPlotter
vp = VectorPlotter(False) #非交互模式创建
vp.plot('countries.shp', fill=False)
vp.draw() #调用draw函数绘制

其他常用函数

vp.clear() #清除
vp.zoom(-5) #缩小范围
Python中进行地理空间数据可视化实验通常涉及使用一些强大的库,如matplotlib、geopandas、folium和cartopy等。以下是一个简单的实验小结: 1. **导入所需库**:首先,我们需要导入`geopandas`(GeoPandas,基于Pandas的数据结构,专为地理空间数据设计)、`matplotlib`(基础绘图库)以及地图相关的库,如`folium`(用于交互式地图)或`cartopy`(提供高级的地图投影功能)。 ```python import geopandas as gpd import matplotlib.pyplot as plt from folium import Map, Marker ``` 2. **读取数据**:通常会使用`gpd.read_file()`函数从文件(如.shp或.geojson)或在线API获取地理数据,如行政区划、点状设施等。 3. **数据清洗和预处理**:对数据进行必要的清洗,如缺失值处理、数据类型转换等,确保数据适合可视化。 4. **基础地图绘制**:可以利用`folium.Map()`创建静态地图,并通过添加`Marker`对象标记特定位置。 ```python m = Map(location=[data['latitude'].mean(), data['longitude'].mean()], zoom_start=10) for index, row in data.iterrows(): Marker([row['latitude'], row['longitude']]).add_to(m) m.save('map.html') ``` 5. **数据散点图或热力图**:使用`geoplot`库或`seaborn`结合`scatterplot`绘制地理位置上的散点图,展示变量之间的关系;使用`geopandas.plotting`绘制点密度图(Heatmap)显示某个属性的分布。 6. **高级地图定制**:如果需要更复杂的地图,例如使用不同的投影,可以借助`cartopy`调整地图范围和坐标系统。 7. **结果分析和解释**:最后,根据可视化结果解读数据趋势,总结发现的问题或见解。 **相关问题--** 1. 你能举一个在实际项目中如何应用地理空间数据可视化的例子吗? 2. 怎样在Python中处理大规模地理数据以便于可视化? 3. 如何在动态地图上添加交互式信息窗口?
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

geodoer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值