通过 Geodjango 中的几何交集关联两个模型

2023-12-30

在 GeoDjango 中,两个有两个包含几何字段的模型:

from django.contrib.gis.db import models 

class Country(models.Model):
    territory = models.MultiPolygonField()
    language = models.CharField(max_length=2)

class House(models.Model):
    location = models.PointField()

我想进行一个查询,返回位于说英语的国家/地区的所有房屋。
Country 和 House 之间的关系应该通过交叉来完成House.location with Country.territory.

我如何使用 GeoDjango 的 ORM 来实现这一点?


一个有用且相当优化的解决方案是将英语国家的多边形组合成一个多多边形 https://wiki.openstreetmap.org/wiki/Relation:multipolygon(由至少 2 个明确定义的多边形生成的区域)。然后过滤哪些点与该区域相交。

为此,我们将使用 GeoDjangoUnion https://docs.djangoproject.com/en/2.1/ref/contrib/gis/geoquerysets/#django.contrib.gis.db.models.Union:

返回一个 GEOSGeometry 对象,其中包含查询集中每个几何图形的并集。请注意,Union 的使用是处理器密集型的,并且在大型查询集上可能会花费大量时间

里面一个Subquery https://docs.djangoproject.com/en/2.0/ref/models/expressions/#subquery-expressions:

Houses.objects.filter(
    location__intersects=Subquery(
        Country.objects.filter(language='English')
                       .aggregate(area=Union('territory'))['area']
    )
)

或者我们可以避免子查询(对于 Django 版本

engish_speaking_area = Country.objects.filter(language='English')
                                      .aggregate(area=Union('territory'))['area']
Houses.objects.filter(location__intersects=english_speaking_area)

另一种方法是在这里修改我的答案:GeoDjango 查询:包含在多多边形中的所有点 https://stackoverflow.com/questions/37166891/geodjango-query-all-point-that-are-contained-into-a-multi-polygon/47263632#47263632满足您的需求。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 Geodjango 中的几何交集关联两个模型 的相关文章

  • 如何屏蔽 PyTorch 权重参数中的权重?

    我正在尝试在 PyTorch 中屏蔽 强制为零 特定权重值 我试图掩盖的权重是这样定义的def init class LSTM MASK nn Module def init self options inp dim super LSTM
  • 替换字符串列表中的 \x00 的最佳方法?

    我有一个来自已解析 PE 文件的值列表 其中包括 x00每个部分末尾的空字节 我希望能够删除 x00字符串中的字节而不删除所有字节 x 文件中的 s 我试过做 replace and re sub 但并没有取得太大成功 使用Python 2
  • 如何使用pycaffe重构caffe网络

    我想要的是 加载网络后 我将分解一些特定的图层并保存新的网络 例如 原网 数据 gt conv1 gt conv2 gt fc1 gt fc2 gt softmax New net 数据 gt conv1 1 gt conv1 2 gt c
  • 使用 Django 的 post_save() 信号

    我有两张桌子 class Advertisement models Model created at models DateTimeField auto now add True author email models EmailField
  • Dask DataFrame 的逐行处理

    我需要处理一个大文件并更改一些值 我想做这样的事情 for index row in dataFrame iterrows foo doSomeStuffWith row lol doOtherStuffWith row dataFrame
  • 在 Python 中使用 sec 函数的反函数

    我正在创建一个程序 用于计算从一定高度范围和设定初始速度发射射弹的最佳角度 在我需要使用的最终方程中 存在一个反 sec 函数 它导致了一些麻烦 我已经导入了数学并尝试使用 asec 无论如何 但是数学似乎无法计算反秒函数 我也明白 sec
  • NLTK、搭配问题:需要解包的值太多(预期为 2)

    我尝试使用 NLTK 检索搭配 但出现错误 我使用内置的古腾堡语料库 I wrote alice nltk corpus gutenberg fileids 7 al nltk corpus gutenberg words alice al
  • 使用正则表达式解析 Snort 警报文件

    我正在尝试使用 Python 中的正则表达式从 snort 警报文件中解析出源 目标 IP 和端口 和时间戳 示例如下 03 09 14 10 43 323717 1 2008015 9 ET MALWARE User Agent Win9
  • Python:当前目录是否自动包含在路径中?

    Python 3 4 通过阅读其他一些 SO 问题 似乎如果moduleName py文件位于当前目录之外 如果要导入它 必须将其添加到路径中sys path insert 0 path to application app folder
  • 如何在 Windows 上使用 Python 3.6 来安装 Python 2.7

    我想问一下如何使用pip install对于 Python 2 7 当我之前安装并使用 Python 3 6 时 我现在必须使用 Windows 上的 Python 版本 pip install 继续安装 Python 3 6 我需要使用以
  • Python:随时接受用户输入

    我正在创建一个可以做很多事情的单元 其中之一是计算机器的周期 虽然我将把它转移到梯形逻辑 CoDeSys 但我首先将我的想法放入 Python 中 我将进行计数 只需一个简单的操作 counter 1 print counter 跟踪我处于
  • 使用Python将图像转换为十六进制格式

    我的下面有一个jpg文件tmp folder upload path tmp resized test jpg 我一直在使用下面的代码 Method 1 with open upload path rb as image file enco
  • Python 中的这种赋值方式叫什么? a = b = 真

    我知道关于元组拆包 http docs python org tutorial datastructures html tuples and sequences但是当一行中有多个等号时 这个赋值被称为什么 阿拉a b True 它总是让我有
  • 在 Mac 上安装 Pygame 到 Enthought 构建中

    关于在 Mac 上安装 Pygame 有许多未解答的问题 但我将在这里提出我的具体问题并希望得到答案 我在 Mac 上安装 Pygame 时遇到了难以置信的困难 我使用 Enthought 版本 EPD 7 3 2 32 位 它是我的默认框
  • Python int 太大,无法放入 SQLite

    我收到错误 OverflowError Python int 太大 无法转换为 SQLite INTEGER 来自以下代码块 该文件约25GB 因此必须分部分读取 length 6128765 Works on partitions of
  • 负整数的Python表示

    gt gt gt x 4 gt gt gt print b format x x 4 100 gt gt gt mask 0xFFFFFFFF gt gt gt print b format x mask x mask 4294967292
  • Plotly:如何避免巨大的 html 文件大小

    我有一个 3D 装箱模型 它使用绘图来绘制输出图 我注意到 绘制了 600 个项目 生成 html 文件需要很长时间 文件大小为 89M 这太疯狂了 我怀疑可能存在一些巨大的重复 或者是由单个项目的 add trace 方法引起的 阴谋 为
  • 将 Scikit-Learn OneHotEncoder 与 Pandas DataFrame 结合使用

    我正在尝试使用 Scikit Learn 的 OneHotEncoder 将 Pandas DataFrame 中包含字符串的列替换为 one hot 编码的等效项 我的下面的代码不起作用 from sklearn preprocessin
  • 如何使用 Django (Python) 登录表单?

    我在 Django 中构建了一个登录表单 现在我遇到了路由问题 当我选择登录按钮时 表单不会发送正确的遮阳篷 我认为前端的表单无法从 查看 py 文件 所以它不会发送任何 awnser 并且登录过程无法工作 该表单是一个简单的静态 html
  • 如何识别图形线条

    我有以下格式的路径的 x y 数据 示例仅用于说明 seq p1 p2 0 20 2 3 1 20 2 4 2 20 4 4 3 22 5 5 4 22 5 6 5 23 6 2 6 23 6 3 7 23 6 4 每条路径都有多个点 它们

随机推荐

  • Ms-Access MDB:将备注字段拆分为多个文本字段。 (防止数据损坏)

    我使用 Access 数据库作为后端 我使用一些备注字段 我了解到 备注字段容易导致数据库损坏 因为它们存储在单独的数据页中 该记录仅保存指向存储实际数据的数据页的指针 大多数时候我只需要 100 到 1000 个字符左右 所以我有一个想法
  • 使用 iTextSharp 将 pdf 显示到网页?

    我正在使用 iTextSharp 生成 pdf 我想将其显示在网页上 并让用户从在线 pdf 查看器中保存它 动态pdf有一个drawtoweb 方法 但它不是免费使用的 而且我无法使用iTextSharp找到相同的功能 我怎样才能显示pd
  • 使用原型时的 Javascript 继承问题 - 实例被覆盖:(

    我是 JavaScript 编程新手 我对继承有一些噩梦 我正在为 Appcelerator Titanium 编写一些代码 并且我希望继承一个名为 Slide2D 的基类 所以我在Slide2D的原型中放置了一些函数 这些通常不会被覆盖
  • AngularJS then() 的行为与 success()-error() 不同[重复]

    这个问题在这里已经有答案了 As the success and error AngularJS 中不推荐使用函数 我正在更新我的代码 将它们替换为then 现在根据我的理解 这两段代码的行为应该是相同的 http get some par
  • 乔达时间 - 添加工作日至今

    是否可以将工作日添加到 joda 时间 例如 如果当前日期是 01 03 星期五 则 date 1 应返回 04 03 星期一 而不是 02 03 据我所知 Joda Time 中没有内置方法可以自动为您执行此操作 但是 您可以编写自己的方
  • __ attribute __((extion(“ name”)))用法?

    我已经运行过使用的代码 attribute section name 据我所知 对于 gcc 编译器 这允许您告诉链接器将创建的对象放置在特定部分 名称 在链接器文件中声明 名称 绝对地址 这样做而不是仅仅使用 data 部分有什么意义 有
  • 如何用jquery设置边距?

    我正在这样做 var sId id toString var index sId substring 3 var mrg index 221 var el id el css margin left mrg px and el css ma
  • 使用 Graph API 或 FQL 将所有照片包含在单个 Facebook Feed 帖子中?

    我正在使用 Facebook 图形 API 来获取我最近的帖子并通过 graph facebook com me feed 提要项目 我遇到的问题是 当提要对象是包含多张照片的帖子时 结果中的数据仅包含其中一张照片的信息 并且我似乎无法找到
  • iPhone:我需要实现 UIScrollViewDelegate (或任何委托)的所有方法吗

    假设我将 UIViewController 设为 UIScrollViewDelegate 我是否需要实现委托的所有方法 或者我可以只实现我关心的 1 个方法吗 If you cmd click在 Xcode 中 你声明你实现了该协议
  • UIScrollView 在 iPhone/iPad 上旋转时禁用滚动

    我使用 UIScrollView 和其中的图像作为每页分页一个图像 我在旋转时遇到问题iPhone http en wikipedia org wiki IPhone 当我旋转iPhone时 scrollViewDidScroll 滚动视图
  • requests.get(url) 未返回此特定 url

    我正在尝试使用 requests get url text 从该网站获取 HTML 但是 当使用此特定网址调用 requests get url 时 无论我等待多久 它都不会返回 这适用于其他网址 但这个网址给我带来了麻烦 代码如下 fro
  • @DirtiesContext 不适用于 @Nested 测试

    经过几个小时的谷歌研究后我仍然不知道如何使用 DirtiesContext with Nested类 假设以下集成测试类 ExtendWith SpringExtension class SpringBootTest AutoConfigu
  • VS 2019 更新后运行 azure 函数时出现调试配置文件不存在错误

    更新到版本 16 10 0 后无法从 Visual Studio 2019 调试 azure 函数 出现以下错误 此问题的问题是未正确安装引用的 Azure Function Tools 版本 因此 当它被部分下载时 它甚至不会尝试重新安装
  • 如何告诉CRAN自动安装包依赖项?

    我在 R 中开发了一个包 当我在本地计算机中检查并构建它时 它可以正常工作 但是当我在 CRAN 中尝试时 出现包依赖错误 我的包依赖于其他包的两个功能 如果我在下面列出其他包description using Depends or imp
  • JS中如何将字符串类型的十六进制转换为数字?

    例如 假设我有一个十六进制 0xdc 如何转换这个十六进制string转为十六进制Number输入JS 从字面上看只是丢失了引号 这Number 构造函数和parseInt 只是将其转换为 0 到 255 之间的整数 我只是想要0xdc E
  • 有效统计 MongoDB 中出现的百分比

    所以 我正在修改 MongoDB 并且试图获得count 聚合查询可以适当扩展 以便我可以轻松计算文档中某些值在整个集合中出现的百分比 我有一个结构如下的文档 foo bar moo cow values alpha true beta f
  • 在数据库中更改后,Prestashop 重定向到旧域

    我正在尝试创建 prestashop 1 6 电子商店的副本 用于从domain com 到 dev domain com 的开发目的 我遵循的过程是 禁用缓存和编译 将文件从domain com复制到dev domain com 从dom
  • 如何加速向量叉积计算

    嗨 我是这里的新手 正在尝试使用 numpy 进行一些计算 我在一次特定的计算中经历了很长的时间 并且无法找到任何更快的方法来实现同样的事情 基本上它是射线三角形相交算法的一部分 我需要计算两个不同大小的矩阵的所有向量乘积 我使用的代码是
  • aws ecs 优化的 AMI 中的私有 docker 注册表身份验证不成功

    我正在编写一个 terraform 脚本来创建 ECS 自动缩放集群 我创建了一个集群并向其中添加了 ec2 容器实例 我的任务定义文件包含来自私有 docker 存储库的图像 我浏览了 aws 官方文档并找到了一个页面私人登记认证 htt
  • 通过 Geodjango 中的几何交集关联两个模型

    在 GeoDjango 中 两个有两个包含几何字段的模型 from django contrib gis db import models class Country models Model territory models MultiP