开发者社区 > 博文 > 【JUSTQL Reference】DAL介绍之地图操作
分享
  • 打开微信扫码分享

  • 点击前往QQ分享

  • 点击前往微博分享

  • 点击复制链接

【JUSTQL Reference】DAL介绍之地图操作

  • 京东城市JUST团队
  • 2021-01-26
  • IP归属:未知
  • 113080浏览

1.1.1.1 最短路径规划

语法

1.  SELECT st_shortestPath(startGeomtry,queryPt/queryPt列名, Json(optional))

功能

          传入起始几何对象/终点几何对象和路网,求两个几何对象/起始几何对象到终点列所有几何对象中在路网间的最短路径 ,传入的几何对象可以是:点Point/线linestr/ploygon

参数:

          satrtGeometry : 起始几何对象(可以根据UDF构建)

          queryGeometry:终点几何对象或者终点几何在表中对应的字段名

          Json(可选)

Json参数说明

          rnTableName : 用户指定路网表名,如果没指定则使用内置全国路网表 optional);

          candidateDistance: 起始点开始搜索路网上最近的路段的距离(optional),没有指定的话默认为300米;

          weightfastest/shortest,默认是shortest,求最短路径/最快路径 optional

          directed:true/false,有向或者无向,默认有向 optional

          highway:true/false,是否走高速路,默认true optinal

          k如果查询的终点是一列geometry,则距离最短的前Kgeometry对应的最短路径,默认为1optional

示例

1.   select st_shortestPath(pt,st_geomFromWKT('POINT(114.134488 22.614742)'),{'rnTableName':'longgang_rn'} ) from longgang_points   

2.   -- 路网使用用户上传的longgan_rn路网表,查询longgang_points表中pt列的所有点到startPoint的最短距离的点对应的路径和距离  

3.     

4.   select st_shortestPath(st_geomFromWKT('POINT(114.18073 22.64801)'),st_geomFromWKT('POINT(114.134488 22.614742)'),{'rnTableName':'longgang_rn'} )    

5.   --查询单独两个点的最短路径  

 

6.   select st_shortestPath(t1.pt,st_geomFromWKT('POINT(114.134488 22.614742)'),{'candidateDistance': 600.0}) from longgang_points t1  

7.   --走内置全国路网表查询,同时指定搜索距离  

Output输出:

          shortestPath:shortest

          第一列: ‘pathIDList’ 最短路径经过所有路段ID合集

          第二列: ‘pathGeom’, 规划出来的最短路径组成的LineString

          第三列: ‘length’ , 最短距离,单位米

Output输出

          shortestPath:fastest

          第一列: ‘pathIDList’ 最短路径经过所有路段ID合集

          第二列: ‘pathGeom’, 规划出来的最短路径组成的LineString

          第三列: ‘length’ ,最快时间,单位秒

1.1.1.2 路径重规划

语法

SELECT st_rePlaningPath (array(integer,integer...),item, rnTableName)

功能

          将轨迹数据进行地图匹配,并与输入的路段ID list进行对比,看是否是在输入的ID list上行驶,若不在,并规划出返回输入的路段ID的路径规划

参数

          array(integer,integer...) 正确行驶路径的路段id list

          item 轨迹字段名

          rntableName 轨迹与路段ID list对应的路网名

示例

select st_rePlaningPath(array(44814, 44815,47640, 47714, 47715, 47647, 49654, 49655, 49620), item,'longgang_rn') from repath_traj  

-- 路网使用用户上传的longgan_rn路网表,查询repath_traj表中轨迹是否偏离输入的路段ID集合

Output输出:

          shortestPath: shortest

          第一列: ‘deviated’ 轨迹是否偏离

          第二列: ‘path_list’, 回到正常路径应该行驶的路径

1.1.1.3 可达区域查询

1.1.1.3.1 返回所有可达路段组成的凸包(convex hull或凹包

语法

1.   SELECT ST_ReachableHull(wktString/geometry, time, travelType, Json)  

功能

          从一个点或者一片区域以不同方式出发,在给定的时间内可以达到的区域合集

参数

          wktString, 出发点或者出发区域的wkt,出发区域可以是几何对象的wktString,也可以是几何对象本身(通过UDF构建)

          geometry:出发点或者出发区域的几何对象(可以通过makeGeomUDF来传入该参数);

          time:给定出行时间;

          travelType:出行方式

Json参数说明

          rnTableName:如果传入该Json参数,表明指定使用该路网表进行可达区域查询,以及搜索candidate 路段的距离;若不指定,则使用内置默认的全国路网表(需要保证账户下上传了全国路网表)以及默认300m的搜索距离

          searchDistance: 起始点开始搜索路网上最近的路段的距离(optional),没有指定的话默认为300米;

          concavetrue/false,默认是false(对应返回的是凸包convex hull),如果想返回凹包concave hull则设为true

注:用户选中库中需要有路网表,路网上传参见附录4.2.1.路网数据规范及上传示例

示例

1.  --出发区域可以是几何对象的wktString,也可以是几何对象本身(通过UDF构建)

2.  select ST_ReachableHull('POINT(114.134488 22.614742)', 900.0, 'walk', {'rnTableName':'longgang_rn''candidateDist':800.0})

3.    

4.  -- 走用户上传的longgang_rn路网表查询可达区域   

5.  select ST_ReachableHull(st_makePoint(114.134488, 22.614742), 900.0, 'walk', {'rnTableName':'longgang_rn'})

6.  --走默认内置全国路网表查询  

7.  select ST_ReachableHull(st_makePoint(114.134488, 22.614742), 900.0, 'walk')

1.1.1.3.2 结果返回所有可达路段

语法

1.   SELECT st_ReachableRoads(wktString/geometry, time, travelType, Json) 

功能

          从一个点或者一片区域以不同方式出发,在给定的时间内可以达到的所有路段合集,所有参数语法都与ReachableConvexHull一致,只是返回的结果是所有可达路段

1.   select  st_ReachableRoads(st_makePoint(114.134488, 22.614742), 900.0,'walk',{'rnTableName':'longgang_rn'})

1.1.1.3.3 根据可达区域判断在特定时间内能触达的POI

功能

          通过reachable hullpoi数据进行空间上的筛选,筛选出可触达的poi

参数:

          reachable hull + poi table(数据需要自己上传)

示例:

1.  select t1.* from poi_table t1 where st_within(t1.poi_point, st_geomFromWKT('POLYGON ((114.13797 22.60802, 114.13213 22.60813,114.12716 22.61094, 114.12928 22.61599, 114.13201 22.62031, 114.13207 22.62038,114.13231 22.62057, 114.13244 22.62066, 114.1353 22.62205, 114.13669 22.62267,114.13845 22.62183, 114.13968 22.61928, 114.13977 22.61885, 114.13982 22.61828,114.13864 22.60922, 114.13858 22.6091, 114.13797 22.60802))')) and t1.poi_type = '幼儿园'  

1.1.1.4 栅格

1.1.1.4.1 栅格切片

功能

          给定一个MBR,以及对应的切割的行数和列数,返回切割后的栅栏

Json参数解释:

           MBR的左下点和右上点的经纬度,以及切割的行数和列数

示例:

1.  select st_GridSlice({  

2.  "lowerLeftLng" : 0.0,  

3.  "lowerLeftLat" : 0.0,  

4.  "upperRightLng" : 4.0,  

5.  "upperRightLat" : 4.0,  

6.  "rowCount" : 4,  

7.  "colCount" : 4  

8.  })  

1.1.1.4.2 栅格索引

语法

1. st_gridIndex(point_column, grid, row_number, col_number)

功能

          给定一个点,点所在的grid(长方形Polygon),以及等分grid的行数和列数,返回点在grid的索引

注意

          传入参数点的方法只能传入点所在表的列名,不支持单独传入点对象的方法

input

          point_column: 点列名

          grid: polygon

           row_number:切割grid的行数 integer

           col_number: 切割grid的列数 integer

          根据传入的行数和列数将grid等分切割,切割后的每一块对应的索引如下:

index order

00 01 02 03 04...

10 11 12 13 14...

20 21 22 23 24...

30 31 32 33 34...

output

          点所在grid的索引

Example

1.   select

2.   st_GridIndex(order_position, st_makeMBR(74, 50, 125, 17), 4, 4)

3.   from

4.   common_table

1.1.1.4.3 栅格点索引

语法

1. ST_gridIndexByPoint(lng, lat, grid, row_number, col_number)

功能

          给定一个点,点所在的grid(长方形Polygon),以及等分grid的行数和列数,返回点在grid的索引,补充st_gridIndex方法,支持单独传入点对象的方法 ST_gridIndexByPoint(lng, lat, grid, row_number, col_number)

input

          lng: 点的longitude Double

           lat: 点的latitude Double

          grid: polygon

          row_number:切割grid的行数 integer

          col_number: 切割grid的列数 integer

output

          点所在grid的索引

Example

5.   select st_GridIndexByPoint(1.5, 1.5, st_makeMBR(0.0, 0.0, 4.0, 4.0), 4, 4)

1.1.1.5 网格函数

1.1.1.5.1 网格拆分

语法

1. st_gridIndex(point_column, grid, row_number, col_number)

功能

          给定一个点,点所在的grid(长方形Polygon),以及等分grid的行数和列数,返回点在grid的索引,传入参数点的方法只能传入点所在表的列名,不支持单独传入点对象的方法

input

          point_column: 点列名

          grid: polygon

          row_number:切割grid的行数 integer

          col_number: 切割grid的列数 integer

          根据传入的行数和列数将grid等分切割,切割后的每一块对应的索引如下:

index order

00 01 02 03 04...

10 11 12 13 14...

20 21 22 23 24...

30 31 32 33 34...

output

          点所在grid的索引

Example

1.   select

2.   st_GridIndex(order_position, st_makeMBR(74, 50, 125, 17), 4, 4)

3.   from

4.   common_table

1.1.1.5.2 网格索引

语法

1.   ST_gridIndexByPoint(lng, lat, grid, row_number, col_number)

功能

          给定一个点,点所在的grid(长方形Polygon),以及等分grid的行数和列数,返回点在grid的索引,补充st_gridIndex方法,支持单独传入点对象的方法

input

          lng: 点的longitude Double

          lat: 点的latitude Double

          grid: polygon

          row_number:切割grid的行数 integer

           col_number: 切割grid的列数 integer

          根据传入的行数和列数将grid等分切割,切割后的每一块对应的索引如下:

index order

00 01 02 03 04...

10 11 12 13 14...

20 21 22 23 24...

30 31 32 33 34...

output

          点所在grid的索引

Example

1.   select st_GridIndexByPoint(1.5, 1.5, st_makeMBR(0.0, 0.0, 4.0, 4.0), 4, 4)

共0条评论