首页 GIS基础理论 GIS属性表怎么按属性选择?查询语句怎么写?

GIS属性表怎么按属性选择?查询语句怎么写?

作者: GIS研习社 更新时间:2025-12-07 22:00:03 分类:GIS基础理论

为什么你写的查询语句总报错?90%的人忽略了这个细节

上周一位研究生私信我:‘老师,我在ArcGIS里想选人口大于100万的城市,结果系统提示“无效表达式”,我都快崩溃了!’——这根本不是软件bug,而是你没搞懂属性选择背后的“语言逻辑”。今天我就用剥橘子的方式,手把手带你吃透这个GIS最常用、也最容易踩坑的功能。

GIS属性表怎么按属性选择?查询语句怎么写?

属性选择的本质:给数据“贴标签”再“挑果子”

想象你面前有一筐混合水果(属性表),里面有苹果、橙子、香蕉,每颗水果还贴着产地、重量、甜度的小标签。所谓“按属性选择”,就是告诉系统:“我要所有产自山东、重量超过200克的苹果。”——GIS软件干的就是这个活儿。

我在参与全国生态红线划定项目时,曾需要从百万级图斑中筛选“坡度>25°且植被覆盖度<30%”的区域。如果手动点选?别说人眼花了,电脑都得卡死。这时候,一句精准的查询语句,胜过十个实习生加班。

三大主流平台查询语法对照表(收藏备用)

平台字段名写法字符串示例数值示例
ArcGIS直接写字段名"CITY_NAME" = '北京'POPULATION > 1000000
QGIS字段名加双引号"CITY_NAME" = '北京'"POPULATION" > 1000000
GeoPandas(Python)df.query()内直接写df.query("CITY_NAME == '北京'")df.query("POPULATION > 1000000")
Dr. Gis血泪教训:在ArcGIS里,如果你的字段名带空格或特殊符号(比如“GDP_2023”),必须用方括号包起来,写成 [GDP_2023] > 10000 ——否则等着看红色报错吧!

实战案例:三步写出零错误的查询语句

  1. 第一步:确认字段类型 —— 数值型不用引号,字符型必须用单引号。比如选“北京市”要写 '北京',选人口数写 1000000(不加引号)。
  2. 第二步:注意大小写和空格 —— QGIS对字段名大小写敏感;ArcGIS虽然不敏感,但字段值(如城市名)区分大小写。
  3. 第三步:复杂条件用括号分组 —— 想选“北京或上海且人口超500万”?正确写法是:("CITY_NAME" = '北京' OR "CITY_NAME" = '上海') AND "POPULATION" > 5000000
# GeoPandas进阶写法:链式筛选 + 正则匹配
import geopandas as gpd
df = gpd.read_file('cities.shp')
# 筛选名称含“州”字且GDP前10的城市
result = df.query("CITY_NAME.str.contains('州')", engine='python').nlargest(10, 'GDP')

避坑指南:那些年我们踩过的雷

  • ❌ 错误:POPULATION > "1000000" (数值加了引号)→ 系统当字符串比较,结果全错
  • ❌ 错误:City_Name = 北京 (字符串没加引号)→ 直接报语法错误
  • ✅ 正确:("TYPE" = '住宅' OR "TYPE" = '商业') AND "AREA" >= 500

一句话总结+行动号召

按属性选择的核心就三点:字段类型决定引号用法、平台差异影响写法、复杂逻辑善用括号分组。现在打开你的GIS软件,试着筛选一个包含“与或非”的复合条件——然后在评论区留下你的查询语句,我来帮你揪出隐藏bug!

相关文章