如何在QGIS中从国家全图提取城市?含巴基斯坦卡拉奇提取过滤问询
如何在QGIS中提取城市要素及卡拉奇市地图数据
我来帮你一步步解决这两个QGIS操作问题,都是日常处理矢量数据的常用技巧:
一、从完整国家地图数据中提取城市要素
假设你手里的国家地图是包含多类地理要素的矢量数据(比如Shapefile、GPKG这类常见格式),按以下步骤操作:
第一步:加载数据到QGIS
打开QGIS后,通过Layer > Add Layer > Add Vector Layer导入你的国家地图数据。加载完成后,图层会出现在左侧的图层面板里。第二步:定位城市要素的属性/层级
很多官方或开源地图数据(比如OSM数据)会按行政层级划分要素:- 如果是分层数据,直接找命名为
Cities、Urban Areas或者类似的图层就行,这就是现成的城市要素。 - 如果是单图层包含所有行政级别(比如国家、省、市都在一个图层里),右键图层选择
Open Attribute Table,查看属性字段:- 重点看
admin_level(OSM数据常用,城市级一般是admin_level=8,具体看数据定义)、type(可能标注为city)、name这类字段,判断哪些记录对应城市要素。
- 重点看
- 如果是分层数据,直接找命名为
第三步:提取城市要素
有两种高效方法:- 属性筛选后导出
- 在属性表点击
Select features using expression(那个ε形状的按钮),输入筛选表达式,比如"type" = 'city'或者"admin_level" = '8',点击Select Features选中所有城市记录。 - 右键原图层,选择
Export > Save Selected Features As,选好保存格式和路径,点击OK就能得到单独的城市要素图层。
- 在属性表点击
- 用Processing工具批量提取
- 按
Ctrl+Alt+T调出Processing Toolbox,搜索Extract by Attribute工具。 - 选择目标图层,设置筛选字段(比如
type)、运算符(比如=)和匹配值(比如city),指定输出路径后点击Run,工具会自动帮你提取出符合条件的要素。
- 按
- 属性筛选后导出
二、从巴基斯坦全图中提取卡拉奇市地图数据
针对巴基斯坦的行政数据,操作更精准一些:
第一步:确认卡拉奇的属性标识
加载巴基斯坦全图后,打开属性表,找和卡拉奇相关的字段:- 一般
name字段会有英文Karachi或者乌尔都语的对应名称; - 部分数据会用
admin_level区分层级,卡拉奇作为大都会区,可能对应admin_level=6(具体要看你的数据来源,比如OSM数据里卡拉奇的层级是admin_level=6)。
- 一般
第二步:筛选并导出卡拉奇
方法一:快速搜索选择- 在属性表顶部的搜索框(放大镜图标)输入
Karachi,找到对应的记录后选中,右键图层选择Export > Save Selected Features As,保存成新图层即可。
方法二:精准表达式筛选
如果担心有重名或者需要更严格的筛选,用表达式工具: - 输入
"name" ILIKE '%Karachi%'(ILIKE不区分大小写,避免大小写匹配问题),或者结合层级"admin_level" = '6' AND "name" = 'Karachi',选中后导出即可。
- 在属性表顶部的搜索框(放大镜图标)输入
第三步:(可选)合并子区域
如果你的数据里卡拉奇被分成了多个子分区(比如市区的各个行政区),可以用Merge Vector Layers工具合并成完整边界:- 在Processing Toolbox搜索
Merge Vector Layers,选择所有属于卡拉奇的子区域图层,设置输出路径后运行,就能得到一个完整的卡拉奇市边界图层。
- 在Processing Toolbox搜索
内容的提问来源于stack exchange,提问作者Kamran Tariq




