增加车道类型、车道点限速渲染导入

This commit is contained in:
2023-10-24 11:03:57 +08:00
parent 00515cfe37
commit 8c49ac7bc8
8 changed files with 125 additions and 3 deletions

View File

@@ -149,6 +149,22 @@
"zoomMin": 18,
"zoomMax": 20
},
"2092":{
"table": "OMDB_LANE_TYPE_ACCESS",
"code": 2092,
"name": "车道类型",
"catch":true,
"zoomMin": 18,
"zoomMax": 20,
"transformer": [
{
"k": "geometry",
"v": "~",
"klib": "geometry",
"vlib": "generateLaneTypeAccessS2ERefPoint()"
}
]
},
"2201":{
"table": "OMDB_BRIDGE",
"code": 2201,
@@ -408,6 +424,23 @@
}
]
},
"4005": {
"table": "OMDB_LANE_SPEEDLIMIT",
"code": 4005,
"name": "车道点限速",
"zoomMin": 18,
"zoomMax": 20,
"filterData": true,
"catch": true,
"transformer": [
{
"k": "geometry",
"v": "~",
"klib": "geometry",
"vlib": "obtainLaneSpeedLimitName()"
}
]
},
"4006": {
"table": "OMDB_RESTRICTION",
"code": 4006,

View File

@@ -236,7 +236,7 @@ class ImportOMDBHelper @AssistedInject constructor(
}
elementIndex += 1
dataIndex += 1
Log.d("ImportOMDBHelper", "解析第:${index + 1}")
Log.d("ImportOMDBHelper", "解析第:${index + 1}---${txtFile?.name}")
val map = gson.fromJson<Map<String, Any>>(
line,
object : TypeToken<Map<String, Any>>() {}.getType()
@@ -799,6 +799,7 @@ class ImportOMDBHelper @AssistedInject constructor(
if (Realm.getInstance(currentInstallTaskConfig).isInTransaction) {
Realm.getInstance(currentInstallTaskConfig).cancelTransaction()
}
Log.e("ImportOMDBHelper", "安装失败", e)
throw e
}
emit("finish")

View File

@@ -20,6 +20,7 @@ class ImportPreProcess {
lateinit var cacheRdLink: Map<String?, RenderEntity>
val defaultTranslateDistance = 3.0
val testFlag: Boolean = false
var realm:Realm? = null
fun checkCircleRoad(renderEntity: RenderEntity): Boolean {
val linkInId = renderEntity.properties["linkIn"]
val linkOutId = renderEntity.properties["linkOut"]
@@ -223,6 +224,59 @@ class ImportPreProcess {
insertData(listResult)
}
/**
* 生成车道类型起终点参考数据
* */
fun generateLaneTypeAccessS2ERefPoint(renderEntity: RenderEntity) {
// 如果车道类型非常规车道(第0bit的数据),则需要生成辅助数据
if (renderEntity.properties["laneType"]!!.toInt()>0) {
val geometry = GeometryTools.createGeometry(renderEntity.properties["geometry"])
val pointEnd = geometry!!.coordinates[geometry.numPoints - 1] // 获取这个geometry对应的结束点坐标
val pointStart = geometry!!.coordinates[0] // 获取这个geometry对应的起点
val listResult = mutableListOf<ReferenceEntity>()
// 将这个起终点的线记录在数据中
val startReference = ReferenceEntity()
startReference.renderEntityId = renderEntity.id
startReference.name = "${renderEntity.name}参考点"
startReference.code = renderEntity.code
startReference.table = renderEntity.table
startReference.zoomMin = renderEntity.zoomMin
startReference.zoomMax = renderEntity.zoomMax
startReference.taskId = renderEntity.taskId
startReference.enable = renderEntity.enable
// 起点坐标
startReference.geometry =
GeometryTools.createGeometry(GeoPoint(pointStart.y, pointStart.x)).toString()
startReference.properties["qi_table"] = renderEntity.table
startReference.properties["type"] = "s_2_p"
startReference.properties["geometry"] = startReference.geometry
listResult.add(startReference)
val endReference = ReferenceEntity()
endReference.renderEntityId = renderEntity.id
endReference.name = "${renderEntity.name}参考点"
endReference.code = renderEntity.code
endReference.table = renderEntity.table
endReference.zoomMin = renderEntity.zoomMin
endReference.zoomMax = renderEntity.zoomMax
endReference.taskId = renderEntity.taskId
endReference.enable = renderEntity.enable
// 终点坐标
endReference.geometry =
GeometryTools.createGeometry(GeoPoint(pointEnd.y, pointEnd.x)).toString()
endReference.properties["qi_table"] = renderEntity.table
endReference.properties["type"] = "e_2_p"
endReference.properties["geometry"] = endReference.geometry
listResult.add(endReference)
insertData(listResult)
}
}
fun generateS2EReferencePoint(
renderEntity: RenderEntity,
proKey: String = "",
@@ -562,7 +616,7 @@ class ImportPreProcess {
}
// 获取最小的shape值将其记录增加记录在properties的name属性下
if (shape != null) {
renderEntity.properties["name"] = shape["name"].toString()
renderEntity.properties["name"] = shape.optString("name", "")
} else {
renderEntity.properties["name"] = ""
}
@@ -932,4 +986,13 @@ class ImportPreProcess {
}
return false
}
/**
* 生成车道点限速的名称
* */
fun obtainLaneSpeedLimitName(renderEntity: RenderEntity) {
if (renderEntity.properties.containsKey("maxSpeed")&&renderEntity.properties.containsKey("minSpeed")) {
renderEntity.properties["ref"] = "${renderEntity.properties["maxSpeed"]}|${renderEntity.properties["minSpeed"]}"
}
}
}

View File

@@ -182,7 +182,7 @@ class PersonalCenterFragment(private var indoorDataListener: ((Boolean) -> Unit?
// 定位到指定位置
niMapController.mMapView.vtmMap.animator()
// .animateTo(GeoPoint( 40.05108004733645, 116.29187746293708 ))
.animateTo(GeoPoint(39.617824808620675, 115.52374142452308))
.animateTo(GeoPoint(31.205913609396507, 121.56955739056055 ))
}
R.id.personal_center_menu_open_all_layer -> {