QGIS绘制多边形文件及Python读取
实际项目应用中,我们需要筛选特定区域内的空间要素,例如浮动车轨迹点、POI信息等。而道路网络数据的不全面导致有时候我们需要手动操作。本文介绍如何基于QGIS手动绘制多边形(即Polygon
),并在Python中实现空间要素的筛选。
1. QGIS绘制多边形
S0 打开后,点击保存,首先新建一个Project保存到本地,以便后续重复使用。
S1 双击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 后查看