Python实战之利用Geopandas算出每个省面积

作者:查理不是猹 时间:2022-05-11 07:46:39 

Python实战之利用Geopandas算出每个省面积

GeoPandas是一个基于pandas,针对地理数据做了特别支持的第三方模块。

它继承pandas.Series和pandas.Dataframe,实现了GeoSeries和GeoDataFrame类,使得其操纵和分析平面几何对象非常方便。

1.准备

开始之前,你要确保Python和pip已经成功安装在电脑上。

请选择以下任一种方式输入命令安装依赖:

1.Windows 环境 打开 Cmd (开始-运行-CMD)。

2.MacOS 环境 打开 Terminal (command+空格输入Terminal)。

3.如果你用的是 VSCode编辑器 或 Pycharm,可以直接使用界面下方的Terminal.

由于geopandas涉及到许多第三方依赖,pip安装起来非常麻烦。因此在本教程中,我只推荐使用conda安装geopandas:


conda install geopandas

一行语句即可完成安装。

2.基本使用

设定坐标绘制简单的图形:


import geopandas
from shapely.geometry import Polygon
p1 = Polygon([(0, 0), (1, 0), (1, 1)])
p2 = Polygon([(0, 0), (1, 0), (1, 1), (0, 1)])
p3 = Polygon([(2, 0), (3, 0), (3, 1), (2, 1)])
g = geopandas.GeoSeries([p1, p2, p3])

# g:
# result:
# 0 POLYGON ((0 0, 1 0, 1 1, 0 0))
# 1 POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0))
# 2 POLYGON ((2 0, 3 0, 3 1, 2 1, 2 0))
# dtype: geometry

这些变量所形成的图形如下:

Python实战之利用Geopandas算出每个省面积

这里有一个重要且强大的用法,通过area属性,geopandas能直接返回这些图形的面积:


>>> print(g.area)
0    0.5
1    1.0
2    1.0
dtype: float64

不仅如此,通过plot属性函数,你还可以直接生成matplotlib图。


>>> g.plot()

通过matplot的pyplot,可以将图片保存下来:


import matplotlib.pyplot as plt
g.plot()
plt.savefig("test.png")

学会上面的基本用法, 我们就可以进行简单的地图绘制及面积的计算了。

3.绘制并算出每个省的面积

此外,它最大的亮点是可以通过 Fiona(底层实现,用户不需要管),读取比如ESRI shapefile(一种用于存储地理要素的几何位置和属性信息的非拓扑简单格式)。


import geopandas
import matplotlib.pyplot as plt
from shapely.geometry import Polygon

maps = geopandas.read_file('1.shx')
# 读取的数据格式类似于
# geometry
# 0 POLYGON ((1329152.341 5619034.278, 1323327.591...
# 1 POLYGON ((-2189253.375 4611401.367, -2202922.3...
# 2 POLYGON ((761692.092 4443124.843, 760999.873 4...
# 3 POLYGON ((-34477.046 4516813.963, -41105.128 4...
# ... ...
maps.plot()
plt.savefig("test.png")

如代码所示,通过read_file你可以读取shx、gpkg、geojson等数据。读取出来的图形如下:

Python实战之利用Geopandas算出每个省面积

同样,这个shapefile是省级行政区的,每一个省级行政区都被划分为一个区块,因此可以一行语句算出每个省级行政区所占面积:


print(maps.area)
# 0 4.156054e+11
# 1 1.528346e+12
# 2 1.487538e+11
# 3 4.781135e+10
# 4 1.189317e+12
# 5 1.468277e+11
# 6 1.597052e+11
# 7 9.770609e+10
# 8 1.385692e+11
# 9 1.846538e+11
# 10 1.015979e+11
# ... ...

来源:https://juejin.cn/post/7044771387117928455

标签:Python,Geopandas,面积
0
投稿

猜你喜欢

  • ASP程序中输出Excel文件实例一则

    2008-11-07 15:29:00
  • asp如何制作一个弹出式的调查窗口?

    2010-06-29 21:24:00
  • Python边缘检测之prewitt,sobel和laplace算子详解

    2023-09-30 06:01:56
  • Python requests模块用法详解

    2022-02-09 23:00:13
  • 从绘画语言的发展,看视觉设计风格

    2008-08-03 17:11:00
  • python用socket实现协议TCP长连接框架

    2022-05-08 00:22:47
  • Kali Linux安装ipython2 和 ipython3的方法

    2022-07-16 04:57:52
  • yolov5特征图可视化的使用步骤

    2022-07-22 01:25:40
  • Python多线程实现支付模拟请求过程解析

    2023-04-09 17:59:35
  • pytorch 实现计算 kl散度 F.kl_div()

    2023-04-03 20:16:18
  • 详解四种Python中基本形态学滤波的实现

    2023-05-09 15:10:09
  • python爬虫增加访问量的方法

    2021-08-23 06:32:23
  • python同义词替换的实现(jieba分词)

    2022-02-10 20:58:00
  • Scrapy框架使用的基本知识

    2022-02-23 22:27:27
  • ASP面向对象编程探讨及比较

    2008-04-12 07:16:00
  • 仿DW的图形菜单 DIV+CSS

    2007-08-14 10:07:00
  • Python+Requests+PyTest+Excel+Allure 接口自动化测试实战

    2023-10-24 20:17:48
  • python爬虫调度器用法及实例代码

    2023-02-15 08:54:21
  • 微信小程序(微信应用号)开发工具0.9版安装详细教程

    2023-06-12 23:33:37
  • Python socket.error: [Errno 98] Address already in use的原因和解决方法

    2021-07-12 01:27:02
  • asp之家 网络编程 m.aspxhome.com