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(地理坐标系)。

    个人学习记录
  • 相关阅读:
    《那些年啊,那些事——一个程序员的奋斗史》——40
    《那些年啊,那些事——一个程序员的奋斗史》——41
    《那些年啊,那些事——一个程序员的奋斗史》——42
    《那些年啊,那些事——一个程序员的奋斗史》——40
    《那些年啊,那些事——一个程序员的奋斗史》——41
    《那些年啊,那些事——一个程序员的奋斗史》——42
    《那些年啊,那些事——一个程序员的奋斗史》——40
    箭牌卫浴(帮朋友发的广告贴)
    Playing with ptrace
    [open source]通过汉字得到拼音的函数库(getpinyin)发布
  • 原文地址:https://www.cnblogs.com/jeshy/p/14546313.html
Copyright © 2011-2022 走看看