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

PostGIS中具有纬度/长度SRID的实际(大圆)距离?

PostGIS 中具有纬度/长度 SRID 的实际(大圆)距离计算公式如下:

  1. 首先引入必要的 PostGIS 函数和概念:
代码语言:sql
复制

SELECT ST_Distance(

代码语言:txt
复制
       -- 地球表面的点,包括纬度/长度
代码语言:txt
复制
       ST_Point(0, 0), -- 起始点
代码语言:txt
复制
       ST_Point(3.986022988749895, 14.62283707249677) -- 终点
代码语言:txt
复制
   )/ 1000000 AS distance;
代码语言:txt
复制
  1. 通过实际的大圆距离和转换后的纬度和长度,计算出实际的大圆距离:
代码语言:sql
复制

SELECT

代码语言:txt
复制
    3963.0 AS latitudes_degrees,
代码语言:txt
复制
    278.78100722718 AS longitudes_degrees,
代码语言:txt
复制
   SRID(ST_Transform(
代码语言:txt
复制
       ST_GeogFromText('POINT(' || latitudes_degrees || ' ' || longitudes_degrees || ')'),
代码语言:txt
复制
       '4326'
代码语言:txt
复制
   )) AS geographic_coordinates_wgs84,
代码语言:txt
复制
   ST_Distance(
代码语言:txt
复制
     ST_Point(0, 0), -- 起始点
代码语言:txt
复制
     ST_Point(3.986022988749895, 14.62283707249677) -- 终点
代码语言:txt
复制
   )/ 1000000 AS distance_wgs84

FROM

代码语言:txt
复制
  6459796267269249510 TABLE_ID;
代码语言:txt
复制

最后,使用 PostGIS 的 ST_Within() 函数,找出距离为 0 的纬度/长度值:

代码语言:sql
复制
WITH
    -- 获取范围
    spatial AS (
        SELECT
           DISTINCT ST_Point(0, 0) AS point
        FROM
           table_id
        WHERE
           ST_Within(
               ST_Extent(table_id) -- 获取完整的地理范围
           )
    )

SELECT
    NULL
FROM
    TABLE_ID
WHERE
    -- 计算距离并判断位于某个距离/纬度/点之内
    ST_Distance(spatial.point, ST_Point(0, 0)) <= distance_wgs84;

以上代码将计算 PostGIS 中的实际(大圆)距离。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

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

需求和背景 在已有大量经纬度坐标点的情况下,给定一组经纬度如何快速定位到附近的POI有哪些? 现在使用经纬度转geohash的算法,将二维的距离运算转换为like前缀匹配。...点POINT类型和距离 点POINT类型的数据结构为POINT(0 0),正好可以用作存储经纬度。...,使用pg的字符串拼接符号||,POINT经纬度之间要留空格。...最后一种坐标转换的计算方法, 参考PostGIS 坐标转换(SRID)的边界问题引发的专业知识 - ST_Transform 建议国内不要使用马萨诸塞州的投影平面,会使得距离计算不够准确。...这样的椭球体具有特点: 可以量化计算的。具有长半轴,短半轴,偏心率。 以下几行便是Krasovsky_1940椭球及其相应参数。

3.7K20

【YashanDB 知识库】为什么 YashanDB 只有 Geometry 类型,没有 Geogrephy 类型

● PostGis 的地理数据类型:Geometry 和 Geogrephy● YashanDB 的地理数据类型:Geometry,但是兼顾 PostGis 两种坐标系,通过指定 Srid 来实现两种数据类型的转换...函数,但是 YashanDB 的 ST_Distance 函数可以根据 SRID 自动识别需要计算的是笛卡尔坐标系下的距离,还是基于地理坐标系的圆弧距离,在 YashanDB 下计算圆弧距离用的是椭球坐标系而不是球面坐标系...在使用 st_distance 函数计算两个地理位置距离的操作中,同一条 sql 语句在 pgsql 和 yasdb****上计算的结果不一致:YashanDB:PostGis:主要原因:pgsql 不根据...SRID 来区分经纬度还是投影坐标,需要用对应的函数显式声明,GeomFromText 生成的就是 geometry,GeogFromText 生成的就是 geography,否则 pgsql 会按照投影坐标系来计算两地之间的直线距离...,而不是弧度距离,而 yasdb 是根据 SRID 来区分是 geometry 还是 geography 的。

6210
  • POSTGIS 总结

    各种数据库实际实现的空间索引差异很大,最常见的实现是R-tree(在PostGIS中使用),但在其他空间数据库中也有基于四叉树(Quadtrees)的实现和基于网格的索引(grid-based indexes...(text)表示形式转换为内部表示形式 请注意,除了具有几何图形表示形式的文本参数外,还可以指定一个提供几何图形SRID的数字参数。...这对于实际报告几何图形之间的距离非常有用 ST_DWithin(),测试两个几何图形之间的距离是否在某个范围之内, 3.4 geography类型 ST_AsText(geography) returns...与直觉相反,执行空间索引搜索并不总是更快:如果搜索将返回表中的每条记录,则遍历索引树以获取每条记录实际上比从一开始线性读取整个表要慢(注意这句话)。...图形的实际形状相同,则图形相等 8.3 等边界框(=) 在最坏的情况下,需要精确相等来比较几何图形中的每个顶点以确定相等。这可能会比较慢,并且可能不适合数量大的几何图形。

    6.2K10

    超融合时序数据库YMatrixDB与PostGIS案例

    YMatrix适用于各种规模设备的数据融合与物联网时序应用场景,本案例以具体的案例来说明YMatrix在PostGIS中的数据加载、处理和分析的能力以及时空数据的具体使用方法,首先我们先了解下PostGIS...PostGIS的特点PostGIS 具有强大的功能,具有以下的特点PostGIS支持空间数据类型,包括点(POINT)、线(LINESTRING)、面(POLYGON)、多点 (MULTIPOINT)、...postgis扩展,postgis适用于当前session数据库,如果其他的数据库使用,请切换到其他数据库中再次创建即可。...计算两点之间的距离-- 两个点之间的距离,距离单位是mselect ST_Distance(ST_GeographyFromText('SRID=4326;POINT(114.01729922.537126...,来根据该经纬度的位置统计出租车的数量。

    1.8K30

    超融合时序数据库YMatrixDB与PostGIS案例

    YMatrix适用于各种规模设备的数据融合与物联网时序应用场景,本案例以具体的案例来说明YMatrix在PostGIS中的数据加载、处理和分析的能力以及时空数据的具体使用方法,首先我们先了解下PostGIS...PostGIS的特点 1、PostGIS 具有强大的功能,具有以下的特点 2、PostGIS支持空间数据类型,包括点(POINT)、线(LINESTRING)、面(POLYGON)、多点 (MULTIPOINT...2、其中f_table_schema字段表示的是空间表所在的模式,f_table_name字段表示的是空间表的表名,f_geometry_column字段表示的是该空间表中几何字段的名称,srid字段表示的是该空间表的空间参考...计算两点之间的距离 -- 两个点之间的距离,距离单位是mselect ST_Distance(ST_GeographyFromText('SRID=4326;POINT(114.017299 22.537126...,来根据该经纬度的位置统计出租车的数量。

    1.5K10

    空间索引 - 各数据库空间索引使用报告

    或 lat 列上创建普通索引,假设是 lon 列,那么通过 lon 列查找到同一经度的数据后,还要在此基础上过滤掉纬度差异过大的数据。...如果在 lon,lat 上创建多列索引,查询到同一经度、纬度相近的数据固然快,但附近的点并不只是经度相同。 如此下来,就要用到空间索引了。...建表时要指定其 SRID (空间参考标识符, 是与特定坐标系、容差和分辨率关联的唯一标识符) 值,以经纬度存储用 4326; 例如 loc geography(point, 4326),另外将数据转为...来切换是否显示命令执行时间; 结论 postgreSQL 对空间查询的支持非常灵活,足以支持多种复杂的空间查询,PostGIS 能计算不同投影坐标系下的真实空间距离,且查询效率极高,在大量数据时也不会像...参考: PgSQL · 功能分析 · PostGIS 在 O2O应用中的优势 PostgreSQL 全表 全字段 模糊查询的毫秒级高效实现 MySQL 介绍 Mysql 的重要性和强大不必多言,它的存储引擎

    7.6K81

    PostGIS空间数据库简明教程

    在这种情况下,PostGIS 将不允许在同一列中插入其他几何类型。 这始终是存储数据的首选方式,因为某些操作希望几何图形具有相同的类型。...48, 4326));另一个常用的操作是距离计算,它通常用于确定哪些对象位于地图上给定点的附近。...它包括有关坐标系的信息、(0, 0) 点在地球上的位置、坐标的分辨率以及地图上的坐标如何与地球上的实际点相对应。...所以我们总是需要知道进入系统的数据的 SRID。PostGIS 在涉及 SRID 时非常灵活。 在上面的示例中,我们创建了一个表“building”,其中包含一个没有指定 SRID 的几何列。...这意味着 PostGIS 将允许插入具有任何 SRID 的多边形。 在我们无法预测或更改传入数据的 SRID 的情况下,这有时很有用,甚至是必要的,但应尽可能避免。

    3.1K30

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

    所有投影的共同之处在于,它们将(地球)转换为平面笛卡尔坐标系。 使用投影特别简单,PostGIS提供了ST_SRID(geometry)和ST_SetSRID(geometry,SRID)函数。...3.2 缓冲区 缓冲区操作在GIS工作流中很常见,在PostGIS中也可以进行缓冲区操作。...比如你以你大哥的身高为参考,计算你比他高了多少,判断你有没有长高(前提是你哥不长个了,误~) 具体可以看如下例子。 下图是线性参考在交通网中实际的应用,红色的就是线性参考。...—— 栅格的列数和行数 upperleftx、upperlefty —— 对应空间坐标系中栅格左上角的坐标 scalex、scaley —— 单个像元的宽度和长度(单位等同于空间参考坐标系的单位)...srid —— 空间参考坐标系,默认被设置为0。 pixelsize —— 单个像元的宽度和长度。当scalex和scaley相等时,就可以直接使用这个参数设置像元大小。 效果如下

    7.7K50

    PostGIS特性

    3、PostGIS提供简单的空间分析函数(如Area和Length)同时也提供其他一些具有复杂分析功能的函数,比如Distance。...7、数据库坐标变换 数据库中的几何类型可以通过Transform函数从一种投影系变换到另一种投影系中。...在OpenGIS中的几何类型都将SRID作为自身结构的一部分,但不知什么原因,在OpenGIS的SFSQL规范中,并没有引入Transform。...8、球体长度运算 存储在普通地理坐标系中的集合类型如果不进行坐标变换是无法进行程度运算的,OpenGIS所提供的坐标变换使得积累类型的程度计算变成可能。...11、栅格数据类型 PostGIS通过一种新的数据类型片,提供对于大的栅格数据对象的存储。片由以下几个部分组成:包裹矩形框、SRID、类型和一个字节序列。

    1.7K30

    【实战】如何通过PostGIS实现附近的人

    |导言:PostGIS是业界功能最全面,能力最强大的空间地理数据库引擎。现实业务开发中,经常会遇到有附近的某某的需求,如何快速实现呢,PostGIS+PostgreSQL可以帮到你。...本文就讲解如何通过PostGIS实现附近的对象这个功能,实际很简单就一条SQL可以搞定。...第一步:创建插件,登录到数据库实例中,在业务database执行如下命令: \c test CREATE EXTENSION postgis; CREATE EXTENSION postgis_topology...此处用 天安门广场的坐标作为示例:116.404177,39.909652 第五步:明确好要查询的坐标,就直接在数据库中找到这个坐标最近的5个对象,并且输出这五个对象离此地的距离,此处单位是 百公里。...=4326;POINT(116.404177 39.909652)'::geometry limit 5; 第六步:查看此对象 1000米以内的所有对象与距离: select uid, name, ST_AsText

    2.1K40

    如何利用现代化数据栈高效处理地理信息数据

    由于每个卫星和我们的距离不同,因此它们同一时刻发送的信标会在微弱的时间上先后抵达我们的设备上。这样我们就有了带有延迟的信标信号,每一个延迟是可以被看作是一个距离。...不同 SRID 值代表了将几何体映射到坐标系中的不同方式。几何体本身的空间数据结合 SRID 就可以具体定位这个几何体在坐标系中的位置。 下图简单演示了有无 SRID 得差异。...某些数据库和空间类型(如 PostgreSQL 中的 PostGIS 几何和地理或 Microsoft SQL Server 中的地理类型)使用预定义的 EPSG 代码子集,只可使用具有这些 SRID...利用 ElasticSearch 强大的全文索引能力,应用可以直接对 ElasticSearch 中存储的地理信息数据进行全文检索 可以看到采用 CloudCanal 以后得现代化数据栈处理地理信息数据具有如下好处...在实际情况中为了保障业务运行中对于实时数据同步的稳定性 CloudCanal 采用了多种方式来实现。

    1.1K20

    GIS坐标系测绘原理:大地水准面基准面参考椭球体EPSGSRIWKT

    但两者在数学理论上并无本质区别,都是矩阵P,只是P中的元素不同罢了。 我们的地图,总得画在纸上,在显示器上吧,不然到处拎着地球仪?地球上的点是用经纬度表示的,纬度越高的地方,1度的经度的距离就越短。...那么,问题来了,地球表面是曲面,而且经纬度与长度距离并不是简单的比例关系,怎样画到平面上?答案是,投影算法。好,问题又来了,投影算法哪家强?...没有角度变形,经线长度比和纬线长度比相等。适于制作沿纬线分布的中纬度地区中、小比例尺地图。市面上的中国地图应该就是用这种投影的。...OGC标准中的参数SRID,也是指的空间参考系统的ID,与EPSG一致,即: OGC标准中空间参照系统的SRID与EPSG的空间参照系统ID相一致。...每个空间实例都有一个空间引用标识符 (SRID) SRID 对应于基于特定椭圆体的空间引用系统,可用于平面球体映射或圆球映射 从两个空间数据实例派生的任何空间方法的结果仅在这两个实例具有相同的 SRID

    4.9K11

    构建自己的地理信息空间数据库及与客户端简单交互

    最重要的只要接触过SQL语言,就可以利用postgis的SQL语法便捷的操纵装载着空间信息的数据框(数据表),这些二维表除了被设定了一个特殊的空间地理信息字段(带有空间投影信息、经纬度信息等)之外,与主流数据管理系统所定义的各种字段并无两样...; 5、上一步完成之后,即可通过postgis安装目录中的PostGIS 2.0 Shapefile and DBF Loader Exporter工具来手动导入本地的shp文件。...可以看到地理信息列在postgis中已经被编码成一组特殊数字,而在R中的sf对象中则是嵌套列表,在Python的GeoDataFrame中则是特殊的geomtry列。...使用geopandas包中提供的postgis接口函数,导入engine连接池mytest库中的bou2_4p表所有数据。...最后利用pandas封装的sqlalchemy写出函数,将刚才规范过之后的表china_map写入postgis库中。

    6.1K20

    GIS数据漫谈(六)— 投影坐标系统

    地“球”被投影到“平面”后,还有一个最实际的功能就是便于测量。因为投影后的坐标都是在直角平面坐标系下的坐标了(单位一般为米)。比如计算两点间的距离,直接用勾股定理即可。...已知球面上两点经纬度也是可以计算距离的,准确说是大圆(GreatCircle)距离,后面我们还会提到一般采用 Haversine 公式。...这条大圆(Greate Circle)即为球面上两点的最短距离。那我们在墨卡托投影的平面上连接投影后两点得到的直线(如下图蓝线)又是什么呢?...(2)等积投影球面上的面状图形轮廓经投影后,仍保持面积不变。(3)任意投影既不等角也不等积,角度、面积、长度三种变形同时存在。在任意投影中,比较常见的一种是等距投影。...所谓等距投影,并不是说这类投影不存在长度变形,而是沿某一特定方向的距离,经过投影之后保持不变。正所谓鱼和熊掌不可兼得,没有既能保持等角又能保持等积的地图投影,需要根据实际的需求和应用情况进行取舍。

    1.3K10

    如何使用postgis做一个高可用的附近的人服务?

    redis数据全部放在内存中,不支持排序。有谁用在生产环境中了,请告诉我... 本文采用postgis方案,相比较其他方案,开发人员对SQL都比较熟悉。...因为ST_Transform是不走索引的,距离排序要全表扫,代价太大 ST_X,ST_Y等,将坐标转化为可读的经纬度,而不是0101000020E61000005C5E792FA2075D4026BC259C750C4440...用户的每次请求都需要实际的计算,这注定了CPU将成为系统的主要争夺点。由于RDBMS的特性,在内存有限的环境中,IO也会成为瓶颈,建议有条件的尽量挂载SSD硬盘。...路由表可以使用geohash进行分块或者按照实际的城市区域代码进行分片映射。...这种模式有很多好处,比如你可以订阅一份数据专门去做用户的轨迹服务 PgRouter 将经纬度转化为geohash,根据路由表信息,定位到pg集群中的一批节点,进行查询计算 节点的启停、主从关系,使用repmgr

    2.7K50

    根据两点的经纬度计算距离_经纬度两点距离

    地球是在不停地绕地轴旋转(地轴是一根通过地球南北两极和地球中心的假想线),在地球中腰画一个与地轴垂直的大圆圈,使圈上的每一点都和南北两极的距离相等,这个圆圈就叫作“赤道”。...纬度线投射在图上看似水平的平行线,但实际上是不同半径的圆。有相同特定纬度的所有位置都在同一个纬线上。 赤道的纬度为0°,将行星平分为南半球和北半球。...纬度1秒的长度 地球的子午线总长度大约40008km。...结果是km…… 在实际应用当中,一般是通过一个个体的邮政编码来查找该邮政编码对应的地区中心的经纬度,然 后再根据这些经纬度来计算彼此的距离,从而估算出某些群体之间的大致距离范围(比如酒店旅客的分布范围...纬度差一度就简单了,因为经线是大圆,和纬度无关 = πR/180=111.319491 km */ // 获取两个位置点之间的相对距离 // 单位KM double GetDistance(GoToLocation

    2.3K20

    Python学习——库Geopy用法之经纬度坐标转换、经纬度距离计算

    转换原理:借助第三方API平台,为了方便,Geopy将市面上提供经纬度转换的第三方平台的接口都分别封装在一个类中,借助Geopy模块来调用。...地理编码 使用地理编码功能时,需要借助Geopy中的geocoders模块,Geopy把所有第三方API封装到Geocoders中。...distance 中 计算距离有两种:大圆距离与大地线距离(默认,更精确)。...大圆算法将地球简化为一个圆球,其计算的距离是球面上过两点的大圆距离。 大地线使用目前国际通用的方法,用旋转椭球面表示地球,其计算的是两点在椭球面上的最短距离。...大圆距离计算时间大约只有前者的1/20. 2.3.2 大圆距离 gc = distance.great_circle((45.768189, 126.6212835), (39.907359, 116.3912630

    5.4K51

    如何在Ubuntu 14.04上安装和配置PostGIS

    PostGIS允许您使用几何和地理数据类型存储空间数据,使用空间函数执行空间查询以确定区域,距离,长度和周长,并在数据上创建空间索引以加速空间查询。...虽然此存储库中的PostGIS软件包可能并不总是最新版本,但它维护得很好,并且无需从源代码编译PostGIS。...因此,要安装PostGIS,我们会将此存储库添加到我们的源中,然后使用我们的包管理器进行安装。...首先,shared_buffers应该更改为服务器RAM的75%左右。200MB对于具有512MB RAM的服务器来说,这是一个很好的价值。...我们正在与国家及其不规则边界打交道,因此我们数据库中的每个国家都没有单一的纬度值。因此,为了获得每个国家的纬度,我们首先使用PostGIS的ST_Centroid功能找出每个国家的质心。

    2.5K00

    python与地理空间分析(二)矢量数据

    距离测量是地理空间分析中的一个非常重要的功能,在气象数据处理中也会经常用到,例如查找最临近的气象站点、气象站点数据与其他数据匹配等操作。...把地球当作一个没有曲率的平面模型,计算两点的距离即计算直线的距离,根据坐标利用勾股定理就可以计算,但是地球本身是具有曲率的,勾股定理的计算,比较简单和快速,在尺度上可以得到一个在可接受误差范围的距离,对精度有一定要求的并不能满足...其实我们理解的直线就是利用勾股定理计算的地图上的两点间的距离,而实际中的航线是计算的大圆距离也是球面距离。...大圆距离是指球体把桌面上两点之间的距离,球面上任意两点以及球心可以确定唯一的大圆,在这个大圆上连接这两点的较短的弧的长度就是大圆距离。计算大圆距离常用的算法就是半正矢公式。...坐标转换 在气象数据中,常用到的投影是UTM投影,且一般是等距离投影,而一些数据中为了方便计算,常用等经纬度的投影,这就需要坐标之间的转换。常用的工具包是utm包: ?

    3.6K21
    领券