增加一些文档

This commit is contained in:
Tian jianyong 2025-04-29 14:30:24 +08:00
parent 4a40694354
commit cb526cc84b
6 changed files with 755 additions and 5 deletions

View File

@ -0,0 +1,204 @@
# 碰撞避免系统数据结构设计文档
## 1. 数据结构概述
本文档描述碰撞避免系统中的核心数据结构设计及其关系。系统采用面向对象设计方法,通过继承和组合实现不同移动物体类型的统一管理。
## 2. 核心数据结构设计
### 2.1 类图
```mermaid
classDiagram
class MovingObject {
+GeoPosition currentPosition
+Velocity velocity
+double heading
+long timestamp
+Deque~MovementState~ stateHistory
+int MAX_HISTORY
+double maxSpeed
+MovingObjectType type
}
class Aircraft {
+String flightNo
+Long trackNumber
}
class SpecialVehicle {
+String vehicleNo
}
class UnmannedVehicle {
+String transId
+String vehicleId
}
class GeoPosition {
+double latitude
+double longitude
+double altitude
}
class Velocity {
+double x, y, z
+double vx, vy, vz
+double confidence
+double cachedAcceleration
+getSpeed()
}
class MovementState {
+GeoPosition position
+Velocity velocity
+double heading
+long timestamp
+DataQuality dataQuality
}
class MovingObjectType {
<<enumeration>>
AIRCRAFT
SPECIAL_VEHICLE
UNMANNED_VEHICLE
}
MovingObject <|-- Aircraft
MovingObject <|-- SpecialVehicle
MovingObject <|-- UnmannedVehicle
MovingObject "1" *-- "1" GeoPosition
MovingObject "1" *-- "1" Velocity
MovingObject "1" *-- "0..*" MovementState
MovingObject "1" *-- "1" MovingObjectType
MovementState "1" *-- "1" GeoPosition
MovementState "1" *-- "1" Velocity
```
## 3. 数据结构详解
### 3.1 基础抽象类 - MovingObject
`MovingObject` 是系统中所有移动物体的基类,定义了共有属性:
- **currentPosition**: 当前地理位置,使用 `GeoPosition` 类表示,包含经度、纬度和高度信息
- **velocity**: 局部坐标系位置消息xy坐标、速度等等使用 `Velocity` 类表示,包含三维速度向量
- **heading**: 航向角度,以度为单位
- **timestamp**: 时间戳,表示数据最后更新时间
- **stateHistory**: 历史状态队列,存储 `MovementState` 对象,用于轨迹分析
- **MAX_HISTORY**: 历史记录最大保存数量默认为30
- **maxSpeed**: 最大速度限制
- **type**: 移动物体类型,使用 `MovingObjectType` 枚举
### 3.2 具体移动物体类型
系统实现了三种具体的移动物体类型,它们都继承自 `MovingObject` 抽象类:
#### 3.2.1 航空器 (Aircraft)
航空器特有属性:
- **flightNo**: 航班号,字符串类型,用于唯一标识航班
- **trackNumber**: 航迹号,长整型,用于雷达跟踪标识
构造函数接收位置参数(纬度、经度、高度)和时间戳,初始化基类属性。
#### 3.2.2 特勤车辆 (SpecialVehicle)
特勤车辆特有属性:
- **vehicleNo**: 车牌号,字符串类型,用于唯一标识车辆
构造函数接收位置参数(纬度、经度)、时间戳、速度和方向,并据此计算速度向量。特勤车辆被标记为"不可控"对象,表示系统只能监控而不能控制其行为。
#### 3.2.3 无人车 (UnmannedVehicle)
无人车特有属性:
- **transId**: 消息唯一ID用于消息跟踪
- **vehicleId**: 车辆ID用于唯一标识无人车
构造函数接收位置参数(经度、纬度)、航向和速度,并据此计算速度向量。无人车被标记为"可控"对象,表示系统可以向其发送控制指令。
### 3.3 辅助数据结构
#### 3.3.1 地理位置 - GeoPosition
`GeoPosition` 表示三维空间中的位置:
- **latitude**: 纬度,单位为度
- **longitude**: 经度,单位为度
- **altitude**: 高度,单位为米
#### 3.3.2 速度 - Velocity
`Velocity` 描述局部坐标系的位置消息:
- **x, y, z**: 三维坐标系中的位置
- **vx, vy, vz**: 三个方向上的速度分量,单位为米/秒
- **confidence**: 速度计算置信度取值范围0-1
- **cachedAcceleration**: 加速度计算结果缓存
- **getSpeed()**: 计算速度标量的方法
#### 3.3.3 运动状态 - MovementState
`MovementState` 封装了移动物体在特定时刻的完整状态:
- **position**: 地理位置GeoPosition类型
- **velocity**: 局部坐标系的位置消息Velocity类型
- **heading**: 航向,度数
- **timestamp**: 时间戳
- **dataQuality**: 数据质量枚举,表示数据可靠性
#### 3.3.4 移动物体类型 - MovingObjectType
`MovingObjectType` 是一个枚举类型,定义了系统支持的移动物体类型:
- **AIRCRAFT**: 航空器(飞机)
- **SPECIAL_VEHICLE**: 特勤车辆(不可控)
- **UNMANNED_VEHICLE**: 无人车(可控)
### 3.4 静态环境数据结构 - 道路网络
除了移动物体,系统还需要处理静态环境信息,特别是机场的道路网络。相关数据结构位于 `com.dongni.collisionavoidance.roads.model` 包下。
#### 3.4.1 道路信息 - RoadInfo
`RoadInfo` 类封装了系统运行时使用的单条道路信息。它由 `RoadNetworkService` 在初始化时根据配置文件 (`airport_roads.yaml`) 创建,包含处理后的属性和用于空间计算的 JTS 几何对象。关键属性包括:
- **id**: 道路的唯一标识符 (String)。
- **name**: 道路名称 (String)。
- **speedLimitMetersPerSecond**: 该道路的限速,已统一为米/秒 (Double)。
- **directionality**: 道路方向性,使用 `RoadDirectionality` 枚举表示。
- **heightLimitMeters**, **widthLimitMeters**: 限高和限宽,已统一为米 (Double)。
- **prohibited**: 是否禁止通行 (boolean)。
- **centerline**: 道路中心线的 JTS `LineString` 对象,用于路径分析和距离计算。
- **boundary**: 道路边界范围的 JTS `Polygon` 对象,通过对中心线进行缓冲计算得到,用于判断车辆是否在道路上。
- **relatedZones**: 与该道路关联的区域 ID 列表 (List<String>)。
#### 3.4.2 道路方向性 - RoadDirectionality
`RoadDirectionality` 是一个枚举类型,定义了道路的通行方向:
- **ONE_WAY**: 单向通行。
- **TWO_WAY**: 双向通行。
- **UNKNOWN**: 未知或未指定。
## 4. 数据流转机制
### 4.1 历史状态存储机制
每个 `MovingObject` 对象维护一个 `stateHistory` 队列,用于存储历史状态:
1. 当对象位置或速度更新时,系统创建新的 `MovementState` 对象
2. 新的状态对象被添加到 `stateHistory` 队列
3. 如果队列长度超过 `MAX_HISTORY`默认30最旧的记录会被移除
4. 历史记录用于轨迹分析、异常检测和预测计算
```mermaid
sequenceDiagram
participant 系统
participant MovingObject
participant stateHistory队列
系统->>MovingObject: 更新位置和速度
MovingObject->>MovingObject: 创建MovementState对象
MovingObject->>stateHistory队列: 添加新状态记录
alt 队列长度 > MAX_HISTORY
stateHistory队列->>stateHistory队列: 移除最旧记录
end
```

View File

@ -0,0 +1,164 @@
# 碰撞避免系统目录结构说明
本文档描述了碰撞避免系统项目的目录结构及各个目录的功能和用途。
## 1. 根目录结构
```
CollisionAvoidanceSystem/
├── doc/ # 文档目录
├── src/ # 源代码目录
├── target/ # 编译输出目录
├── .idea/ # IDE配置
├── .mvn/ # Maven包装器配置
├── .git/ # Git版本控制
├── pom.xml # Maven项目配置
├── mvnw / mvnw.cmd # Maven包装器脚本
├── README.md # 项目说明
├── VERSION.txt # 版本信息
├── change_log.md # 变更日志
├── development_log.md # 开发日志
├── .gitignore # Git忽略配置
└── .gitattributes # Git属性配置
```
## 2. 源代码目录结构 (`src`)
```
src/
├── main/ # 主要源代码
│ ├── java/ # Java源代码
│ │ └── com/
│ │ └── dongni/
│ │ └── collisionavoidance/ # 应用程序主包
│ └── resources/ # 配置文件和静态资源
│ ├── config/ # 特定配置文件 (如 airport_roads.yaml)
│ └── static/ # 静态Web资源
└── test/ # 测试源代码
```
## 3. 应用程序主包结构 (`com.dongni.collisionavoidance`)
```
com.dongni.collisionavoidance/
├── CollisionAvoidanceApplication.java # 应用程序入口类
├── common/ # 通用组件目录
│ ├── model/ # 核心移动对象等数据模型
│ └── config/ # 通用配置 (较少使用,优先模块内配置)
├── config/ # 应用程序配置
│ ├── properties/ # 配置属性映射类 (POJOs)
│ ├── RoadNetworkConfig.java # 道路网络配置加载类
│ └── YamlPropertySourceFactory.java # YAML加载工厂类
│ └── ... (其他配置类如 RedisConfig)
├── controller/ # 控制器层 (REST API)
├── dataCollector/ # 数据采集模块
├── dataProcessing/ # 数据处理模块
├── roads/ # 新增:道路网络模块
│ ├── model/ # 道路网络运行时模型
│ └── service/ # 道路网络服务
└── webSocket/ # WebSocket通信模块
```
## 4. 数据模型目录
### 4.1 通用数据模型 (`common/model`)
包含系统核心的、跨模块共享的数据结构:
```
common/model/
├── Aircraft.java
├── GeoPosition.java
├── MovementState.java
├── MovingObject.java
├── MovingObjectType.java
├── SpecialVehicle.java
├── UnmannedVehicle.java
└── Velocity.java
```
### 4.2 道路网络数据模型 (`roads/model`)
包含道路网络模块内部使用的运行时数据结构:
```
roads/model/
├── RoadInfo.java # 运行时道路信息 (含JTS对象)
└── RoadDirectionality.java # 道路方向枚举
```
## 5. 各模块功能说明
### 5.1 通用数据模型 (common/model)
数据模型模块定义了系统中使用的所有数据结构:
- **MovingObject**: 所有移动物体的抽象基类,定义共有属性和行为
- **Aircraft**: 代表航空器的具体实现类
- **SpecialVehicle**: 代表特勤车辆的具体实现类
- **UnmannedVehicle**: 代表无人车的具体实现类
- **GeoPosition**: 表示地理位置的数据结构
- **Velocity**: 表示速度和局部坐标系位置信息的数据结构
- **MovementState**: 封装移动物体在特定时刻的完整状态
- **MovingObjectType**: 定义了系统支持的移动物体类型的枚举
### 5.2 数据采集模块 (dataCollector)
负责从各种数据源获取移动物体的实时位置和状态信息:
- 航空器数据采集ADS-B、雷达等
- 特勤车辆数据采集GPS、地面雷达等
- 无人车数据采集(车载传感器等)
### 5.3 数据处理模块 (dataProcessing)
处理和分析采集到的数据:
- 轨迹计算和预测
- 碰撞风险评估
- 数据质量检查和过滤
- 历史数据管理和分析
### 5.4 控制器层 (controller)
提供RESTful API接口用于
- 数据查询和检索
- 系统配置和管理
- 状态报告和监控
### 5.5 WebSocket模块 (webSocket)
提供实时通信功能:
- 推送实时位置更新
- 发送碰撞警告
- 支持客户端实时监控
### 5.6 配置模块 (config)
包含应用程序的配置类和配置加载机制:
- **config/properties**: 存放用于绑定配置文件的 POJO 类 (例如 `AirportRoadsProperties`)。
- 系统参数配置、Bean 配置 (如 `RedisConfig`, `ThreadPoolConfig`)。
- 特定配置加载器 (如 `RoadNetworkConfig`, `YamlPropertySourceFactory`)。
- 服务注册、安全、数据库连接等配置。
### 5.7 道路网络模块 (roads)
新增模块,负责管理和查询机场静态道路网络信息:
- **roads/model**: 定义运行时的道路数据结构 (`RoadInfo`),包含 JTS 几何对象和处理过的属性。
- **roads/service**: 提供 `RoadNetworkService`,负责加载 `airport_roads.yaml` 配置,初始化道路数据和空间索引,并提供查询接口(如根据位置查找道路、获取限速等)。
## 6. 文档目录 (doc)
包含系统相关的设计文档和说明文档:
```
doc/
├── design_document.md # 系统数据结构设计文档
├── directory_structure.md # 目录结构说明文档(本文档)
├── cad_to_yaml_guide.md # CAD转YAML操作指南
└── road_network_design.md # 道路网络配置集成设计方案
```

View File

@ -0,0 +1,225 @@
# 机场和无人车数据接口对接要求
## 第1章 位置数据接口
### 1.1 登录认证
1. 登录接口:<http://IP:端口/login>
2. 请求方式post
3. 参数username、password
4. 示例:<http://127.0.0.1:8080/login?username=XXXX&password=XXXX>
5、返回值 data 为返回的鉴权token后续接口需要再header中携带data所有的数据是一个token不要截断
示例:{
    "status": 200,
    "msg": "登入成功",
    "data": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3MzI3ODMwOTAsInVzZXJuYW1lIjoiYWRtaW4ifQ.y9feEL_9NT8UzED9NNkb0Ln6C-PBoufiSHWobWe5vWY"
}
### 1.2 航空器位置数据接入
数据来源:接入并转发从空管接收到的融合数据
1. 接口地址:<http://IP:端口/openApi/getCurrentFlightPositions>
2. 请求方式get需要在 Header 中携带认证信息,字段名为 Authorization值为认证接口返回的token
3. 返回格式:以 JSON 格式返回数据一次请求返回List集合对象
4. 数据结构:
| 序号 | 字段 | 描述 | 字段类型 | 是否必填 |
|-----|------|------|----------|----------|
| 1 | flightNo | 航班号 | String | 是 |
| 2 | longitude | 经度 | double | 是 |
| 3 | latitude | 纬度 | double | 是 |
| 4 | time | 时间戳UTC 时间) | long | 是 |
| 5 | altitude | 海拔高度 | double | 否 |
| 6 | trackNumber | 航迹号 | long | 否 |
### 1.3 车辆位置数据接入
数据来源:仅传递目前机场已接入的车辆位置数据
1. 接口地址:<http://IP:端口/openApi/getCurrentVehiclePositions>
2. 请求方式get需要在 Header 中携带认证信息,字段名为 Authorization值为认证接口返回的token
3. 返回格式:以 JSON 格式返回数据一次请求返回List集合对象
4. 数据结构:
| 序号 | 字段 | 描述 | 字段类型 | 是否必填 |
|-----|------|------|----------|----------|
| 1 | vehicleNo | 车牌号 | String | 是 |
| 2 | longitude | 经度 | double | 是 |
| 3 | latitude | 纬度 | double | 是 |
| 4 | time | 时间戳 | long | 是 |
| 5 | direction | 方向 | double | 否 |
| 6 | speed | 速度 | double | 否 |
## 第2章 无人车控制接口
### 2.1 无人车控制指令
2.1.1 接口地址: <http://127.0.0.1:31140/api/VehicleCommandInfo>
2.1.2 请求方法POST
2.1.3 请求参数:
| 字段名称 | 类型 | 是否必填 | 说明 |
|---------|------|----------|------|
| transId | string | 是 | 消息唯一 id消息的唯一标识符 |
| timestamp | long | 是 | 时间戳 |
| vehicleID | string | 是 | 车辆 ID |
| commandType | string | 是 | 指令类型ALERT告警指令SIGNAL信号灯指令WARNING预警指令RESUME恢复指令 |
| commandReason | string | 是 | 指令原因TRAFFIC_LIGHT红绿灯控制AIRCRAFT_CROSSING航空器交叉SPECIAL_VEHICLE特勤车辆AIRCRAFT_PUSH航空器推出RESUME_TRAFFIC恢复通行 |
| signalState | string | 否 | 信号灯状态(仅当 commandType 为 SIGNAL 时有效RED红灯GREEN绿灯YELLOW黄灯 |
| intersectionId | string | 否 | 路口 ID仅当 commandType 为 SIGNAL 时有效) |
| latitude | double | 是 | 目标位置纬度(路口/航空器/特勤车) |
| longitude | double | 是 | 目标位置经度(路口/航空器/特勤车) |
| relativeSpeed | double | 否 | 相对速度(仅当 commandType 为 ALERT/WARNING 时有效) |
| relativeMotionX | double | 否 | 相对运动 X 分量(仅当 commandType 为 ALERT/WARNING 时有效) |
| relativeMotionY | double | 否 | 相对运动 Y 分量(仅当 commandType 为 ALERT/WARNING 时有效) |
| minDistance | double | 否 | 最小距离(仅当 commandType 为 ALERT/WARNING 时有效) |
示例:
requestData:
{
"messageUniqueId": "68f79d1a-e27f-11ed-b28c-2cf05d9c2649",
"timestamp": 1736175610000,
"vehicleID": "A001",
"commandType": "SIGNAL",
"commandReason": "TRAFFIC_LIGHT",
"signalState":"RED",
"intersectionId":"002",
"latitude": 343.23,
"longitude": 343.23,
"relativeSpeed": 3,
"relativeMotionX": 2002.12,
"relativeMotionY":100.12,
"minDistance":10.5
}
返回值:
| 字段名 | 类型 | 是否必须 | 描述 |
|---------|------|----------|------|
| transId | string | 是 | 消息唯一id消息的唯一标识符与请求id一致 |
| timestamp | long | 是 | 时间戳 |
| code | int | 是 | 接口返回的状态码200 请求成功400 请求失败并在msg内返回原因 |
| msg | string | 是 | 接口成功/失败的原因或者附加提示信息 |
示例:
responseData:
{
"code": 200,
"msg": "success",
"transId": "68f79d1a-e27f-11ed-b28c-2cf05d9c2649",
"timestamp": 1736175610
}
### 2.2 无人车位置上报
1. 接口地址: <http://127.0.0.1:31140/api/VehicleLocationInfo>
2. 请求方法GET
3. 返回值(以 List 数据返回,一次请求返回集合对象):
| 字段名称 | 类型 | 是否必填 | 说明 |
|---------|------|----------|------|
| transId | string | 是 | 消息唯一 id消息的唯一标识符 |
| timestamp | long | 是 | 时间戳UTC 时间,单位:毫秒) |
| vehicleID | string | 是 | 车辆 ID |
| latitude | double | 是 | 纬度 |
| longitude | double | 是 | 经度 |
| speed | double | 是 | 速度单位m/s |
| direction | double | 是 | 车头航向角,正东为 0 度(弧度) |
示例:
requestData:
[
{
"transId": "68f79d1a-e27f-11ed-b28c-2cf05d9c2649",
"timestamp": 1736175610000,
"vehicleID": "AT001",
"latitude": 123.112,
"longitude": 78.331,
"speed": 3.2,
"direction": 1.57
}
]
### 2.3 无人车状态上报
1. 接口地址: <http://127.0.0.1:31140/api/VehicleStateInfo>
2. 请求方法POST
3. 请求参数:
| 字段名称 | 类型 | 是否必填 | 说明 |
|---------|------|----------|------|
| transId | string | 是 | 消息唯一 id消息的唯一标识符 |
| timestamp | long | 是 | 时间戳UTC 时间,单位:毫秒) |
| vehicleID | string | 是 | 车辆 ID |
| isSingle | boolean | 是 | True单个车辆False所有车辆 |
示例:
requestData:
{
"transId": "68f79d1a-e27f-11ed-b28c-2cf05d9c2649",
"timestamp": 1736175610000,
"vehicleID": "AT001",
"isSingle": true
}
4. 返回值(以 List 数据返回,一次请求返回集合对象):
| 字段名称 | 类型 | 是否必填 | 说明 |
|---------|------|----------|------|
| transId | string | 是 | 消息唯一 id消息的唯一标识符 |
| timestamp | long | 是 | 时间戳UTC 时间,单位:毫秒) |
| vehicleID | string | 是 | 车辆 ID |
| loginState | boolean | 是 | 登录状态True登录False未登录 |
| faultInfo | list | 是 | 故障信息,以列表返回,可能存在多个 |
| activeSafety | boolean | 是 | 车辆最小风险策略触发主动安全True触发False未触发 |
| RC | boolean | 是 | 被接管或干预相关信息是否被远控RemoteControlTrue车辆在遥控器远控模式False车辆处于自动驾驶模式 |
| Command | int | 是 | 接收的远程指令信息0恢复1急停2缓停 |
| airportInfo | list | 否 | 机场特殊要求的其他信息 |
| vehicleMode | int | 是 | 无人设备控制模式底盘控制模式1:手动司机驾驶2:自动3:遥控器4:远程5故障等待 |
| gearState | int | 是 | 车辆当前档位1:N2:D3:P4:R, 5: 未知 |
| chassisReady | boolean | 是 | 底盘是否准备就绪True车辆发控制指令就可以走false: 其他 |
| collisionStatus | boolean | 否 | 防撞梁是否触发true触发false未触发 |
| clearance | int | 是 | 0关闭1开启示廓灯 |
| turnSignalStstus | int | 是 | 转向灯状态0off , 1 : trun left , 2 : trun right, 3: 双闪 |
| pointCloud | list | 否 | 点云数据字节流每个点的长度现在是12每个坐标为float长度4|
示例:
responseData:
[
{
"transId": "68f79d1a-e27f-11ed-b28c-2cf05d9c2649",
"timestamp": 1736175610000,
"vehicleID": "AT001",
"loginStatus":true,
"faultInfo":[],
"activeSafety":false,
"RC":false,
"Command":0,
"airportInfo":[],
"vehicleMode": 2,
"gearState": 2,
"chassisRaedy":true,
"collisionStatus":false,
"clearance":0,
"turnSignalStstus":0,
"pointCloud":[]
}
]

View File

@ -2,17 +2,32 @@
## 需求列表(按时间跟踪)
### 2025-03-12
### 2025-04-25
- 需求:超速预警,根据机场划定的区域限速,当车辆超过限速时,进行预警
- 需求:电子围栏,根据机场划定的区域,当车辆进入或离开该区域时,进行预警
- 分析:
- 需要根据机场划定的区域限速,需要获取机场的区域限速数据
- 需要根据机场划定的区域,需要获取机场的区域数据
- 需要获取车辆的实时位置数据
- 需要对车辆进行电子围栏预警
- 功能模块:
- 数据采集模块:获取车辆的实时位置数据(具备)
- 数据处理模块:根据机场的区域数据,对车辆进行电子围栏预警(新增)
- 数据存储模块:存储车辆的实时位置数据和电子围栏预警数据(增加电子围栏预警数据)
- 告警模块:对车辆进行电子围栏预警(增加电子围栏预警类型)
- 配置模块:配置机场的区域数据(新增)
- 通信模块WebSocket通信增加电子围栏预警事件
### 2025-04-12
- 需求:超速预警,根据机场划定的道路和区域限速,当车辆超过限速时,进行预警
- 分析:
- 需要根据机场划定的道路和区域限速,需要获取机场的道路和区域限速数据
- 需要获取车辆的实时位置数据
- 需要对车辆进行超速预警
- 功能模块:
- 数据采集模块:获取车辆的实时位置数据(具备)
- 数据处理模块:根据机场的区域限速数据,对车辆进行超速预警(新增)
- 数据处理模块:根据机场的道路和区域限速数据,对车辆进行超速预警(新增)
- 数据存储模块:存储车辆的实时位置数据和超速预警数据(增加超速预警数据)
- 告警模块:对车辆进行超速预警(增加超速预警类型)
- 配置模块:配置机场的区域限速数据(新增)
- 配置模块:配置机场的道路和区域限速数据(新增)
- 通信模块WebSocket通信增加超速预警事件

View File

@ -0,0 +1,91 @@
{
"type": "FeatureCollection",
"name": "geo0429",
"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } },
"features": [
{ "type": "Feature", "properties": { "fid": 1, "road_id": "51", "name": "51", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 40.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.089884182963942, 36.376724574565223 ], [ 120.075794941435717, 36.370830831641541 ] ] } },
{ "type": "Feature", "properties": { "fid": 2, "road_id": "41", "name": "41", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 40.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.091171665579296, 36.37364679296428 ], [ 120.077079436852429, 36.367760191065202 ] ] } },
{ "type": "Feature", "properties": { "fid": 3, "road_id": "52", "name": "52", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 40.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.087816178671858, 36.377827096292791 ], [ 120.087136287735902, 36.377546882933956 ], [ 120.0866407555514, 36.377427695780376 ], [ 120.079471166856848, 36.374428548342273 ], [ 120.079137987036347, 36.374452791174129 ], [ 120.076747820709613, 36.373457143740168 ] ] } },
{ "type": "Feature", "properties": { "fid": 4, "road_id": "D1", "name": "D1", "directionality": "双向", "prohibited": true, "width": 8.0, "speed_limit": 30.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.085781751289929, 36.384316680703712 ], [ 120.087429682801499, 36.385006035390809 ], [ 120.087479539518469, 36.385049582213938 ], [ 120.087518099243951, 36.385111094338583 ], [ 120.08753705252515, 36.385183313960894 ], [ 120.087530256876477, 36.385244762416235 ], [ 120.085643808884626, 36.389763436695894 ], [ 120.085632153476936, 36.389845543244505 ], [ 120.085658595639572, 36.389936022915258 ], [ 120.08570306677305, 36.389992444203308 ], [ 120.085744088212692, 36.390020949594245 ], [ 120.087213649435554, 36.390639471124537 ], [ 120.086340216964871, 36.392745529624911 ], [ 120.086335524614142, 36.392838112593608 ], [ 120.086364659568517, 36.392922155031883 ], [ 120.086408604877505, 36.392970792691607 ], [ 120.086457409945496, 36.392998772258046 ], [ 120.08722344060908, 36.393319214475873 ], [ 120.087288633505139, 36.393335140148757 ], [ 120.087358686160201, 36.393330407728371 ], [ 120.087426635517303, 36.393294540794635 ], [ 120.087482005156389, 36.393234502404475 ], [ 120.088761607060448, 36.390184600610951 ], [ 120.088806836878405, 36.390130720623695 ], [ 120.088872914015155, 36.390090288677833 ], [ 120.088947005857847, 36.390075900408753 ], [ 120.089029112406465, 36.390087555816436 ], [ 120.090521203942941, 36.390715502117857 ], [ 120.090574868769949, 36.390722823591005 ], [ 120.09063825311496, 36.390688828877629 ] ] } },
{ "type": "Feature", "properties": { "fid": 5, "road_id": "D2", "name": "D2", "directionality": "双向", "prohibited": true, "width": 8.0, "speed_limit": 30.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.090633982849752, 36.39067191522507 ], [ 120.09426620139071, 36.381979902671596 ], [ 120.094281633073777, 36.381884248460111 ], [ 120.094270053135233, 36.381817004135584 ], [ 120.093965609848752, 36.38084062916905 ], [ 120.093960056856972, 36.380781578758558 ], [ 120.093968630113253, 36.380720401174138 ], [ 120.104768334324675, 36.354907772179004 ], [ 120.104799942793036, 36.354854812384602 ], [ 120.104847234056876, 36.354814085691856 ], [ 120.105802437796683, 36.354320676316604 ], [ 120.105835360826262, 36.354287175593058 ], [ 120.10587424802452, 36.354234896955248 ], [ 120.109330614530577, 36.345972306756693 ] ] } },
{ "type": "Feature", "properties": { "fid": 6, "road_id": "D3", "name": "D3", "directionality": "双向", "prohibited": true, "width": 8.0, "speed_limit": 50.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.109331960926454, 36.345969088140471 ], [ 120.10934074433429, 36.345925489447858 ], [ 120.109341513036185, 36.345855847078496 ], [ 120.109314365840973, 36.345789654402942 ], [ 120.109255295395656, 36.345713889582832 ], [ 120.107830121602134, 36.345115826902877 ], [ 120.107777572093411, 36.345078717312227 ], [ 120.107733774157879, 36.345020686716062 ], [ 120.107714673503239, 36.344957860030192 ], [ 120.107720039051912, 36.34486366775338 ], [ 120.10912221574111, 36.341507184804932 ], [ 120.109134249599833, 36.341442254821125 ], [ 120.109127087299953, 36.341382531212695 ], [ 120.109097920510919, 36.341321166461491 ], [ 120.109029982953629, 36.34125303789628 ], [ 120.108238876558104, 36.340920215203354 ], [ 120.108170727958068, 36.340906834948754 ], [ 120.108116505471926, 36.340914407534335 ], [ 120.108054204610553, 36.340941291817316 ], [ 120.107977471845601, 36.341020757443658 ], [ 120.107096066521052, 36.343118753486117 ], [ 120.106930570697259, 36.343053305912825 ], [ 120.10561737527398, 36.342503976396543 ], [ 120.105539833737481, 36.342490448768494 ], [ 120.105467351202904, 36.342505510235526 ], [ 120.105405576166021, 36.342540178146841 ], [ 120.105345494141389, 36.342611481693815 ], [ 120.105127882908377, 36.343131690542556 ], [ 120.10509560124207, 36.34318625964508 ], [ 120.105041462460065, 36.343229794668375 ], [ 120.104978898686454, 36.343252787137175 ], [ 120.104872357769196, 36.343249819633364 ], [ 120.103204441362266, 36.342553995879143 ] ] } },
{ "type": "Feature", "properties": { "fid": 7, "road_id": "84", "name": "84", "directionality": "双向", "prohibited": false, "width": 8.0, "speed_limit": 40.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.099428587000972, 36.351810871464117 ], [ 120.100227262666039, 36.349906123851802 ], [ 120.100206731911385, 36.349810553344454 ], [ 120.100209552041761, 36.349713405363644 ], [ 120.103204441362266, 36.342553995879143 ] ] } },
{ "type": "Feature", "properties": { "fid": 8, "road_id": "85", "name": "85", "directionality": "双向", "prohibited": false, "width": 8.0, "speed_limit": 40.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.100226158256376, 36.349904243672768 ], [ 120.100988970303732, 36.350223339494725 ], [ 120.102187057488052, 36.347361521608008 ], [ 120.101342170726753, 36.34700809269129 ] ] } },
{ "type": "Feature", "properties": { "fid": 9, "road_id": "81", "name": "81", "directionality": "双向", "prohibited": false, "width": 8.0, "speed_limit": 50.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.099429896553488, 36.351810001082001 ], [ 120.086833037269429, 36.346540544233143 ] ] } },
{ "type": "Feature", "properties": { "fid": 10, "road_id": "82", "name": "82", "directionality": "双向", "prohibited": false, "width": 8.0, "speed_limit": 40.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.100407977133571, 36.349239061796226 ], [ 120.095462573290732, 36.347170324537011 ] ] } },
{ "type": "Feature", "properties": { "fid": 11, "road_id": "87", "name": "87", "directionality": "双向", "prohibited": false, "width": 8.0, "speed_limit": 40.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.094402754595649, 36.349706126073961 ], [ 120.095644131590774, 36.346738561906626 ] ] } },
{ "type": "Feature", "properties": { "fid": 12, "road_id": "86", "name": "86", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 50.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.101693448593537, 36.346166087947246 ], [ 120.100854999064694, 36.345815351822267 ], [ 120.100795948654209, 36.34582090481404 ], [ 120.100750971731088, 36.345838017709525 ], [ 120.100710938271092, 36.345870434949454 ], [ 120.100680560659811, 36.345906891376998 ], [ 120.099630424639386, 36.348403724961514 ] ] } },
{ "type": "Feature", "properties": { "fid": 13, "road_id": "83", "name": "83", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 50.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.099630424639386, 36.348403724961514 ], [ 120.089115336860502, 36.344006995550757 ] ] } },
{ "type": "Feature", "properties": { "fid": 14, "road_id": "88", "name": "88", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 50.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.08911567345946, 36.3440061908967 ], [ 120.090149563570961, 36.341527852417528 ], [ 120.090168913002941, 36.341461255356201 ], [ 120.09015177417271, 36.341386958370677 ], [ 120.090117837228718, 36.341330216400976 ], [ 120.090076610646221, 36.341304461571198 ], [ 120.089272293186809, 36.340967057948838 ] ] } },
{ "type": "Feature", "properties": { "fid": 15, "road_id": "89", "name": "89", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 50.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.086832316765111, 36.346540006470661 ], [ 120.087629514578182, 36.344636531567495 ], [ 120.087721503935597, 36.344586139008634 ], [ 120.087792398979275, 36.344507067750648 ], [ 120.093305048582735, 36.331328845909411 ] ] } },
{ "type": "Feature", "properties": { "fid": 16, "road_id": "810", "name": "810", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 40.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.087629214822584, 36.344634987987426 ], [ 120.086876058623929, 36.344319931353091 ], [ 120.088075791959739, 36.341456438430207 ], [ 120.088918396214993, 36.341810803457108 ] ] } },
{ "type": "Feature", "properties": { "fid": 17, "road_id": "X3", "name": "X3", "directionality": "双向", "prohibited": true, "width": 10.0, "speed_limit": 50.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.093296875594731, 36.331343863465598 ], [ 120.090086305901778, 36.330000833582055 ], [ 120.09076118683322, 36.328387502195 ], [ 120.090777785704063, 36.328320699990819 ], [ 120.090772117173486, 36.328248364829705 ], [ 120.090736660525437, 36.328174914350306 ], [ 120.090702633977401, 36.328134207692379 ], [ 120.090675423112856, 36.328113370391002 ], [ 120.089877206286943, 36.327779464214437 ], [ 120.089839108716632, 36.327771091092302 ], [ 120.089787579022243, 36.327772226445411 ], [ 120.089717904818215, 36.327794135430594 ], [ 120.089679217754096, 36.32782333405428 ], [ 120.089638774008407, 36.327861252416497 ], [ 120.089612140837843, 36.327906838868259 ], [ 120.088212299415389, 36.331248698628862 ], [ 120.088175600110432, 36.331295747015275 ], [ 120.088134630540253, 36.331325881749152 ], [ 120.088073676074742, 36.331349547415904 ], [ 120.088017581368248, 36.331352554989365 ], [ 120.087962307233141, 36.331344560318264 ], [ 120.086519693962572, 36.33074298427519 ], [ 120.086446948515771, 36.330754153928027 ], [ 120.086401035482453, 36.330768984317466 ], [ 120.086359392714343, 36.330800728359456 ], [ 120.086318275770736, 36.330840256029774 ], [ 120.086292147498625, 36.330884635500453 ] ] } },
{ "type": "Feature", "properties": { "fid": 18, "road_id": "X2", "name": "X2", "directionality": "双向", "prohibited": true, "width": 10.0, "speed_limit": 50.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.086292399947851, 36.330884032009905 ], [ 120.082833603562278, 36.339156951255084 ], [ 120.082824409868749, 36.339206051069986 ], [ 120.082828690151374, 36.339263623628476 ], [ 120.083102786324417, 36.340362268139152 ], [ 120.083109365030424, 36.340407565743917 ], [ 120.083109243591721, 36.340446278742782 ], [ 120.083098850875771, 36.340489204237443 ], [ 120.072334592127447, 36.366215969275864 ], [ 120.072310257380252, 36.3662492807739 ], [ 120.072285265352463, 36.366272862736501 ], [ 120.072257596450257, 36.366291543088039 ], [ 120.071356226282532, 36.366755708008192 ], [ 120.071325133621229, 36.366775792525004 ], [ 120.071293162619156, 36.366800236911061 ], [ 120.071265346343509, 36.366828310199054 ], [ 120.071248185250425, 36.366853513407783 ], [ 120.067590511635274, 36.375588296123816 ], [ 120.067584831304885, 36.375619956461655 ], [ 120.067601360606488, 36.375650507381145 ], [ 120.067618841935612, 36.375672001963125 ], [ 120.069141715469158, 36.376309988464193 ], [ 120.069191851015688, 36.376346088257947 ], [ 120.069220234522305, 36.376379943418378 ], [ 120.069243595424751, 36.376419024850854 ], [ 120.069257505621323, 36.376451316534563 ], [ 120.069264873064057, 36.376508289581857 ], [ 120.069260112926528, 36.376553571269291 ], [ 120.069241789208789, 36.376606415524897 ], [ 120.067850709822508, 36.3799318495847 ], [ 120.067837834466374, 36.379998791203661 ], [ 120.067844455024442, 36.380062070027286 ], [ 120.067871339307416, 36.380124370888666 ], [ 120.067918503232647, 36.380174354944252 ] ] } },
{ "type": "Feature", "properties": { "fid": 19, "road_id": "X1", "name": "X1", "directionality": "双向", "prohibited": true, "width": 10.0, "speed_limit": 50.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.06791954191425, 36.380175262169729 ], [ 120.067955603973417, 36.380199802059771 ], [ 120.068734509101944, 36.38052562986109 ], [ 120.068754362541156, 36.380530153021127 ], [ 120.068806754659008, 36.380535996642294 ], [ 120.068862923052222, 36.380528292600594 ], [ 120.068908573173303, 36.380509570396981 ], [ 120.06895236699134, 36.380474944337735 ], [ 120.068987851356539, 36.380433060474623 ], [ 120.069806470510485, 36.378480637109348 ], [ 120.069812697591388, 36.378465751009273 ], [ 120.071689787210119, 36.379251438729362 ], [ 120.071739281393377, 36.379266470144138 ], [ 120.071793019907105, 36.37926909514907 ], [ 120.071838990709807, 36.379260907134949 ], [ 120.07188578208391, 36.379241716876258 ], [ 120.071926956796915, 36.379208831581238 ], [ 120.071965060267146, 36.3791652069539 ], [ 120.072159446171341, 36.378700519235188 ], [ 120.072183723149138, 36.378660565361841 ], [ 120.072222631273419, 36.378617277333468 ], [ 120.072263059101772, 36.378590697814801 ], [ 120.072300047253719, 36.378576861304943 ], [ 120.072359507949898, 36.378565807190881 ], [ 120.072409954160662, 36.378571782268175 ], [ 120.072442682064818, 36.378581691011696 ], [ 120.073281599648752, 36.378933568389698 ] ] } },
{ "type": "Feature", "properties": { "fid": 20, "road_id": "72", "name": "72", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 40.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.073276008922406, 36.378949193415785 ], [ 120.076539420069878, 36.371147871156204 ] ] } },
{ "type": "Feature", "properties": { "fid": 21, "road_id": "73", "name": "73", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 40.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.076658536338883, 36.373663455062214 ], [ 120.07566076530648, 36.373246072341516 ] ] } },
{ "type": "Feature", "properties": { "fid": 22, "road_id": "74", "name": "74", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 40.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.074292245591678, 36.379320173092665 ], [ 120.073294474559276, 36.378902790371967 ] ] } },
{ "type": "Feature", "properties": { "fid": 23, "road_id": "71", "name": "71", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 40.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.072618938433507, 36.383324804885142 ], [ 120.077539594601447, 36.371561768369091 ] ] } },
{ "type": "Feature", "properties": { "fid": 24, "road_id": "2", "name": "2", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 50.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.075797650021158, 36.370834977509801 ], [ 120.078247922210949, 36.364977498291772 ], [ 120.078324654975901, 36.364898032665415 ], [ 120.078398631279782, 36.3648703596457 ], [ 120.07847231283678, 36.364861472498909 ], [ 120.078540461436816, 36.364874852753502 ], [ 120.078851731101295, 36.365003170647157 ], [ 120.078956925622691, 36.365009356767196 ], [ 120.079040294863034, 36.364981831120943 ], [ 120.079144049266986, 36.364914614513573 ], [ 120.086831896016406, 36.346541012288235 ] ] } },
{ "type": "Feature", "properties": { "fid": 25, "road_id": "56", "name": "56", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 40.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.077213771684427, 36.373651553751181 ], [ 120.078003580237521, 36.371754442393751 ] ] } },
{ "type": "Feature", "properties": { "fid": 26, "road_id": "55", "name": "55", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 40.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.082159545743323, 36.375552154264355 ], [ 120.082895203714585, 36.373802573429174 ] ] } },
{ "type": "Feature", "properties": { "fid": 27, "road_id": "54", "name": "54", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 40.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.083268096123533, 36.376012095828514 ], [ 120.083997038032763, 36.374267269230963 ] ] } },
{ "type": "Feature", "properties": { "fid": 28, "road_id": "66", "name": "66", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 40.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.082057474872599, 36.388376201202547 ], [ 120.086639522941439, 36.377427141973953 ] ] } },
{ "type": "Feature", "properties": { "fid": 29, "road_id": "53", "name": "53", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 40.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.086091590371041, 36.377195569842414 ], [ 120.086822983085824, 36.375449404807661 ] ] } },
{ "type": "Feature", "properties": { "fid": 30, "road_id": "65", "name": "65", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 40.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.083729845761539, 36.389077197438745 ], [ 120.082057774628211, 36.388377744782602 ] ] } },
{ "type": "Feature", "properties": { "fid": 31, "road_id": "64", "name": "64", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 40.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.083730650415589, 36.389077534037717 ], [ 120.087936249381741, 36.379026132139309 ] ] } },
{ "type": "Feature", "properties": { "fid": 32, "road_id": "63", "name": "63", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 40.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.088778853636995, 36.37938049716621 ], [ 120.087936249381741, 36.379026132139309 ] ] } },
{ "type": "Feature", "properties": { "fid": 33, "road_id": "62", "name": "62", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 40.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.087584190211757, 36.382240910887653 ], [ 120.086739303450443, 36.381887481970935 ] ] } },
{ "type": "Feature", "properties": { "fid": 34, "road_id": "61", "name": "61", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 40.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.087583517013812, 36.382242520195767 ], [ 120.089484228164139, 36.377707830500995 ] ] } },
{ "type": "Feature", "properties": { "fid": 35, "road_id": "1", "name": "1", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 30.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.089483423510089, 36.37770749390203 ], [ 120.092340417783674, 36.370870947879119 ], [ 120.092350495717895, 36.370765490445493 ], [ 120.092315859641232, 36.370681037721525 ], [ 120.092235457904707, 36.370602022450527 ], [ 120.091867599543903, 36.370446250814915 ], [ 120.09178289570751, 36.37037299957845 ], [ 120.09175361337968, 36.370298350076631 ], [ 120.091748271430674, 36.370184551355514 ], [ 120.099431290255737, 36.351808929536368 ] ] } },
{ "type": "Feature", "properties": { "fid": 36, "road_id": "42", "name": "42", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 40.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.091952056260979, 36.371794822194282 ], [ 120.088266740673561, 36.370253198919436 ] ] } },
{ "type": "Feature", "properties": { "fid": 37, "road_id": "44", "name": "44", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 40.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.087487156536923, 36.372107787109236 ], [ 120.088509071004708, 36.369664857387967 ] ] } },
{ "type": "Feature", "properties": { "fid": 38, "road_id": "43", "name": "43", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 40.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.092198746461378, 36.371207359003591 ], [ 120.086592516493752, 36.368865024552541 ] ] } },
{ "type": "Feature", "properties": { "fid": 39, "road_id": "45", "name": "45", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 40.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.084604680556936, 36.370904840165892 ], [ 120.085385442789956, 36.369047435686895 ] ] } },
{ "type": "Feature", "properties": { "fid": 40, "road_id": "46", "name": "46", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 40.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.08271052490349, 36.3701124861945 ], [ 120.083735132163014, 36.367663119240767 ] ] } },
{ "type": "Feature", "properties": { "fid": 41, "road_id": "49", "name": "49", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 40.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.08373331771206, 36.367665196603973 ], [ 120.078104089375699, 36.365312296128792 ] ] } },
{ "type": "Feature", "properties": { "fid": 42, "road_id": "47", "name": "47", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 40.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.08092546560303, 36.369366714336849 ], [ 120.081946854246326, 36.366916000987246 ] ] } },
{ "type": "Feature", "properties": { "fid": 43, "road_id": "48", "name": "48", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 40.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.081700463801525, 36.367505007757998 ], [ 120.077859045326775, 36.365898084283295 ] ] } },
{ "type": "Feature", "properties": { "fid": 44, "road_id": "1C2", "name": "1C2", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 30.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.088052924804487, 36.365369336452005 ], [ 120.086577611526394, 36.368896135189914 ], [ 120.086520863656773, 36.36898206988338 ], [ 120.086439302967491, 36.369059515915922 ], [ 120.086351042133472, 36.369130377342543 ], [ 120.086231531247321, 36.369190057316487 ], [ 120.086076615582584, 36.369234926935825 ], [ 120.085926591511509, 36.3692364607748 ], [ 120.085825436177743, 36.36922061880604 ], [ 120.08573017132592, 36.369190695391275 ], [ 120.084519298424169, 36.368686059851058 ], [ 120.08433961357423, 36.368595767623411 ], [ 120.084176758672712, 36.368465242692842 ], [ 120.084025232597313, 36.368294074773672 ], [ 120.083890914921383, 36.368099850716376 ], [ 120.08373251305801, 36.367664860005007 ], [ 120.083767762228121, 36.367503749985218 ], [ 120.085514521648122, 36.363319007139793 ] ] } },
{ "type": "Feature", "properties": { "fid": 45, "road_id": "1C6", "name": "1C6", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 30.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.085385442789956, 36.369047435686895 ], [ 120.085733149524231, 36.368216228044574 ], [ 120.085750132746, 36.36811460465573 ], [ 120.085724805901648, 36.36799433686749 ], [ 120.08569384647889, 36.367871712886476 ] ] } },
{ "type": "Feature", "properties": { "fid": 46, "road_id": "1C7", "name": "1C7", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 30.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.088052288449902, 36.365368597526 ], [ 120.08701187075242, 36.364933375059984 ] ] } },
{ "type": "Feature", "properties": { "fid": 47, "road_id": "1C4", "name": "1C4", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 30.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.087720043699747, 36.363645026073456 ], [ 120.08660546637276, 36.363176890595255 ] ] } },
{ "type": "Feature", "properties": { "fid": 48, "road_id": "1C1", "name": "1C1", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 30.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.088093990341548, 36.363526325188587 ], [ 120.087939747874756, 36.363569585499818 ], [ 120.087810581139891, 36.363625226286139 ], [ 120.087703944718669, 36.363690291843575 ], [ 120.087654307279465, 36.363777310020666 ], [ 120.0875830756368, 36.363857185932709 ], [ 120.087488640482562, 36.363929246381758 ], [ 120.087379036557522, 36.364100852856446 ], [ 120.087345323899996, 36.364195005339944 ], [ 120.08701576256658, 36.364933112147746 ], [ 120.086652393962879, 36.365761077297833 ], [ 120.086494434433973, 36.366134165910019 ], [ 120.086431858860536, 36.36626115387778 ], [ 120.086347645449152, 36.366507672766552 ], [ 120.086193326622009, 36.366772611153358 ], [ 120.086113626353239, 36.366958617696973 ], [ 120.086108113431123, 36.367062202910233 ], [ 120.086094648581181, 36.367166716275023 ], [ 120.085891625751401, 36.367737936952345 ], [ 120.085825895231025, 36.367818223150081 ], [ 120.085695119188046, 36.367873190738472 ], [ 120.085617545816888, 36.3678823407975 ], [ 120.085511004899629, 36.367879373293682 ], [ 120.085400424794742, 36.367886061638565 ], [ 120.085296650355957, 36.367871960434051 ], [ 120.085217447641853, 36.36779911948328 ], [ 120.085009928263844, 36.367510928326837 ], [ 120.084997444049776, 36.367418723809173 ], [ 120.085006374831053, 36.367365732180126 ], [ 120.08504381100326, 36.367271719111415 ], [ 120.085309596849598, 36.366726753153621 ], [ 120.085445622902455, 36.366564308537789 ], [ 120.085562349057739, 36.366289790047766 ], [ 120.085561835033076, 36.366178010920464 ], [ 120.085664444957715, 36.3659462785103 ], [ 120.085721161883868, 36.365810694301473 ], [ 120.08646363732106, 36.363936328417928 ], [ 120.08651783977237, 36.363847438020471 ], [ 120.086575009727497, 36.363652006705749 ], [ 120.086561884150157, 36.363538733809115 ], [ 120.086552650386977, 36.363425198000243 ], [ 120.086606139570691, 36.363175281287148 ], [ 120.086475736417384, 36.362845130522125 ] ] } },
{ "type": "Feature", "properties": { "fid": 49, "road_id": "1C5", "name": "1C5", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 30.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.086428266801974, 36.366262960370086 ], [ 120.085664986699527, 36.365942723295106 ] ] } },
{ "type": "Feature", "properties": { "fid": 50, "road_id": "1D1", "name": "1D1", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 30.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.088094158641027, 36.363525922861562 ], [ 120.088205059427551, 36.363529768706158 ], [ 120.088310984916276, 36.363540987893415 ], [ 120.088408306205281, 36.363563735149718 ], [ 120.088504806922884, 36.363597484650604 ], [ 120.088593771007069, 36.36364699063369 ], [ 120.088677423194483, 36.363704674613473 ], [ 120.088926812300684, 36.363895034573765 ], [ 120.089069313873253, 36.364042572778345 ], [ 120.090149216711922, 36.365409516304496 ], [ 120.090208034262417, 36.365522048216377 ], [ 120.090256186167295, 36.365632954902807 ], [ 120.090278756550589, 36.365805015297681 ], [ 120.09028887455446, 36.365862193487821 ], [ 120.090433290199456, 36.366032277923367 ], [ 120.090505350648499, 36.366126713077584 ], [ 120.09111049524023, 36.367017093246169 ], [ 120.091169091730549, 36.367143714562737 ], [ 120.091330781226702, 36.367100733081088 ], [ 120.091414939203787, 36.367084882877336 ], [ 120.091753937322281, 36.367056508389865 ], [ 120.091811788710345, 36.367044781077873 ], [ 120.091895221620007, 36.366971900057436 ], [ 120.092037939582568, 36.366630726736688 ], [ 120.092052287781996, 36.366542182955612 ], [ 120.092014202011512, 36.366429814334509 ], [ 120.091943077672639, 36.366337661686323 ], [ 120.091863317299399, 36.366279714794302 ], [ 120.091786039566344, 36.366197751777968 ], [ 120.090785096564346, 36.364981075200305 ], [ 120.090210590713738, 36.364202784823249 ], [ 120.090131503538416, 36.364143228623107 ], [ 120.089854001074571, 36.3637624167634 ], [ 120.089801053079995, 36.363626812796063 ], [ 120.089728750644738, 36.363537476437095 ], [ 120.08965089432651, 36.363461416870081 ], [ 120.089601312321619, 36.363317766362165 ], [ 120.089493659650898, 36.363055278166037 ], [ 120.089456983945595, 36.362894335554529 ], [ 120.089409831820205, 36.362740355999968 ] ] } },
{ "type": "Feature", "properties": { "fid": 51, "road_id": "1B1", "name": "1B1", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 30.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.082072012219001, 36.363120340365647 ], [ 120.081986050699584, 36.36310659963609 ], [ 120.081938207676515, 36.363110222638099 ], [ 120.08181511564041, 36.363140040807828 ], [ 120.081733839680595, 36.363158042061514 ], [ 120.081615439995232, 36.363095277262545 ], [ 120.081577585302313, 36.3630094781427 ], [ 120.081527324199584, 36.36291943469238 ], [ 120.081349250440184, 36.362685161257765 ], [ 120.081323186728582, 36.362611858151816 ], [ 120.081329777234416, 36.362553160257633 ], [ 120.081445435823383, 36.362274413354456 ], [ 120.081475630109068, 36.362177370895033 ], [ 120.081528612166309, 36.362109479169149 ], [ 120.081592753413403, 36.362109837585358 ], [ 120.083056633200528, 36.361996088523043 ], [ 120.083183128069678, 36.361955875578609 ], [ 120.083399018234743, 36.361968658104402 ], [ 120.083518349912794, 36.361941048754005 ], [ 120.08439758513353, 36.361819098647999 ], [ 120.084542749445603, 36.361838222902293 ], [ 120.085073183325676, 36.361750001032597 ], [ 120.085146276280071, 36.361706358429181 ], [ 120.085265197672442, 36.361684250201066 ], [ 120.085503450742863, 36.361634532622553 ], [ 120.085722161038291, 36.36155016716755 ], [ 120.085839389418396, 36.361491423303782 ], [ 120.085946699037564, 36.361424748438232 ], [ 120.086076307892782, 36.361340928842537 ] ] } },
{ "type": "Feature", "properties": { "fid": 52, "road_id": "1A1", "name": "1A1", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 30.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.086075503238717, 36.361340592243565 ], [ 120.086118729380189, 36.361280201337117 ], [ 120.086156085965769, 36.361242882486117 ], [ 120.08622617045549, 36.361215472378646 ], [ 120.086321165051274, 36.360983863465954 ], [ 120.086290410771355, 36.360858488923803 ], [ 120.08627605522814, 36.360689392191574 ], [ 120.086214662207112, 36.360451927857881 ], [ 120.086162913234958, 36.360322498210785 ], [ 120.086089454520561, 36.360172641547983 ], [ 120.085971755750279, 36.359992933098397 ], [ 120.085698292474049, 36.35960246538999 ], [ 120.085684198951867, 36.359509587674388 ], [ 120.085229369613273, 36.358888196603722 ], [ 120.085150019525713, 36.358824748589406 ], [ 120.085070816811609, 36.358751907638634 ], [ 120.084857706707254, 36.358479341508279 ], [ 120.084789706371865, 36.358384241114763 ], [ 120.084357164469495, 36.35784970081292 ], [ 120.083994400510122, 36.357410531775493 ], [ 120.083915608081696, 36.357332189702433 ], [ 120.083774168175538, 36.357240877660459 ], [ 120.083715045860743, 36.357106472715557 ], [ 120.083678916014748, 36.357034631544281 ], [ 120.08367134342916, 36.356980409058139 ], [ 120.083702342368909, 36.356883703197688 ], [ 120.083738337532481, 36.356788614604014 ], [ 120.084098235516322, 36.355923742947361 ] ] } },
{ "type": "Feature", "properties": { "fid": 53, "road_id": "1A3", "name": "1A3", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 30.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.084095953010277, 36.355924679057537 ], [ 120.084117116893211, 36.355856004633011 ], [ 120.084106273821902, 36.355741795626201 ], [ 120.084066925359693, 36.355668608059041 ], [ 120.084031815328018, 36.355635011831517 ], [ 120.083984619568142, 36.355607705463015 ], [ 120.083180638707688, 36.355269497186598 ] ] } },
{ "type": "Feature", "properties": { "fid": 54, "road_id": "1A2", "name": "1A2", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 30.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.085025286222432, 36.360167122048892 ], [ 120.085035300487348, 36.360107019989428 ], [ 120.085028926924196, 36.360058971823513 ], [ 120.084989988747665, 36.359980283134064 ], [ 120.082805171898883, 36.357116333030042 ], [ 120.082731207394815, 36.35704001055079 ], [ 120.082643663393242, 36.356982589483245 ], [ 120.082491452320085, 36.356917026371136 ] ] } },
{ "type": "Feature", "properties": { "fid": 55, "road_id": "1A4", "name": "1A4", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 30.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.083774767686748, 36.357243964820583 ], [ 120.083639836917357, 36.35729530350703 ], [ 120.083497859386867, 36.357300203335697 ], [ 120.083289099687036, 36.357369822105419 ], [ 120.083188374673782, 36.35742979682626 ], [ 120.083095285915434, 36.35749863865906 ] ] } },
{ "type": "Feature", "properties": { "fid": 56, "road_id": "1A5", "name": "1A5", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 30.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.084216246145914, 36.358964066544473 ], [ 120.084312027696015, 36.358888787479209 ], [ 120.084376495524651, 36.358847682335409 ], [ 120.084512163161293, 36.358749378966664 ], [ 120.084595122115942, 36.358727354442685 ], [ 120.084751993705183, 36.358723012273181 ], [ 120.084863163303851, 36.35867875218247 ], [ 120.08495531595203, 36.358607627843604 ] ] } },
{ "type": "Feature", "properties": { "fid": 57, "road_id": "1A7", "name": "1A7", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 30.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.081083795434623, 36.360282089643313 ], [ 120.081235070397611, 36.360345370249355 ], [ 120.08134105365572, 36.360363231811924 ], [ 120.081450550276969, 36.360363653897444 ], [ 120.08168139817009, 36.36033163870821 ], [ 120.081754470198447, 36.360279005495372 ], [ 120.08180044690107, 36.360218819731763 ], [ 120.0824926626794, 36.358564048660682 ], [ 120.082506800727273, 36.358457925987786 ], [ 120.082489982578693, 36.358394163191733 ], [ 120.08245183313889, 36.358327149944799 ], [ 120.082278892068146, 36.35811676913702 ], [ 120.082194303770549, 36.358056802651184 ], [ 120.082042092697392, 36.357991239539096 ] ] } },
{ "type": "Feature", "properties": { "fid": 58, "road_id": "1B6", "name": "1B6", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 30.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.080692741120174, 36.36121240119094 ], [ 120.081125645003581, 36.361393491435884 ], [ 120.081225043655792, 36.361418053143147 ], [ 120.081424924443823, 36.3614600661273 ], [ 120.081561348982547, 36.361396115888148 ], [ 120.081637870704725, 36.361371398572437 ], [ 120.081689958058263, 36.361355369160563 ], [ 120.084575582656981, 36.360984499357599 ], [ 120.084618129700615, 36.360977715508739 ], [ 120.084677885143705, 36.360947875521774 ], [ 120.084712827767092, 36.360909546873877 ], [ 120.084728163946181, 36.360881925723639 ] ] } },
{ "type": "Feature", "properties": { "fid": 59, "road_id": "1A6", "name": "1A6", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 30.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.08472752759161, 36.360881186797641 ], [ 120.085026090876497, 36.360167458647865 ] ] } },
{ "type": "Feature", "properties": { "fid": 60, "road_id": "1B7", "name": "1B7", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 30.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.083182575864839, 36.361954935489095 ], [ 120.083221685014479, 36.36181624024416 ], [ 120.083254293262328, 36.361720207581641 ], [ 120.083301385283249, 36.361630233700552 ], [ 120.083339494653387, 36.361534611323727 ], [ 120.083339243540976, 36.361426724010585 ], [ 120.083324508655508, 36.361312777916019 ], [ 120.083299918678406, 36.361145545445503 ] ] } },
{ "type": "Feature", "properties": { "fid": 61, "road_id": "1B8", "name": "1B8", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 30.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.081527891662006, 36.362108941406667 ], [ 120.081487953705974, 36.362073325585335 ], [ 120.081469064094094, 36.361955750588841 ], [ 120.081469486179628, 36.361846253967592 ], [ 120.081481595507483, 36.36163197311064 ], [ 120.081425345192528, 36.361459060309734 ] ] } },
{ "type": "Feature", "properties": { "fid": 62, "road_id": "1B9", "name": "1B9", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 30.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.079741259986505, 36.363486957050483 ], [ 120.081289414394845, 36.364134573465506 ], [ 120.081396891422287, 36.364139823475369 ], [ 120.081743031805843, 36.364089854784446 ], [ 120.081800504742873, 36.364060950907657 ], [ 120.08186919096724, 36.363978119291623 ], [ 120.081894688784686, 36.36388100314548 ], [ 120.081887737527566, 36.363766531226418 ], [ 120.081873675840043, 36.363650975823738 ], [ 120.081873424727618, 36.36354308851061 ], [ 120.081911123812063, 36.363452967256066 ], [ 120.082058332208803, 36.363186945385628 ], [ 120.082068756759412, 36.363121342203883 ] ] } },
{ "type": "Feature", "properties": { "fid": 63, "road_id": "1B10", "name": "1B10", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 30.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.08346799307462, 36.362791460099089 ], [ 120.083428445369464, 36.362669025343585 ], [ 120.083414120769689, 36.362549578126739 ], [ 120.083351436787098, 36.362084663724268 ], [ 120.083297668221135, 36.361960062001508 ] ] } },
{ "type": "Feature", "properties": { "fid": 64, "road_id": "1B11", "name": "1B11", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 30.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.085499595540583, 36.362504869034829 ], [ 120.085395315989203, 36.361655716678484 ] ] } },
{ "type": "Feature", "properties": { "fid": 65, "road_id": "1C3", "name": "1C3", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 30.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.086563456614911, 36.363541755241179 ], [ 120.086458672379209, 36.36353006799883 ], [ 120.086354561341452, 36.363516771448374 ], [ 120.086260137987054, 36.363484836398456 ], [ 120.085795047941303, 36.363290282194775 ], [ 120.085698342080846, 36.363259283255033 ], [ 120.085641574176421, 36.363263900136623 ], [ 120.085576464984484, 36.363283936901453 ], [ 120.085350161177445, 36.363305089260898 ], [ 120.083963086059583, 36.363479330633538 ], [ 120.08385235858124, 36.363495411914876 ], [ 120.083736540266329, 36.363505581788232 ], [ 120.083686767253496, 36.363497997402824 ], [ 120.083640770516041, 36.363476865354549 ], [ 120.08359653046017, 36.36344701356775 ], [ 120.083558201812252, 36.363412070944364 ], [ 120.083530496957891, 36.363360772327553 ], [ 120.083511575511352, 36.363265875018143 ], [ 120.083470609506023, 36.363006700942201 ], [ 120.083402620079241, 36.362879932252191 ] ] } },
{ "type": "Feature", "properties": { "fid": 66, "road_id": "1B4", "name": "1B4", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 30.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.082066679396206, 36.363119527752922 ], [ 120.082165352980979, 36.363087058643515 ], [ 120.082285357856975, 36.363057839984997 ], [ 120.08340138421346, 36.362876106166077 ] ] } },
{ "type": "Feature", "properties": { "fid": 67, "road_id": "1B5", "name": "1B5", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 30.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.083401552512953, 36.362875703839045 ], [ 120.083467693319008, 36.362789916519034 ], [ 120.083564000693599, 36.36272242108209 ], [ 120.083639176019915, 36.362700922382608 ], [ 120.084439869924651, 36.362608517516662 ], [ 120.084555835613031, 36.362588954706851 ], [ 120.084685265260134, 36.362537205734704 ], [ 120.085139408495621, 36.362500270681984 ], [ 120.085238807147817, 36.362524832389248 ], [ 120.085349913077195, 36.362525927672714 ], [ 120.085579582873919, 36.362496728772683 ], [ 120.085681001119937, 36.362516462555611 ], [ 120.085786458553571, 36.362526540489824 ], [ 120.085886004579208, 36.362541709260654 ], [ 120.08598607642935, 36.362564661659803 ], [ 120.08609112357729, 36.362580240716305 ], [ 120.08618016134821, 36.362625050231159 ], [ 120.086268115635491, 36.362676970176416 ], [ 120.086351767822904, 36.362734654156206 ], [ 120.086431380822702, 36.362801993984704 ], [ 120.086475063219439, 36.362846739830246 ] ] } },
{ "type": "Feature", "properties": { "fid": 68, "road_id": "1B2", "name": "1B2", "directionality": "双向", "prohibited": false, "width": 8.0, "speed_limit": 30.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.081546062320513, 36.362953745969911 ], [ 120.081690501565163, 36.36291583940752 ], [ 120.083142781378911, 36.36265352820881 ], [ 120.083170902418885, 36.362647327953837 ], [ 120.083225887707002, 36.362622110748376 ], [ 120.083249969559361, 36.362625566342111 ], [ 120.083267598261926, 36.362637667987634 ], [ 120.083282066117647, 36.362655065612614 ], [ 120.083306010613967, 36.362708573048749 ], [ 120.083398970251295, 36.362875096369173 ] ] } },
{ "type": "Feature", "properties": { "fid": 69, "road_id": "1D5", "name": "1D5", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 30.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.089005136674004, 36.363972235393796 ], [ 120.089652635090758, 36.363464035975099 ] ] } },
{ "type": "Feature", "properties": { "fid": 70, "road_id": "1D6", "name": "1D6", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 30.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.090255250057112, 36.365630672396762 ], [ 120.09090877542063, 36.365130666892099 ] ] } },
{ "type": "Feature", "properties": { "fid": 71, "road_id": "1D2", "name": "1D2", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 30.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.088052793348353, 36.365367390544918 ], [ 120.088084465486034, 36.365269075376347 ], [ 120.08813088430901, 36.365180710803372 ], [ 120.088173148405559, 36.365088717328476 ], [ 120.088207302292219, 36.365038713238057 ], [ 120.088244380048224, 36.365008841416433 ], [ 120.088308027305473, 36.364978738517216 ], [ 120.088636170552846, 36.364940150521896 ], [ 120.088702857218223, 36.364943464642103 ], [ 120.088792568187074, 36.364986664848843 ], [ 120.088869341021677, 36.365069834846253 ], [ 120.089503811575725, 36.365908191330611 ], [ 120.089545211466401, 36.365953873286337 ], [ 120.089580468871532, 36.365978076577392 ], [ 120.089631030621078, 36.365997336405314 ], [ 120.089677174731989, 36.366009075517141 ], [ 120.090175442484551, 36.365988707500577 ], [ 120.090249155876208, 36.365957142666709 ], [ 120.090287265246346, 36.365861520289883 ] ] } },
{ "type": "Feature", "properties": { "fid": 72, "road_id": "1D3", "name": "1D3", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 30.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.09234405160457, 36.368760313672169 ], [ 120.090823255434231, 36.368124141622069 ], [ 120.090772841058111, 36.368095488857691 ], [ 120.090697677531637, 36.368012992058212 ], [ 120.090521549679309, 36.367778587167479 ], [ 120.090499114869644, 36.367701129335117 ], [ 120.090502492659155, 36.367589087295563 ], [ 120.090549847592314, 36.367503005228649 ], [ 120.090600767758076, 36.367458123809485 ], [ 120.090749309859646, 36.367365206024232 ], [ 120.091066000507098, 36.367168662956054 ], [ 120.091165873114306, 36.367142368166867 ] ] } },
{ "type": "Feature", "properties": { "fid": 73, "road_id": "1E6", "name": "1E6", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 30.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.093688743556925, 36.365536730099485 ], [ 120.093511982576331, 36.365466570140619 ], [ 120.093422156068684, 36.365410085183264 ], [ 120.093351294642076, 36.365321824349259 ], [ 120.093280696127692, 36.365237455329414 ], [ 120.093226369902581, 36.365127747665412 ], [ 120.093220354755644, 36.365015558252416 ], [ 120.093917935191428, 36.363338922106976 ], [ 120.093985275019904, 36.363259309107171 ], [ 120.094060071895186, 36.363220633842886 ], [ 120.094130682209382, 36.363201007363763 ], [ 120.094244218018261, 36.363191773600583 ], [ 120.094355639620574, 36.363183073620547 ], [ 120.094459750658331, 36.363196370171003 ], [ 120.094636774551162, 36.36327042194403 ] ] } },
{ "type": "Feature", "properties": { "fid": 74, "road_id": "1D4", "name": "1D4", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 30.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.093293408068646, 36.366481796291062 ], [ 120.092933333336191, 36.366325498830975 ], [ 120.092844968763217, 36.366279080008006 ], [ 120.092760790751313, 36.366213612399868 ], [ 120.092587638637809, 36.36605797990272 ], [ 120.092541358953284, 36.365951638228388 ], [ 120.092478838814145, 36.365847957511157 ], [ 120.090711112149862, 36.363532884108565 ], [ 120.090695178241972, 36.363412763693781 ] ] } },
{ "type": "Feature", "properties": { "fid": 75, "road_id": "1E2", "name": "1E2", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 30.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.090694242131789, 36.363410481187728 ], [ 120.090724567873593, 36.363315384635392 ], [ 120.091001104852097, 36.362663351935851 ], [ 120.091079709837402, 36.362588451321606 ], [ 120.09116992659591, 36.362558117344804 ], [ 120.091236497722491, 36.362548146714381 ], [ 120.094809711628812, 36.362097595295786 ], [ 120.094911803072762, 36.362115719770593 ], [ 120.095090436273722, 36.362190444741557 ] ] } },
{ "type": "Feature", "properties": { "fid": 76, "road_id": "1E1", "name": "1E1", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 30.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.089409363765128, 36.362739214746945 ], [ 120.089438984474327, 36.362668405189808 ], [ 120.089442445967975, 36.362592325587968 ], [ 120.08945592172654, 36.362456143926671 ], [ 120.089495903317044, 36.362365086561951 ], [ 120.089560024529291, 36.362284127166291 ], [ 120.08966411553223, 36.362216105904857 ], [ 120.089752113453997, 36.362141352664061 ], [ 120.089858076677288, 36.362077896414746 ], [ 120.089975978255325, 36.362017543242864 ], [ 120.090106754298318, 36.361962575654481 ], [ 120.090305037578062, 36.361899919941727 ], [ 120.090481810358483, 36.361866084401619 ], [ 120.090587089475221, 36.361835905756926 ], [ 120.090778608940937, 36.36181202081243 ], [ 120.091318288384031, 36.361733339252631 ], [ 120.091489328964585, 36.361672523925577 ], [ 120.091616349658224, 36.361640094609484 ], [ 120.092315067657808, 36.361542850019376 ], [ 120.092420672464897, 36.361543535017141 ], [ 120.092521827798663, 36.361559376985888 ], [ 120.092750939936252, 36.361545072144608 ], [ 120.094102966909347, 36.36143653357518 ], [ 120.094212200618344, 36.361433063846533 ], [ 120.094230808174359, 36.361393102014517 ], [ 120.094595681456013, 36.360520857015224 ] ] } },
{ "type": "Feature", "properties": { "fid": 77, "road_id": "1E3", "name": "1E3", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 30.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.094595008258068, 36.360522466323339 ], [ 120.094686152891754, 36.360309101541752 ], [ 120.094741669904295, 36.360239670215137 ], [ 120.094788813794679, 36.36020833645884 ], [ 120.094844267137887, 36.360184260506408 ], [ 120.094955110155013, 36.360181463975692 ], [ 120.095048187113548, 36.360216617641854 ], [ 120.095782704812734, 36.360521986592822 ] ] } },
{ "type": "Feature", "properties": { "fid": 78, "road_id": "1E4", "name": "1E4", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 30.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.094212368917823, 36.361432661519508 ], [ 120.094279864354775, 36.361528968894099 ], [ 120.094268177112426, 36.361633753129794 ], [ 120.09417907210738, 36.361923607798907 ], [ 120.094181605725851, 36.362030559001866 ], [ 120.09419979030514, 36.362172420993559 ] ] } },
{ "type": "Feature", "properties": { "fid": 79, "road_id": "1E5", "name": "1E5", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 30.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.092524110304709, 36.361558440875712 ], [ 120.092503954436268, 36.361769355742972 ], [ 120.092461427427466, 36.361857457403715 ], [ 120.092412726098445, 36.361946758086866 ], [ 120.092384945774938, 36.362044810343193 ], [ 120.092399007462461, 36.362160365745872 ], [ 120.092426047353896, 36.362398586981627 ] ] } },
{ "type": "Feature", "properties": { "fid": 80, "road_id": "1D8", "name": "1D8", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 30.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.092589247945924, 36.366058653100659 ], [ 120.09251184198304, 36.36613972803513 ], [ 120.092419426422623, 36.366206960559815 ], [ 120.092356304989849, 36.366244847087373 ], [ 120.092279930641126, 36.366260171466628 ], [ 120.091943414271611, 36.366336857032266 ] ] } },
{ "type": "Feature", "properties": { "fid": 81, "road_id": "1D7", "name": "1D7", "directionality": "双向", "prohibited": false, "width": 10.0, "speed_limit": 30.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.091505218097993, 36.364572746330069 ], [ 120.091284360870119, 36.36475265045776 ], [ 120.091229959175877, 36.364792293666895 ], [ 120.091176788338714, 36.36481543350915 ], [ 120.09105131417509, 36.364821564194891 ], [ 120.090935232947928, 36.364827842254073 ], [ 120.090847414234261, 36.364870524871321 ], [ 120.09075338936573, 36.36493708419809 ] ] } },
{ "type": "Feature", "properties": { "fid": 82, "road_id": "XC1", "name": "XC1", "directionality": "双向", "prohibited": false, "width": 15.0, "speed_limit": 50.0, "width_limit": 3.5, "height_limit": 3.2 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.087792927807811, 36.377562881777465 ], [ 120.091385653739394, 36.368972058451163 ], [ 120.091460526083807, 36.368784032313748 ], [ 120.091532179811992, 36.368594659780449 ], [ 120.0915831754469, 36.368400427488147 ], [ 120.09161403881302, 36.368209119065178 ], [ 120.091626936877603, 36.368006513650748 ], [ 120.091605481812593, 36.367804665138394 ], [ 120.091559329466705, 36.367607612715716 ], [ 120.09149813568861, 36.367419395570366 ], [ 120.091409026013395, 36.367234628118837 ], [ 120.091292484413458, 36.367043112770624 ], [ 120.090472126419428, 36.365849031958305 ] ] } },
{ "type": "Feature", "properties": { "fid": 83, "road_id": "XC2", "name": "XC2", "directionality": "双向", "prohibited": false, "width": 15.0, "speed_limit": 50.0, "width_limit": 3.5, "height_limit": 3.2 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.076927347458437, 36.373018590562467 ], [ 120.080520204846152, 36.364429713143245 ], [ 120.080600841225092, 36.36424598910569 ], [ 120.080678932185748, 36.364059309364144 ], [ 120.080763723291099, 36.363879214228518 ], [ 120.080865953873499, 36.363702632456018 ], [ 120.080986580969153, 36.363540837162141 ], [ 120.081122312275099, 36.363397178419227 ], [ 120.08128083680694, 36.363266836261595 ], [ 120.081451267858853, 36.363162274868486 ], [ 120.081632574707953, 36.363076917592657 ], [ 120.081786964548186, 36.363024264344979 ], [ 120.081924556274686, 36.362989166113131 ], [ 120.082105294556015, 36.362950371192547 ], [ 120.083174356230202, 36.362767900506384 ] ] } },
{ "type": "Feature", "properties": { "fid": 84, "road_id": "FB1", "name": "FB1", "directionality": "双向", "prohibited": true, "width": 15.0, "speed_limit": 50.0, "width_limit": 3.5, "height_limit": 3.8 }, "geometry": { "type": "LineString", "coordinates": [ [ 120.079467258498624, 36.366228095481588 ], [ 120.074334670015787, 36.364082474242814 ] ] } }
]
}

View File

@ -0,0 +1,51 @@
import json
import yaml # 需要安装 PyYAML: pip install pyyaml
geojson_file = 'src/main/resources/data/airport_roads.geojson'
yaml_file = 'src/main/resources/config/airport_roads.yaml' # 目标路径
output_data = {
"icao": "ZSQD", # 青岛流亭机场 ICAO 代码
'roads': []
}
with open(geojson_file, 'r', encoding='utf-8') as f:
geojson_data = json.load(f)
for feature in geojson_data['features']:
props = feature['properties']
coords = feature['geometry']['coordinates']
road_entry = {
'id': props.get('road_id'),
'name': props.get('name'),
'geometry': {
'type': 'LineString',
'coordinates': coords
},
'width': props.get('width'),
'speed_limit': props.get('speed_limit'),
'directionality': props.get('directionality'),
'prohibited': props.get('prohibited'),
'width_limit': props.get('width_limit'),
'height_limit': props.get('height_limit')
}
output_data['roads'].append(road_entry)
# 自定义 YAML 格式化
class CustomDumper(yaml.Dumper):
def increase_indent(self, flow=False, indentless=False):
return super(CustomDumper, self).increase_indent(flow, False)
def coordinate_representer(dumper, data):
if isinstance(data, list) and len(data) == 2 and all(isinstance(x, (int, float)) for x in data):
return dumper.represent_sequence('tag:yaml.org,2002:seq', data, flow_style=True)
return dumper.represent_sequence('tag:yaml.org,2002:seq', data, flow_style=False)
yaml.add_representer(list, coordinate_representer)
with open(yaml_file, 'w', encoding='utf-8') as f:
yaml.dump(output_data, f, allow_unicode=True, Dumper=CustomDumper, default_flow_style=False, sort_keys=False)
print(f"YAML 文件已生成: {yaml_file}")