首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PostGIS空间数据库简明教程

除了基本的几何图形,PostGIS 还支持一些更高级的几何图形:多版本的基本几何图形 - 点、线串多边形的同质集合基本几何图形的 3D 版本 - 与添加了 Z 坐标的基本几何图形相同几何集合——任意几何的集合...每当我们平移缩放地图时,系统都需要确定应从存储中获取哪些对象并在屏幕呈现。 这通常是通过将对象与代表地图可见部分的矩形相交来完成的。...树的叶子是代表 PostGIS 列中空间对象边界框的矩形。图片这样,我们可以快速遍历树以找到哪些对象与给定对象相交,而不是检查每个对象是否相交。...它包括有关坐标系的信息、(0, 0) 点在地球的位置、坐标的分辨率以及地图上的坐标如何与地球的实际点相对应。...这意味着 PostGIS 将允许插入具有任何 SRID 的多边形。 在我们无法预测更改传入数据的 SRID 的情况下,这有时很有用,甚至是必要的,但应尽可能避免。

3K30

POSTGIS 总结

2.1.1 OGC的WKB和WKT格式 PostGIS基于OGC的“Simple Feature for Specification for SQL”规范,在Geometry对象实现了一系列的GIS...如果两个图形有重合的部分,即如果它们的边界内部相交,则**ST_Intersects(geometry A, geometry B)**返回TRUE ST_Disjoint(geometry A, geometry...对于几何图形,&&运算符表示”边界框重叠接触”(纯索引查询),就像对于数字,”=“运算符表示”值相同”。...6.2 ST_Buffer **ST_Buffer(geometry, distance)**接受几何图形和缓冲区距离作为参数,并输出一个多边形,这个多边形边界与输入的几何图形之间的距离与输入的缓冲区距离相等...有一个名为ST_Equals的函数,可用于测试几何图形的空间相等性等价性。无论是绘制多边形的方向、定义多边形的起点,还是使用的点的个数的差异在这里都不重要。重要的是多边形包含相同的空间区域。

6.1K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    一篇文章带你玩转PostGIS空间数据库

    VACUUM ANALYZE nyc_census_blocks; 2.数据投影 2.1 数据投影简介 地球不是平的,也没有简单的方法把它放在一张平面纸地图上(电脑屏幕),所以人们想出了各种巧妙的解决方案...这对于空间连接(spatial join)非常有用,因为在两个多边形图层使用St_Intersects(geometry, geometry)通常会导致重复计算:位于两个多边形边界多边形将与两侧的多边形都相交...ST_Buffer(geometry, distance)接受几何图形和缓冲区距离作为参数,并输出一个多边形,这个多边形边界与输入的几何图形之间的距离与输入的缓冲区距离相等。...空间相等(ST_Equals) ST_Equals的函数,可用于测试几何图形的空间相等性等价性。无论是绘制多边形的方向、定义多边形的起点,还是包含的点的个数的差异在这里都不重要。...关于它们的交集的DE9IM矩阵如下: 请注意,以上两个要素的边界实际根本不相交(线的端点与多边形的内部相交,而不是与多边形边界相交,反之亦然),因此B/B单元用"F"填充。

    6K50

    DE-9IM 空间关系模型

    下面图是**红色几何对象重叠(Overlaps)在蓝色几何对象**的示意图。...如上图所示,淡紫色的多边形为条件几何对象(A),淡红色的多边形为 测试几何对象(B),图中的 黑色 部分表示两个几何对象对应的部分(内部、边界、外部)之间的相交(或者说重合)部分( A....空间谓词 DE-9IM值 说明 等价于 Equals T*F**FFF* 如果两个几何对象的内部相交,并且一个几何对象的内部边界没有任何部分与另一个几何对象的外部相交,那么这两个几何对象在拓扑上是相等的...B的外部 CoveredBy(B,A) CoveredBy (被涵盖) T*F**F*** *TF**F*** **FT*F*** **F*TF*** A CoveredBy B:A上至少有一个点在...B ,而 A 没有一个点在b的外部 Covers(B,A) 附上论文中的表格可以理解得直观一点。

    13510

    如何在Ubuntu 14.04安装和配置PostGIS

    PostGIS允许您使用几何和地理数据类型存储空间数据,使用空间函数执行空间查询以确定区域,距离,长度和周长,并在数据创建空间索引以加速空间查询。...使用该sudo命令切换到postgres用户: sudo -i -u postgres 然后连接到test1数据库: psql -d test1 接下来,在数据库启用PostGIS扩展: CREATE...我们导入的数据包含多边形类型和部分多边形MultiPolygons的混合。这些不能插入到同一个字段中,因此我们将所有要素提升为多部分多边形,并将几何字段创建为MultiPolygon。...第五步 - 查询空间数据 假设我们要找到世界十个最北方的国家。使用PostGIS和我们导入的数据很容易。 重新登录test1数据库。...我们正在与国家及其不规则边界打交道,因此我们数据库中的每个国家都没有单一的纬度值。因此,为了获得每个国家的纬度,我们首先使用PostGIS的ST_Centroid功能找出每个国家的质心。

    2.5K00

    如何在Ubuntu 14.04安装和配置PostGIS

    PostGIS允许您使用几何和地理数据类型存储空间数据,使用空间函数执行空间查询以确定区域,距离,长度和周长,并在数据创建空间索引以加速空间查询。...使用该sudo命令切换到postgres用户: sudo -i -u postgres 然后连接到test1数据库: psql -d test1 接下来,在数据库启用PostGIS扩展: CREATE...我们导入的数据包含多边形类型和多部分多边形MultiPolygons的混合。这些不能插入到同一个字段中,因此我们将所有要素提升为多部分多边形,并将几何字段创建为MultiPolygon。...第5步 - 查询空间数据 假设我们被要求找到世界十个最北方的国家。使用PostGIS和我们导入的数据很容易。 重新登录test1数据库。...我们正在与国家及其不规则边界打交道,因此我们数据库中的每个国家都没有单一的纬度值。因此,为了获得每个国家的纬度,我们首先使用PostGIS的ST_Centroid功能找出每个国家的质心。

    1.6K00

    地理空间数据库复习笔记:关系数据库标准语言、几何对象模型与查询

    面(Surface): 二维几何对象类,代表一个外边界、零到多个内边界组成的几何对象 在三维空间中,可能是一个同构的曲面 多边形(Polygon) 二维坐标空间中由一个外边界、零到多个内边界定义的平坦表面...,由一个一个以上的线环聚合而成,如省份 仅支持由折线串围成的多边形,暂不支持曲线 体表面(PolyhedraSurface) 由简单面沿着它们的边界“缝合”而成 三维空间中的多面体曲面总体可以不平坦...z值仅用于记录点在坐标空间中第3个坐标轴的测量值。...M值:点类除了x, y, z坐标外,还有一个M坐标 M值是线性参考系统的一个重要的度量值 例如,高速公路上的里程碑点可用其M值表示从高速公路起点到当前位置的距离 由于体表面违反了“多边形元素只能相交在有限数量的点...: PostGIS中常用数据类型: boolean 布尔类型,其值为TF box2d 矩形框类型,由矩形左下角和右上角组成 box3d 长方体类型,由左前下角和右后上角组成 bytea 相当于BLOB

    1.1K20

    深入探索地理空间查询:如何优雅地在MySQL、PostgreSQL及Redis中实现精准的地理数据存储与检索技巧

    如果您有任何问题进一步的探讨,欢迎在下方留言! 2....2.3 多边形查询 PostGIS 还允许我们对多边形进行查询。例如,我们可以查询一个点是否位于一个多边形内,或者找出与一个多边形相交的所有其他多边形。...如果您有任何进一步的问题想法,欢迎与我们分享和讨论! 4....如果您有任何疑问想要进一步探讨的内容,欢迎随时交流!...在这个过程中,我们不仅要关注各个数据库在地理空间查询的功能特性,更要理解它们背后的工作原理和适用场景,这样我们才能在实际应用中做出明智的技术选择。

    71610

    一种快速判断点在多边形内的算法

    由于业务需要, 我总结了一种快速判断点在多边形内的算法。 先说思路: 如图: 如果点在多边形内部,射线第一次穿越边界一定是穿出多边形。 如果点在多边形外部,射线第一次穿越边界一定是进入多边形。...我们可以归纳出: 当射线穿越多边形边界的次数为偶数时,所有第偶数次(包括最后一次)穿越都是穿出,因此所有第奇数次(包括第一次)穿越为穿入,由此可推断点在多边形外部。...当射线穿越多边形边界的次数为奇数时,所有第奇数次(包括第一次和最后一次)穿越都是穿出,由此可推断点在多边形内部。 实现关键点 1....点在多边形的边上 前面我们讲到,射线法的主要思路就是计算射线穿越多边形边界的次数。那么对于点在多边形的边上这种特殊情况,射线出发的这一次,是否应该算作穿越呢?...不过,这里看射线两侧的边如果都在两侧时算作一次“穿过”,即 y == Y时, x1 > X 并且 x2 X),穿过数次加1 , 其中X,Y是参考点, x1,

    1.2K10

    TW洞见 | 可视化你的足迹

    本文所有内容,包括文字、图片和音视频资料,版权均属ThoughtWorks公司所有,任何媒体、网站个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发布/发表。...,并生成新的图层heatmap 使用MapServer来渲染基本地图 数据抽取 Mac的Photos会将照片的元数据存储在一个SQLite3格式的数据库中,文件名为Library.apdb,通常位于这个位置...其实在这个过程中,绝大多数多边形是不包含任何数据的,我们需要过滤掉这些多余的多边形,这样可以缩减绘制地图的时间。 我们可以将这个文件导入到PostGIS中进行简化: ?...同样的原理,如果将那些自己创建的多边形替换为行政区域划分的多边形,则可以得到另外一种形式的热图: ?...在这个stack,我们可以很容易的将一些其他数据也通过可视化的方式展现出来(公用自行车站点分布,出租车分布等等)。

    2K120

    (数据科学学习手札146)geopandas中拓扑非法问题的发现、诊断与修复

    这样的非法要素读到geopandas或是PostGIS等常用GIS工具中,在进行一些矢量计算操作时会触发拓扑错误问题,而今天的文章中,我们就来学习一下在geopandas中如何有效地解决此类的要素拓扑非法问题...错误情况3:内部孔洞之间存在共边 错误情况4:内部孔洞与外边界共边 错误情况5:多部件面要素之间存在重叠   值得一提的是,除了查看要素的is_valid属性是否为True外,在jupyter...快捷实现同样的效果:   下面我们来瞅瞅针对每种情况具体是如何进行修复的: 修复错误情况1:坐标串自交叉   可以看到,通过make_valid()针对坐标串自交叉进行修复的方式是将其拆分为多个合法多边形构成的多部件要素...:   如果你希望最后的结果为一个完整的多边形,这里给大家推荐一种奇淫巧技,在不影响原始数据精度的情况下,对结果做一个非常小的缓存区即可: 修复错误情况2:边界线存在重叠   类似的,对于边界线存在重叠的情况...  针对内部孔洞与外边界共边情况下的修复结果,毕竟这种情况下涉及到的孔洞是不可能被保留的: 修复错误情况5:多部件面要素之间存在重叠   这种情况下的修复策略显而易见,如果你希望修复后的结果仍然是多部件要素

    1.2K20

    Postgres空间地理类型POINT POLYGON实现附近的定位和电子围栏功能

    最后一种坐标转换的计算方法, 参考PostGIS 坐标转换(SRID)的边界问题引发的专业知识 - ST_Transform 建议国内不要使用马萨诸塞州的投影平面,会使得距离计算不够准确。...面多边形'POLYGON' 添加字段类型 SELECT AddGeometryColumn ('basic_mall_v1', 'geom_fence', 4326, 'POLYGON', 2); 或者...32.085437,118.9041 32.086069,118.904754 32.085219,118.903592 32.084564,118.902957 32.085437)) (1 row) 实际,...我们要将地球的数字化信息存放到球面坐标系统,如何进行操作呢?地球是一个不规则的椭球,如何将数据信息以科学的方法存放到椭球? 这必然要求我们找到这样的一个椭球体。...Projection coordinate system(投影坐标系统) 投影坐标系统,实质便是平面坐标系统,其地图单位通常为米. 投影的意义:将球面坐标转化为平面坐标的过程便称为投影。

    3.6K20

    一个R语言中操纵矢量空间数据的标准化工具—sf

    我们可以把“Features”看做是一种包含特定空间位置范围的“事物”对象;Featrue gemetry 是指某种空间几何特征(位置范围),或者你也可以直接把其当成是一个点、点集合、线、线集合、...多边形多边形集合,甚至是以上多种对象的结合。...某些连续性现象:比如水温或者海拔等诸如此类的,我们最好把其看成是来自于连续空间(时间)的映射函数(Scheider et al., 2016),这些也经常被作为栅格数据而非矢量数据(点集合、线集合、...但是由于ESRI shapefile缺乏清晰开放的标准,其本身混乱、繁多的配置文件及其在呈现空间数据的诸多缺陷,给sp包造成了不利影响,比如在呈现多边形集合上的孔洞时,盲目的使用封闭外边界来标记孔洞。...: POINT:一个单点组成的数值型向量 MULTIPOINT:每行由多点组成的数值矩阵 LINESTRING:每行由多点组成的数值矩阵 POLYGON:多个数据矩阵(每行由多点组成)组成的列表(多边形边界内部可能嵌套若干个孔洞

    4.3K51

    Mongodb GeoJSON 地理数据处理 其实我也很厉害

    相信如果提起地理数据的处理,首先想起的数据库就是postgis, 对大名鼎鼎的postgresql + 插件的方式来将POSTGRESQL 变成纯纯的地理数据处理的数据库,这是人尽皆知和童叟无欺的功能...那么世界如果我不想使用POSTGRESQL 的 postgis来处理我的地理数据以外的选择,那么NO.2 的选择就是mongodb的 GeoJSON 此时更简单的方式,以及不需要进行插件的方式,通过一整套...MONGODB 如何存储地理数据 3 如何查询地理数据,与例子 4 地理数据的索引 1 首先我们需要代入如下一些地理的概念 point 点 , linestring 线 , polygon 多边形...,多边形是通过多个点的描述通过线来最终组成一个形状,特点是第一个点与最后一个点一定是一样的,否则无法组成闭合的图形。...db.restaurants.createIndex( { location: "2dsphere"}, {background:true,name:"idx_location"} ) 在地理数据存储和计算方面POSTGRESQL 的POSTGIS

    1.9K20
    领券