1.1.1.1 最短路径规划
语法 :
1.
功能 :
•
传入起始几何对象/终点几何对象和路网,求两个几何对象/起始几何对象到终点列所有几何对象中在路网间的最短路径 ,传入的几何对象可以是:点Point/线linestr/面ploygon
参数:
•
satrtGeometry : 起始几何对象(可以根据UDF构建)
•
queryGeometry:终点几何对象或者终点几何在表中对应的字段名
•
Json(可选)
Json参数说明
•
rnTableName : 用户指定路网表名,如果没指定则使用内置全国路网表 (optional);
•
candidateDistance: 起始点开始搜索路网上最近的路段的距离(optional),没有指定的话默认为300米;
•
weight:fastest/shortest,默认是shortest,求最短路径/最快路径
•
directed:true/false,有向或者无向,默认有向 (optional)
•
highway:true/false,是否走高速路,默认true (optinal)
•
k:如果查询的终点是一列geometry,则距离最短的前K个geometry对应的最短路径,默认为1(optional)
示例
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:
•
concave:true/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.
1.1.1.3.3
根据可达区域判断在特定时间内能触达的 POI
功能
•
通过reachable hull对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)
注意
•
传入参数点的方法只能传入点所在表的列名,不支持单独传入点对象的方法
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.
2.
3.
4.
1.1.1.4.3 栅格点索引
语法
1. ST_gridIndexByPoint(lng, lat,
grid, row_number, col_number)
功能
•
给定一个点,点所在的grid(长方形Polygon)
input
•
lng: 点的longitude Double
•
lat: 点的latitude Double
•
grid: polygon
•
row_number:切割grid的行数 integer
•
col_number: 切割grid的列数 integer
output
•
点所在grid
Example
5.
1.1.1.5 网格函数
1.1.1.5.1 网格拆分
语法
1. st_gridIndex(point_column, grid,
row_number, col_number)
功能 :
•
给定一个点,点所在的grid(长方形Polygon)
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.
2.
3.
4.
1.1.1.5.2 网格索引
语法
1.
功能 :
•
给定一个点,点所在的grid(长方形Polygon),以及等分grid的行数和列数,返回点在grid的索引,补充st_gridIndex方法,支持单独传入点对象的方法
input
•
•
•
•
•
•
index order 00 01 02 03 04... 10 11 12 13 14... 20 21 22 23 24... 30 31 32 33 34... |
output
•
Example
1.