QGIS绘制多边形SHP文件及Python读取

发布于:2023-01-21 ⋅ 阅读:(936) ⋅ 点赞:(0)

QGIS绘制多边形文件及Python读取

实际项目应用中,我们需要筛选特定区域内的空间要素,例如浮动车轨迹点、POI信息等。而道路网络数据的不全面导致有时候我们需要手动操作。本文介绍如何基于QGIS手动绘制多边形(即Polygon),并在Python中实现空间要素的筛选。


1. QGIS绘制多边形

S0 打开后,点击保存,首先新建一个Project保存到本地,以便后续重复使用。
S1 双击OSM按钮,弹出世界地图,找到自己想要划定的地区
OSM
S2 左上角点击新建图层按钮
在这里插入图片描述
新建Polygon文件,单独保存到一个路径下
在这里插入图片描述
此处我们命名为demo_polygon,保存后图层会显示在在左侧Layer窗口中。

S3 点击如下按钮,开始绘制

在这里插入图片描述
在这里插入图片描述
单击描边,右键结束。绘制完了之后,给多边形赋予一个ID编号
在这里插入图片描述
画好的图长这样
在这里插入图片描述
左上角点击保存,shp文件就保存好了。本地生成有4个文件,不要删除别的
在这里插入图片描述

2. Python读取

2.1 基于GeoPandas读取

接下来Python读取shp文件

import geopandas as gpd
import transbigdata as tbd

area_eg1 = gpd.read_file(r'xxx/demo_polygon.shp')
area_eg1.plot(); # 绘制大概

即可看到你绘制的多边形文件:
在这里插入图片描述
也可以打出来看文件格式
在这里插入图片描述
注:这里第二行是本人新建了一个空的ID造成的。

2.2 简单应用示例

接下来就可以结合各种空间信息处理的package进行相关操作了。

例如:筛选区域内的轨迹点,可以使用gpd.tools.sjoin命令:

# 筛选出对应轨迹点
pointInPolys = gpd.tools.sjoin(trajectry_gdf, area_eg1, predicate="within", how='left')
pointInPolys.head()

其中,trajectry_gdf为轨迹数据GeoDataFrame格式数据。操作后输出数据格式如下:

在这里插入图片描述
去除其中匹配后的最后为空的行,即可得到多边形范围内的点,效果如下所示:

在这里插入图片描述

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到