OGR-矢量筛选

OGR-矢量筛选

1.属性筛选

# 根据字段属性进行过滤
ds = ogr.Open(os.path.join(data_dir, 'global'))
lyr = ds.GetLayer('ne_50m_admin_0_countries')
>1
lyr.SetAttributeFilter('continent = "Asia"')
lyr.GetFeatureCount()
>2:二次筛选
# You can still get a feature that is not in Asia by using its FID.
lyr.GetFeature(2).GetField('name')
# Set a new filter that selects South American countries and show the results
# in blue. The old filter is no longer in effect.
lyr.SetAttributeFilter('continent = "South America"')

2.空间筛选

# Get the Germany polygon. Make sure to plot the full layer before setting the
# filter, or you'll only plot Germany (or you could clear the filter and then
# plot).
ds = ogr.Open(os.path.join(data_dir, 'global'))
country_lyr = ds.GetLayer('ne_50m_admin_0_countries')
# 根据字段进行筛选
country_lyr.SetAttributeFilter('name = "Germany"')
feat = country_lyr.GetNextFeature()
germany = feat.geometry().Clone()
# Plot world cities as yellow dots.
city_lyr = ds.GetLayer('ne_50m_populated_places')
city_lyr.GetFeatureCount()
## 根据几何进行空间过滤
city_lyr.SetSpatialFilter(germany)
city_lyr.GetFeatureCount()
##  根据属性字段的数值进行过滤
city_lyr.SetAttributeFilter('pop_min > 1000000')
city_lyr.GetFeatureCount()
# 清空空间筛选条件
city_lyr.SetSpatialFilter(None)
city_lyr.GetFeatureCount()
# 清空字段筛选选项
country_lyr.SetAttributeFilter(None)

3.SQL

3.1 OGR SQL

ExecuteSQL(sql,[spatialFilter],[dialect])
sql语句
针对结果做空间过滤
指定SQL语句采用的标准字符

语法示例

# 从'ne_50m_admin_0_countries'图层中选择area(ogr_geom_area自动获取面积字段)、 name、 pop_est,
# 并根据POP_EST降序排列
ds = ogr.Open(os.path.join(data_dir, 'global'))
sql = '''SELECT ogr_geom_area as area, name, pop_estFROM 'ne_50m_admin_0_countries' ORDER BY POP_EST DESC'''
lyr = ds.ExecuteSQL(sql)

Limit

ds = ogr.Open(os.path.join(data_dir, 'global','natural_earth_50m.sqlite'))
sql = '''SELECT geometry, area(geometry) AS area, name, pop_estFROM countries ORDER BY pop_est DESC LIMIT 3'''
# 'LIMIT 3':只保留筛选项的前三个
lyr = ds.ExecuteSQL(sql)

链接表

ds = ogr.Open(os.path.join(data_dir, 'global'))
sql = '''SELECT pp.name AS city, pp.pop_min AS city_pop,c.name AS country, c.pop_est AS country_popFROM ne_50m_populated_places ppLEFT JOIN ne_50m_admin_0_countries cON pp.adm0_a3 = c.adm0_a3WHERE pp.adm0cap = 1'''
lyr = ds.ExecuteSQL(sql)
# 语法分析
"""
'''SELECT【字段】FROM 【图层】ON 【字段链接操作:限定adm0_a3两个表链接的条件】WHERE 【属性过滤:限定条件】注:OGR SQL where 只能使用原始表的属性进行限定
"""

3.2

SQLite

ds = ogr.Open(os.path.join(data_dir, 'global'))
sql = '''SELECT pp.name AS city, pp.pop_min AS city_pop,c.name AS country, c.pop_est AS country_popFROM ne_50m_populated_places ppLEFT JOIN ne_50m_admin_0_countries cON pp.adm0_a3 = c.adm0_a3WHERE pp.adm0cap = 1 AND c.continent = "South America"'''
# 指定 SQL 语言标准
lyr = ds.ExecuteSQL(sql, dialect='SQLite')

合并矢量

# 利用SQL执行是来那个合并操作
# Union the counties together and plot the result. This will only work if you
# have SpatiaLite support.
sql = 'SELECT st_union(geometry) FROM countyp010 WHERE state = "CA"'
lyr = ds.ExecuteSQL(sql, dialect='SQLite')
# Do the same with PostGIS, but only if you've set up a PostGIS server and
# loaded your data in.
conn_str = 'PG:host=localhost user=chrisg password=mypass dbname=geodata'
ds = ogr.Open(conn_str)
sql = "SELECT st_union(geom) FROM us.counties WHERE state = 'CA'"
lyr = ds.ExecuteSQL(sql)

OGR SQL dialect 语法介绍
SQL Lite dialect 语法介绍

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/877606.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Go 语言类型转换 19

Go 语言支持类型转换,用于将一个值从一种类型转换到另一种类型。类型转换可以是隐式的,也可以是显式的。 隐式类型转换 Go 语言支持隐式类型转换,例如: i : 42 f : float64(i)上面的代码隐式地将整数 i 转换为浮点数 f。 显式…

Linux基础知识学习(五)

1. 用户组管理 每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理(开发、测试、运维、root)。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户…

Java 前端与后端交互:解锁 RESTful API 设计的秘密

引言 随着互联网技术的快速发展,前后端分离已经成为现代 Web 开发的主流趋势之一。在这个过程中,RESTful API 成为了连接前端界面与后端数据处理的重要桥梁。作为一位拥有20年实战经验的编码专家,我见证了 RESTful API 在不同场景中的广泛应…

QT聊天室基于Tcp

server.cpp #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget),server(new QTcpServer(this)) // 给服务器指针对象实例化空间{ui->setupUi(this); }Widget::~Widget() {delete ui; }…

LLVM - 编译器后端-指令选择

一:概述 任何后端的核心都是指令选择。LLVM 实现了几种方法;在本篇文章中,我们将通过选择有向无环图(DAG)和全局指令选择来实现指令选择。 在本篇文章中,我们将学习以下主题: • 定义调用约定规则:本节展示如何在目标描述中设置调用约定的规则。 • 通过选择 D…

音频采集spring_ws_webrtc (html采集麦克风转gb711并发送广播播放)完整案例

下载地址:http://www.gxcode.top/code 项目说明 springbootwebscoektwebrtc 项目通过前端webrtc采集麦克风声音,通过websocket发送后台,然后处理成g711-alaw字节数据发生给广播UDP并播放。 后台处理项目使用线程池(5个线程)接受webrtc数据并…

mac如何恢复被同名替换掉的文件夹 mac文件被替换如何恢复

Mac系统一直以高性能遥遥领先其他的Windows系统,因此,Mac虽然价格远远高出其他的笔记本电脑,但是还是受到了一众用户的青睐。使用mac时,我们也经常会将一个文件命名为已经有了相同文件的文件名,且保存到同一个目标地址…

SQL - 内置函数

处理数值数据的函数 round(3.555,2) //四舍五入,第二个参数为精度值,为3.56 truncate(3.999,2) //用来截断数字,第二个参数为保留位数,为3.99 ceiling(7.1) //上限函数,返回不小于数字的最小整数,为8 foolr…

MATLAB-PSO-BiTCN-BiLSTM-Attention多变量分类

一、数据集 数据特征:12个多分类:4分类 ​ 二、PSO-BiTCN-BiLSTM-Attention网络 PSO-BiTCN-BiLSTM-Attention 网络是一种结合了多种深度学习技术和优化算法的复杂模型,用于处理时序数据任务,如时间序列预测、分类或其他相关问题…

白骑士的HTML教学实战项目篇 4.1 创建个人网站

创建个人网站不仅是展示自己作品、技能和兴趣的理想方式,也是实践HTML、CSS、JavaScript等前端技术的绝佳机会。在本篇博客中,我们将带你一步步构建一个功能齐全、视觉美观的个人网站。从最初的网站规划与设计,到实现页面导航与布局&#xff…

【Linux】——进程概念(万字解读)

一 冯诺依曼体系结构 在此之前,我们先要理解我们计算机的冯诺依曼体系结构,因为是进程的基础 我们所有的操作其实都是基于这样一个模型,比如你在qq上,和别人发送消息,这个消息肯定是先通过输入设备进行输入&#xf…

一个注解轻松搞定审计日志服务!

【审计日志】,简单的说就是系统需要记录谁,在什么时间,对什么数据,做了什么样的更改!任何一个 IT 系统,如果要过审,这项任务基本上也是必审项! 实现【审计日志】这个需求&#xff0…

整体思想以及取模

前言&#xff1a;一开始由于失误&#xff0c;误以为分数相加取模不能&#xff0c;但是其实是可以取模的 这个题目如果按照一般方法&#xff0c;到达每个节点再进行概率统计&#xff0c;但是不知道为什么只过了百分之十五的测试集 题目地址 附上没过关的代码 #include<bits…

Vue3知识干货分享

在 Vue 3 中&#xff0c;setup 函数的写法有两种主要方式&#xff1a;一种是使用 <script setup> 标签&#xff0c;另一种是写在 export default 对象中作为 setup 函数。它们之间的区别如下&#xff1a; <script setup> 标签 位置&#xff1a;使用 <script set…

联想闪电鲨移动硬盘文件没删除却消失了怎么办

在日常的数据存储与管理中&#xff0c;移动硬盘作为便携且容量可观的存储设备&#xff0c;深受用户青睐。然而&#xff0c;当您发现联想闪电鲨移动硬盘中的文件突然消失&#xff0c;而您确信并未进行删除操作时&#xff0c;这无疑会令人感到困惑与焦虑。本文旨在为您揭开这一谜…

vue-element-admin——<keep-alive>不符合预期缓存的原因

vue-element-admin——<keep-alive>不符合预期缓存的原因 本文章&#xff0c;以现在中后台开发用的非常多的开源项目vue-element-admin为案例。首先&#xff0c;列出官方文档与缓存<keep-alive>相关的链接&#xff08;请认真阅读&#xff0c;出现缓存<keep-ali…

在IEDA里打包Maven项目记录

之前在网上查找到的方式发现比较繁琐&#xff0c;所以把自己的解决办法记录一下分享给兄弟们 <plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-shade-plugin</artifactId><version>3.2.4</vers…

集合及数据结构第一节————初识集合框架和数据结构

系列文章目录 集合及数据结构第一节————初识集合框架和数据结构 初始集合框架和数据结构 什么是集合框架&#xff1f;集合框架的重要性背后所涉及的数据结构以及算法数据结构的基本概念和术语逻辑结构和物理结构数据类型 文章目录 系列文章目录集合及数据结构第一节——…

文件的读写(标准库函数与系统调用函数),文件描述符的复制

文件描述符 为了解决内核对象在可访问性与安全”性之间的矛盾&#xff0c;Unix系统通过所谓的文件描述符&#xff0c;将位于内核空间中的文件表项间接地提供给运行于用户空间中的程序代码。为了便于管理在系统中运行的各个进程&#xff0c;内核会维护一张存有各进程信息的列表&…

浮点数计算

看这么一小段内容&#xff1a; Test public void testDouble() {double a 0.0000010;double b 10.0;log.info("a * b {}", a * b); } 想要的是通过计算a*b后获取到的值应该是0.00001&#xff0c;但是实际上算出来的值是&#xff1a; a * b 9.999999999999999E…