NetReverse
路网逆向NetReverse类:
- 初始化
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
flag_name
|
str
|
[1]总体参数 - 项目名称 |
'NetGen'
|
net_out_fldr
|
str
|
[1]总体参数 - 输出路网的存储目录 |
'./'
|
plain_crs
|
str
|
[1]总体参数 - 平面投影坐标系 |
'EPSG:32650'
|
net_file_type
|
str
|
[1]总体参数 - 路网的输出文件类型,shp 或者 geojson |
'shp'
|
multi_core_parse
|
bool
|
[2]路径解析、拆分参数 - 是否启用多核对二进制路径文件进行解析 |
False
|
parse_core_num
|
int
|
[2]路径解析、拆分参数 - 多核解析时使用的核数 |
2
|
ignore_head_tail
|
bool
|
[2]路径解析、拆分参数 - 是否忽略路径首尾的无名道路, 这种一般是小区内部道路 |
False
|
cut_slice
|
bool
|
[2]路径解析、拆分参数 - 拆分路段时,是否分片处理,内存不够时可以指定为True |
False
|
slice_num
|
int
|
[2]路径解析、拆分参数 - 拆分路段时,拆分为几个slice处理 |
5
|
generate_rod
|
bool
|
[2]路径解析、拆分参数 - 是否生成连杆, 只有当参数ignore_head_tail为false时该参数才生效 |
False
|
min_rod_length
|
float
|
[2]路径解析、拆分参数 - 最小连杆长度,米 |
5.0
|
restrict_region_gdf
|
GeoDataFrame
|
[2]路径解析、拆分参数 - 限制区域gdf,若传入此区域,那么仅仅只对在区域范围内的路网进行逆向 |
None
|
save_split_link
|
bool
|
[2]路径解析、拆分参数 - 是否保存拆分路径后的link层文件 |
False
|
modify_minimum_buffer
|
float
|
[3]拓扑生成参数 - 是极小间隔节点优化的buffer, m |
0.8
|
save_streets_before_modify_minimum
|
bool
|
[3]拓扑生成参数 - 是否保存优化前的结果 |
False
|
save_streets_after_modify_minimum
|
bool
|
[3]拓扑生成参数 - 是否保存优化后的结果 |
False
|
save_tpr_link
|
bool
|
[3]拓扑生成参数 - 是否保存优化后且进行方向处理的文件 |
False
|
use_tp_opt
|
bool
|
[4]拓扑优化参数 - 是否执行拓扑优化 |
True
|
limit_col_name
|
str
|
[4]拓扑优化参数 - 路段合并时,用于限制路段合并的线层属性字段(不允许有空值),默认road_name,如果你要使用其他字段来限制合并,请自定义该参数 |
'road_name'
|
ignore_dir
|
bool
|
[4]拓扑优化参数 - 路段合并时,是否忽略行车方向 |
False
|
allow_ring
|
bool
|
[4]拓扑优化参数 - 是否允许路段合并后出现环 |
False
|
restrict_angle
|
bool
|
[4]拓扑优化参数 - 是否启用最大转角限制来约束路段合并 |
True
|
restrict_length
|
bool
|
[4]拓扑优化参数 - 是否启用最大路段长度限制来约束路段合并 |
True
|
accu_l_threshold
|
float
|
[4]拓扑优化参数 - 允许的最长的路段长度,米 |
200.0
|
angle_threshold
|
float
|
[4]拓扑优化参数 - 允许的最大的路段内转角,度 |
35.0
|
min_length
|
float
|
[4]拓扑优化参数 - 允许的最小的路段长度,米 |
50.0
|
save_preliminary
|
bool
|
[4]拓扑优化参数 - 是否保留重复路段处理前的文件 |
False
|
multi_core_merge
|
bool
|
[4]拓扑优化参数 - 是否启用多进程进行路段合并 |
False
|
merge_core_num
|
int
|
[4]拓扑优化参数 - 启用几个核进行路段合并 |
2
|
save_done_topo
|
bool
|
[4]拓扑优化参数 - 是否保存拓扑优化后的路网 |
False
|
is_process_dup_link
|
bool
|
[5]重叠路段处理参数 - 是否处理重复路 |
True
|
process_dup_link_buffer
|
float
|
[5]重叠路段处理参数 - 处理重复路段所使用的buffer长度,米 |
0.8
|
dup_link_buffer_ratio
|
float
|
[5]重叠路段处理参数 - dup_link_buffer_ratio |
60.0
|
is_modify_conn
|
bool
|
[6]联通性修复参数 - 是否检查潜在的联通性问题并且进行修复 |
True
|
conn_buffer
|
float
|
[6]联通性修复参数 - 检查联通性问题时使用的检测半径大小,单位米 |
0.8
|
conn_period
|
str
|
[6]联通性修复参数 - 取值final或者start, final表示在拓扑优化之后修复联通性, start表示在拓扑优化之前修复联通性 |
'final'
|
multi_core_reverse
|
bool
|
[7]分区逆向参数 - 是否启用多进程对路网进行并行逆向计算 |
False
|
reverse_core_num
|
int
|
[7]分区逆向参数 - 逆向并行计算要启用的核数 |
2
|
Source code in src/gotrackit/netreverse/NetGen.py
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 | |
NetReverse类方法 - generate_net_from_request:
- 向开放平台请求路径后分析计算得到路网:构造OD -> 请求路径 -> 二进制存储 -> 路网生产
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
key_list
|
list[str]
|
[1]请求设置参数 - 开发者key值列表,必需参数 |
required |
binary_path_fldr
|
str
|
[1]请求设置参数 - 存储请求路径源文件的目录 |
'./'
|
traffic_mode
|
str
|
[1]请求设置参数 - 交通模式, 目前支持驾车(car)、骑行(bike)和步行(walk) |
'car'
|
wait_until_recovery
|
bool
|
[1]请求设置参数 - 如果配额超限,是否一直等待直至配额恢复 |
False
|
is_rnd_strategy
|
bool
|
[1]请求设置参数 - 是否启用随机策略 |
False
|
strategy
|
str
|
[1]请求设置参数 - 路径规划策略参数,若模式为驾车,取值请访问: https://lbs.amap.com/api/webservice/guide/api/newroute#s1;若模式为步行或骑行, 则取值为1、2、3,代表返回的方案数 |
'32'
|
cache_times
|
int
|
[1]请求设置参数 - 路径文件缓存数,即每请求cache_times次缓存一次数据到binary_path_fldr下 |
300
|
ignore_hh
|
bool
|
[1]请求设置参数 - 是否忽略时段限制进行请求 |
True
|
remove_his
|
bool
|
[1]请求设置参数 - 是否对已经请求的OD重复(指的是在请求被意外中断的情况下,od_id为判断依据)请求 |
True
|
save_log_file
|
bool
|
[1]请求设置参数 - 是否保存日志文件 |
False
|
log_fldr
|
str
|
[1]请求设置参数 - 日志文件的存储目录 |
None
|
od_file_path
|
str
|
[2]OD构造参数 - 用于请求的od文件路径,可选参数 |
None
|
od_df
|
DataFrame
|
[2]OD构造参数 - 用于请求的od数据,该参数和od_file_path任意指定一个即可,可选参数 |
None
|
region_gdf
|
GeoDataFrame
|
[2]OD构造参数 - 用于构造od的面域数据 |
None
|
od_type
|
[2]OD构造参数 - 用于构造od的方法,rand_od、region_od、diy_od |
'rand_od'
|
|
min_lng
|
float
|
[2]OD构造参数 - 矩形区域的左下角经度 |
None
|
min_lat
|
float
|
[2]OD构造参数 - 矩形区域的左下角纬度 |
None
|
w
|
float
|
[2]OD构造参数 - 矩形区域的宽度,米 |
2000
|
h
|
float
|
[2]OD构造参数 - 矩形区域的高度,米 |
2000
|
od_num
|
int
|
[2]OD构造参数 - 请求的od数,od数越多,请求的路径就越多,路网覆盖率就越完整,只有od_type为rand_od时起效 |
100
|
gap_n
|
int
|
[2]OD构造参数 - 横纵向网格个数,只有od_type为rand_od时起效 |
1000
|
min_od_length
|
float
|
[2]OD构造参数 - od之间最短直线距离,只有od_type为rand_od时起效 |
1200.0
|
boundary_buffer
|
float
|
[2]OD构造参数 - 区域边界buffer,米, |
2000
|
Returns:
| Type | Description |
|---|---|
None
|
直接在net_out_fldr下生成路网 |
Source code in src/gotrackit/netreverse/NetGen.py
171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 | |
NetReverse类方法 - generate_net_from_pickle:
- 解析二进制路径文件, 然后生产路网
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
binary_path_fldr
|
str
|
路径源文件的存储目录,必须参数 |
required |
pickle_file_name_list
|
list[str]
|
需要解析的路径文件名称列表,如果不传入则默认解析所有文件 |
None
|
Returns:
| Type | Description |
|---|---|
None
|
None, 直接在net_out_fldr下生成路网 |
Source code in src/gotrackit/netreverse/NetGen.py
227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 | |
NetReverse类方法 - generate_net_from_path_gdf:
- 从线层文件计算得到路网
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
path_gdf
|
GeoDataFrame
|
线层gdf数据,必须参数, 坐标系必须为EPSG:4326 |
required |
slice_num
|
int
|
拆分路段时,拆分为几个slice处理 |
1
|
attr_name_list
|
list
|
限定字段列表 |
None
|
cut_slice
|
bool
|
拆分路段时,是否分片处理,内存不够时可以指定为True |
False
|
Returns:
| Type | Description |
|---|---|
|
直接在net_out_fldr下生成路网 |
Source code in src/gotrackit/netreverse/NetGen.py
258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 | |
NetReverse类方法 - topology_optimization:
- 拓扑优化:对标准路网进行路段合并、重复路段消除
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
link_gdf
|
GeoDataFrame
|
线层gdf, 坐标系必须为EPSG:4326 |
required |
node_gdf
|
GeoDataFrame
|
点层gdf, 坐标系必须为EPSG:4326 |
required |
Returns:
| Type | Description |
|---|---|
tuple[GeoDataFrame, GeoDataFrame, dict]
|
线层gdf, 点层gdf, 修复点位空间信息 |
Source code in src/gotrackit/netreverse/NetGen.py
335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 | |
NetReverse类静态方法 - create_node_from_link:
- 生产点线拓扑关联, 更新线层信息, 同时生产点层
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
link_gdf
|
GeoDataFrame
|
路网线层gdf数据,必需数据 |
required |
out_fldr
|
str | None
|
输出文件的存储目录 |
'./'
|
update_link_field_list
|
list[str]
|
需要更新的字段列表, 生产拓扑关联后需要更新的线层基本字段,从(link_id, from_node, to_node, dir, length)中选取 |
None
|
using_from_to
|
bool
|
是否使用输入线层中的from_node字段和to_node字段 |
False
|
drop_dup_ft
|
bool
|
是否删除(from_node, to_node)重合的link |
True
|
fill_dir
|
int
|
用于填充dir方向字段的值,如果update_link_field_list中包含dir字段,那么该参数需要传入值,允许的值为1或者0 |
0
|
plain_crs
|
str
|
所使用的平面投影坐标系 |
'EPSG:3857'
|
ignore_merge_rule
|
bool
|
是否忽略极小间隔优化的规则 |
True
|
execute_modify
|
bool
|
是否执行极小间隔节点优化 |
True
|
modify_minimum_buffer
|
float
|
极小间隔节点优化的buffer, 米 |
0.8
|
auxiliary_judge_field
|
str
|
用于判断是否可以合并的线层字段, 只有当ignore_merge_rule为False才起效 |
None
|
save_streets_before_modify_minimum
|
bool
|
是否存储极小间隔优化前的数据 |
False
|
save_streets_after_modify_minimum
|
bool
|
是否存储极小间隔优化后的数据 |
True
|
net_file_type
|
str
|
输出路网文件的存储类型,shp或者geojson |
'shp'
|
Returns:
| Type | Description |
|---|---|
tuple[GeoDataFrame, GeoDataFrame, GeoDataFrame]
|
线层gdf, 点层gdf |
Source code in src/gotrackit/netreverse/NetGen.py
284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 | |
NetReverse类方法 - request_path:
- 请求路径存储为二进制文件:构造OD -> 请求 -> 二进制存储
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
key_list
|
list[str]
|
开发者key值列表,必需参数 |
required |
traffic_mode
|
str
|
交通模式, 目前支持驾车(car)、骑行(bike)和步行(walk) |
'car'
|
binary_path_fldr
|
str
|
存储请求路径源文件的目录 |
'./'
|
wait_until_recovery
|
bool
|
如果配额超限,是否一直等待直至配额恢复 |
False
|
is_rnd_strategy
|
bool
|
是否启用随机策略 |
False
|
strategy
|
str
|
路径规划策略参数,若模式为驾车,取值请访问: https://lbs.amap.com/api/webservice/guide/api/newroute#s1;若模式为步行或骑行, 则取值为1、2、3,代表返回的方案数 |
'32'
|
cache_times
|
int
|
路径文件缓存数,即每请求cache_times次缓存一次数据到binary_path_fldr下 |
300
|
ignore_hh
|
bool
|
是否忽略时段限制进行请求 |
True
|
remove_his
|
bool
|
是否对已经请求的OD重复(指的是在请求被意外中断的情况下,od_id为判断依据)请求 |
True
|
save_log_file
|
bool
|
是否保存日志文件 |
False
|
log_fldr
|
str
|
日志文件的存储目录 |
None
|
od_file_path
|
str
|
(2.OD构造参数)用于请求的od文件路径,可选参数 |
None
|
od_df
|
DataFrame
|
(2.OD构造参数)用于请求的od数据,该参数和od_file_path任意指定一个即可,可选参数 |
None
|
region_gdf
|
GeoDataFrame
|
(2.OD构造参数)用于构造od的面域数据, EPSG:4326 |
None
|
od_type
|
str
|
(2.OD构造参数)用于构造od的方法,rand_od、region_od、diy_od |
'rand_od'
|
min_lng
|
float
|
(2.OD构造参数)矩形区域的左下角经度 |
None
|
min_lat
|
float
|
(2.OD构造参数)矩形区域的左下角纬度 |
None
|
w
|
float
|
(2.OD构造参数)矩形区域的宽度,米 |
2000
|
h
|
float
|
(2.OD构造参数)矩形区域的高度,米 |
2000
|
od_num
|
int
|
(2.OD构造参数)请求的od数,od数越多,请求的路径就越多,路网覆盖率就越完整,只有od_type为rand_od时起效 |
100
|
gap_n
|
int
|
(2.OD构造参数)横纵向网格个数,只有od_type为rand_od时起效 |
1000
|
min_od_length
|
float
|
(2.OD构造参数)od之间最短直线距离,只有od_type为rand_od时起效 |
1200.0
|
boundary_buffer
|
float
|
(2.OD构造参数)区域边界buffer,米, |
2000
|
Returns:
| Type | Description |
|---|---|
tuple[bool, list[str]]
|
if_end_request, new_file_list |
Source code in src/gotrackit/netreverse/NetGen.py
440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 | |
NetReverse类方法 - modify_conn:
- 联通性修复
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
link_gdf
|
GeoDataFrame
|
线层gdf, 要求输入必须为EPSG:4326 |
required |
node_gdf
|
GeoDataFrame
|
点层gdf, 要求输入必须为EPSG:4326 |
required |
drop_circle
|
bool
|
是否删除环 |
True
|
drop_dup_ft
|
bool
|
是否删除相同(from_node, to_node)的路段 |
True
|
use_geometry
|
bool
|
删除相同(from_node, to_node)的路段时,否启用几何检测 |
False
|
book_mark_name
|
str
|
空间书签名称 |
'test'
|
generate_mark
|
bool
|
是否生成空间书签,在net_out_fldr下生成 |
False
|
link_name_field
|
str
|
参数暂未启用 |
'road_name'
|
Returns:
| Type | Description |
|---|---|
tuple[GeoDataFrame, GeoDataFrame]
|
线层gdf, 点层gdf, 修复点位空间信息 |
Source code in src/gotrackit/netreverse/NetGen.py
595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 | |
NetReverse类静态方法 - clean_link_geo:
- 清洗线层:去除Z坐标、去除multi类型、拆分自相交对象、去除线层重叠折点
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
gdf
|
GeoDataFrame
|
线层gdf |
required |
plain_crs
|
str
|
平面投影坐标系 |
'EPSG:32650'
|
l_threshold
|
float
|
重叠折点检测阈值, 米 |
0.5
|
Returns:
| Type | Description |
|---|---|
GeoDataFrame
|
线层gdf |
Source code in src/gotrackit/netreverse/NetGen.py
649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 | |
NetReverse类静态方法 - remapping_link_node_id:
- ID重映射:为link、node层映射新的ID编号, 在原对象上直接修改
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
link_gdf
|
GeoDataFrame or DataFrame
|
线层gdf |
required |
node_gdf
|
GeoDataFrame or DataFrame
|
点层gdf |
required |
start_link_id
|
int
|
起始link_id |
1
|
start_node_id
|
int
|
起始node_id |
1
|
Returns:
| Type | Description |
|---|---|
|
None |
Source code in src/gotrackit/netreverse/NetGen.py
665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 | |
NetReverse类静态方法 - divide_links:
- 对标准路网执行划分(打断):路段将长度大于divide_l的路段进行切分,同时更新点层。该函数会将双向行驶路段合并为dir=0的单条路段
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
link_gdf
|
GeoDataFrame
|
线层gdf, 要求输入必须为EPSG:4326 |
required |
node_gdf
|
GeoDataFrame
|
点层gdf, 要求输入必须为EPSG:4326 |
required |
plain_crs
|
str
|
平面投影坐标系 |
'EPSG:3857'
|
divide_l
|
float
|
所有长度(米)大于divide_l的路段都将被打断 |
70.0
|
min_l
|
float
|
某次打断后如果剩下的路段长度小于min_l, 那么此次打断将不被允许 |
1.0
|
Returns:
| Type | Description |
|---|---|
tuple[GeoDataFrame, GeoDataFrame]
|
线层gdf, 点层gdf |
Source code in src/gotrackit/netreverse/NetGen.py
683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 | |
NetReverse类静态方法 - circle_process:
- 处理标准路网里面的环路:将环路进行打断
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
link_gdf
|
GeoDataFrame
|
线层gdf, 要求输入必须为EPSG:4326 |
required |
node_gdf
|
GeoDataFrame
|
点层gdf, 要求输入必须为EPSG:4326 |
required |
plain_crs
|
str
|
平面投影坐标系 |
'EPSG:3857'
|
Returns:
| Type | Description |
|---|---|
tuple[GeoDataFrame, GeoDataFrame]
|
线层gdf, 点层gdf |
Source code in src/gotrackit/netreverse/NetGen.py
717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 | |
NetReverse类方法 - redivide_link_node:
- 路网重塑:对线层文件进行重塑(折点拆分 -> 拓扑优化 -> 重叠路段处理 -> 联通性修复)
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
link_gdf
|
GeoDataFrame
|
线层gdf |
required |
Returns:
| Type | Description |
|---|---|
|
None, 直接在net_out_fldr下生成路网 |
Source code in src/gotrackit/netreverse/NetGen.py
742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 | |
NetReverse类静态方法 - merge_net:
- 合并标准路网 :对多个标准路网进行合并
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
net_list
|
list[list[GeoDataFrame, GeoDataFrame]]
|
待合并的路网, crs必须为: EPSG:4326 |
required |
conn_buffer
|
float
|
合并检测阈值(米) |
0.5
|
out_fldr
|
str
|
存储文件目录 |
'./'
|
plain_crs
|
str
|
平面投影坐标系 |
'EPSG:3857'
|
Returns:
| Type | Description |
|---|---|
tuple[GeoDataFrame, GeoDataFrame]
|
线层gdf, 点层gdf |
Source code in src/gotrackit/netreverse/NetGen.py
784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 | |