zoukankan      html  css  js  c++  java
  • 基于postgis时空查询-记录而已

    所有道路的总长度是多少(以公里为单位)?先设置空间坐标系,然后利用投影坐标系转换

    select UpdateGeometrySRID('road_table', 'osm_geom', 4326);

    SELECT sum(ST_Length(ST_Transform(osm_geom,2436)))/1000 AS km_roads from road_table;

    空间查询更有效

    SELECT geom as result_out FROM node_table WHERE ST_DWithin(geom, 'POINT(116.3211279 39.984223)', 0.002);

    操作查询结果

    SELECT ST_DWithin(geom, 'SRID=0;POINT(116.3211279 39.984223)', 0.0015) as result_bool FROM node_table WHERE ST_DWithin(geom, 'SRID=0;POINT(116.3211279 39.984223)', 0.002);

    多条件查询—空间查询

    SELECT geom as result_bool FROM node_table WHERE ST_DWithin(geom, 'SRID=0;POINT(116.3211279 39.984223)', 0.002) and ST_DWithin(geom, ' SRID=0;POINT(116.3211279 39.984223)', 0.0015);

    多条件查询--时间范围查询

    SELECT geom FROM node_table where tstamp < '2021-03-15 21:45:46' and '2021-03-15 21:45:43' < tstamp;

    多条件查询—时空查询

    select

        ST_DWithin(time_result.geom, 'SRID=0;POINT(116.3211279 39.984223)', 0.002) as result_bool

    from (

        select

           node_id, name, geom

        from node_table

        WHERE node_table.tstamp < '2021-03-15 21:45:46' and '2021-03-15 21:45:43' < node_table.tstamp

    ) as time_result;

    多条件查询—时空查询--最佳 给定经纬度+度数阈值(存储默时没社坐标系,即没有SRID)

    select

        node_id, name, geom

    from node_table

    WHERE node_table.tstamp < '2021-03-15 21:45:46' and '2021-03-15 21:45:43' < node_table.tstamp and ST_DWithin(node_table.geom, 'SRID=0;POINT(116.3211279 39.984223)', 0.0002)

    多条件查询—时空查询--最佳 给定经纬度+距离阈值

    select UpdateGeometrySRID('node_table', 'geom', 4326);

    select

        node_id, name, geom

    from node_table

    WHERE node_table.tstamp < '2021-03-15 21:45:46' and '2021-03-15 21:45:43' < node_table.tstamp

        and ST_DWithin(ST_Transform(node_table.geom,2436), ST_Transform(ST_GeomFromEWKT('SRID=4326;POINT(116.3211279 39.984223)'),2436), 265.5);

    用到了坐标转换ST_Transform

    ST_Transform(ST_GeomFromEWKT('SRID=4326;POINT(116.3211279 39.984223)'),2436)

    ST_Transform(geom,2436)

    空间查询--给定经纬度+距离阈值

    select

        node_id, name, geom

    from node_table

    WHERE ST_DWithin(ST_Transform(node_table.geom,2436), ST_Transform(ST_GeomFromEWKT('SRID=4326;POINT(116.3211279 39.984223)'),2436), 365.5);

    坐标系SRID1为:2249(投影坐标系);坐标系SRID2为:4326(地理坐标系)。

    个人学习记录
  • 相关阅读:
    1月5日学习记录||1月8日学习
    1.1学习记录|1.2日学习记录|1.3日
    RNA-seq数据为什么要去噪
    12.16日学习记录
    12.15学习记录
    transformer和bert简要学习
    关系抽取学习
    12.14周六学习记录
    12.5日学习记录
    12.4周三学习记录
  • 原文地址:https://www.cnblogs.com/jeshy/p/14546313.html
Copyright © 2011-2022 走看看