增加物理车道数渲染及屏蔽物理车道数道路属性

This commit is contained in:
qiji4215 2023-12-01 17:55:13 +08:00
parent 1d0611b7e9
commit 2f513c8b43
5 changed files with 52 additions and 31 deletions

View File

@ -65,8 +65,8 @@
"table": "OMDB_LINK_NAME", "table": "OMDB_LINK_NAME",
"code": 2011, "code": 2011,
"name": "道路名", "name": "道路名",
"zoomMin": 18, "zoomMin": 15,
"zoomMax": 20, "zoomMax": 17,
"checkLinkId": false, "checkLinkId": false,
"transformer": [ "transformer": [
{ {
@ -246,7 +246,18 @@
"2097": { "2097": {
"table": "OMDB_PHY_LANENUM", "table": "OMDB_PHY_LANENUM",
"code": 2097, "code": 2097,
"name": "物理车道数" "name": "物理车道数",
"zoomMin": 15,
"zoomMax": 18,
"catch": true,
"transformer": [
{
"k": "geometry",
"v": "~",
"klib": "geometry",
"vlib": "generatePhyName()"
}
]
}, },
"2201": { "2201": {
"table": "OMDB_BRIDGE", "table": "OMDB_BRIDGE",

View File

@ -740,6 +740,15 @@ class ImportPreProcess {
} }
} }
/**
* 生成默认物理车道数据
* */
fun generatePhyName(renderEntity: RenderEntity) {
// 物理车道数
if (renderEntity.properties.containsKey("laneS2e")&&renderEntity.properties.containsKey("laneE2s")) {
renderEntity.properties["name"] = "${renderEntity.properties["laneS2e"]}|${renderEntity.properties["laneE2s"]}"
}
}
/** /**
* 生成默认道路名数据 * 生成默认道路名数据
@ -1224,6 +1233,8 @@ class ImportPreProcess {
if (renderEntity.properties.containsKey("maxSpeed") && renderEntity.properties.containsKey("minSpeed")) { if (renderEntity.properties.containsKey("maxSpeed") && renderEntity.properties.containsKey("minSpeed")) {
renderEntity.properties["ref"] = renderEntity.properties["ref"] =
"${renderEntity.properties["maxSpeed"]}|${renderEntity.properties["minSpeed"]}" "${renderEntity.properties["maxSpeed"]}|${renderEntity.properties["minSpeed"]}"
renderEntity.propertiesDb =
DeflaterUtil.zipString(JSON.toJSONString(renderEntity.properties))
} }
} }
@ -1243,13 +1254,11 @@ class ImportPreProcess {
val linkGeometry = val linkGeometry =
GeometryTools.createGeometry(zLevelObject.optString("linkGeometry")) GeometryTools.createGeometry(zLevelObject.optString("linkGeometry"))
val coordinates = linkGeometry!!.coordinates val coordinates = linkGeometry!!.coordinates
val referenceEntityList = mutableListOf<ReferenceEntity>()
// 判断当前数据的startEnd如果是0则向前和向后都绘制线如果是1起点则只绘制前两个点组成的线如果是2终点则只绘制后两个点组成的线 // 判断当前数据的startEnd如果是0则向前和向后都绘制线如果是1起点则只绘制前两个点组成的线如果是2终点则只绘制后两个点组成的线
if (startEnd == 0 || startEnd == 1) { // 处理向后的线 if (startEnd == 0 || startEnd == 1) { // 处理向后的线
val zLevelReference = createZLevelReference(renderEntity) val zLevelReference = createZLevelReference(renderEntity)
zLevelReference.properties["type"] = "zlevelLine" zLevelReference.properties["type"] = "zlevelLine"
// zLevelReference.properties["name"] = zLevel.toString() zLevelReference.propertiesDb = DeflaterUtil.zipString(JSON.toJSONString(zLevelReference.properties))
// 根据shpSeqNum获取对应的点位
if (shpSeqNum < coordinates.size - 1) { if (shpSeqNum < coordinates.size - 1) {
val currentCoordinate = coordinates[shpSeqNum] val currentCoordinate = coordinates[shpSeqNum]
var nextCoordinate = coordinates[shpSeqNum + 1] var nextCoordinate = coordinates[shpSeqNum + 1]
@ -1279,26 +1288,25 @@ class ImportPreProcess {
), GeoPoint(nextCoordinate.y, nextCoordinate.x) ), GeoPoint(nextCoordinate.y, nextCoordinate.x)
) )
).toString() ).toString()
renderEntity.referenceEntitys.add(zLevelReference)
referenceEntityList.add(zLevelReference)
val zLevelNameReference = createZLevelReference(renderEntity) val zLevelNameReference = createZLevelReference(renderEntity)
zLevelNameReference.properties["type"] = "zlevelName" zLevelNameReference.properties["type"] = "zlevelName"
zLevelNameReference.properties["name"] = zLevel.toString() zLevelNameReference.properties["name"] = zLevel.toString()
zLevelNameReference.propertiesDb = DeflaterUtil.zipString(JSON.toJSONString(zLevelNameReference.properties))
zLevelNameReference.geometry = GeometryTools.createGeometry( zLevelNameReference.geometry = GeometryTools.createGeometry(
GeoPoint( GeoPoint(
nextCoordinate.y, nextCoordinate.y,
nextCoordinate.x nextCoordinate.x
) )
).toString() ).toString()
referenceEntityList.add(zLevelNameReference) renderEntity.referenceEntitys.add(zLevelNameReference)
} }
} }
if (startEnd == 0 || startEnd == 2) { // 处理向前的线 if (startEnd == 0 || startEnd == 2) { // 处理向前的线
val zLevelReference = createZLevelReference(renderEntity) val zLevelReference = createZLevelReference(renderEntity)
zLevelReference.properties["type"] = "zlevelLine" zLevelReference.properties["type"] = "zlevelLine"
// zLevelReference.properties["name"] = zLevel.toString() zLevelReference.propertiesDb = DeflaterUtil.zipString(JSON.toJSONString(zLevelReference.properties))
// 根据shpSeqNum获取对应的点位 // 根据shpSeqNum获取对应的点位
if (shpSeqNum < coordinates.size && shpSeqNum > 0) { if (shpSeqNum < coordinates.size && shpSeqNum > 0) {
val currentCoordinate = coordinates[shpSeqNum] val currentCoordinate = coordinates[shpSeqNum]
@ -1320,7 +1328,6 @@ class ImportPreProcess {
// 计算偏移后的点 // 计算偏移后的点
preCoordinate = preCoordinate =
Coordinate(currentCoordinate.getX() + dx, currentCoordinate.getY() + dy) Coordinate(currentCoordinate.getX() + dx, currentCoordinate.getY() + dy)
// }
zLevelReference.geometry = GeometryTools.createLineString( zLevelReference.geometry = GeometryTools.createLineString(
arrayListOf( arrayListOf(
GeoPoint( GeoPoint(
@ -1329,19 +1336,17 @@ class ImportPreProcess {
), GeoPoint(preCoordinate.y, preCoordinate.x) ), GeoPoint(preCoordinate.y, preCoordinate.x)
) )
).toString() ).toString()
referenceEntityList.add(zLevelReference) renderEntity.referenceEntitys.add(zLevelReference)
val zLevelNameReference = createZLevelReference(renderEntity) val zLevelNameReference = createZLevelReference(renderEntity)
zLevelNameReference.properties["type"] = "zlevelName" zLevelNameReference.properties["type"] = "zlevelName"
zLevelNameReference.properties["name"] = zLevel.toString() zLevelNameReference.properties["name"] = zLevel.toString()
zLevelNameReference.propertiesDb = DeflaterUtil.zipString(JSON.toJSONString(zLevelNameReference.properties))
zLevelNameReference.geometry = zLevelNameReference.geometry =
GeometryTools.createGeometry(GeoPoint(preCoordinate.y, preCoordinate.x)) GeometryTools.createGeometry(GeoPoint(preCoordinate.y, preCoordinate.x))
.toString() .toString()
referenceEntityList.add(zLevelNameReference) renderEntity.referenceEntitys.add(zLevelNameReference)
} }
} }
insertData(referenceEntityList)
// 移除zlevelList减小原始数据大小 // 移除zlevelList减小原始数据大小
renderEntity.properties.remove("zlevelList") renderEntity.properties.remove("zlevelList")
} }

View File

@ -804,7 +804,7 @@ class MainViewModel @Inject constructor(
) )
} }
} }
DataCodeEnum.OMDB_PHY_LANENUM.code,//物理车道数 //DataCodeEnum.OMDB_PHY_LANENUM.code,//物理车道数
DataCodeEnum.OMDB_LANE_NUM.code, //车道数 DataCodeEnum.OMDB_LANE_NUM.code, //车道数
DataCodeEnum.OMDB_RD_LINK_KIND.code,//种别, DataCodeEnum.OMDB_RD_LINK_KIND.code,//种别,
DataCodeEnum.OMDB_RD_LINK_FUNCTION_CLASS.code, // 功能等级, DataCodeEnum.OMDB_RD_LINK_FUNCTION_CLASS.code, // 功能等级,
@ -960,7 +960,7 @@ class MainViewModel @Inject constructor(
) )
} }
} }
DataCodeEnum.OMDB_PHY_LANENUM.code,//物理车道数 //DataCodeEnum.OMDB_PHY_LANENUM.code,//物理车道数
DataCodeEnum.OMDB_LANE_NUM.code, //车道数 DataCodeEnum.OMDB_LANE_NUM.code, //车道数
DataCodeEnum.OMDB_RD_LINK_KIND.code,//种别, DataCodeEnum.OMDB_RD_LINK_KIND.code,//种别,
DataCodeEnum.OMDB_RD_LINK_FUNCTION_CLASS.code, // 功能等级, DataCodeEnum.OMDB_RD_LINK_FUNCTION_CLASS.code, // 功能等级,

View File

@ -108,10 +108,10 @@ class SignUtil {
} }
} }
//物理车道数OMDB_PHY_LANENUM //物理车道数OMDB_PHY_LANENUM
DataCodeEnum.OMDB_LANE_NUM.code, /* DataCodeEnum.OMDB_LANE_NUM.code,
DataCodeEnum.OMDB_PHY_LANENUM.code -> { DataCodeEnum.OMDB_PHY_LANENUM.code -> {
"${data.properties["laneS2e"]}|${data.properties["laneE2s"]}" "${data.properties["laneS2e"]}|${data.properties["laneE2s"]}"
} }*/
//常规点限速,条件点限速 //常规点限速,条件点限速
DataCodeEnum.OMDB_SPEEDLIMIT.code, DataCodeEnum.OMDB_SPEEDLIMIT_COND.code -> getSpeedLimitMaxText(data) DataCodeEnum.OMDB_SPEEDLIMIT.code, DataCodeEnum.OMDB_SPEEDLIMIT_COND.code -> getSpeedLimitMaxText(data)
@ -304,7 +304,7 @@ class SignUtil {
title = "逆方向车道数", text = "${data.properties["laneE2s"]}" title = "逆方向车道数", text = "${data.properties["laneE2s"]}"
) )
) )
var str = when (data.properties["laneClass"]) { /* var str = when (data.properties["laneClass"]) {
"0" -> "未赋值" "0" -> "未赋值"
"1" -> "一条车道" "1" -> "一条车道"
"2" -> "两或三条" "2" -> "两或三条"
@ -317,7 +317,7 @@ class SignUtil {
TwoItemAdapterItem( TwoItemAdapterItem(
title = "车道数等级", text = str title = "车道数等级", text = str
) )
) )*/
} }
//路口 //路口
DataCodeEnum.OMDB_INTERSECTION.code -> { DataCodeEnum.OMDB_INTERSECTION.code -> {
@ -1928,7 +1928,7 @@ class SignUtil {
*/ */
fun getRoadInfoIndex(element: RenderEntity): Int { fun getRoadInfoIndex(element: RenderEntity): Int {
return when (element.code) { return when (element.code) {
DataCodeEnum.OMDB_PHY_LANENUM.code,//物理车道数 //DataCodeEnum.OMDB_PHY_LANENUM.code,//物理车道数
DataCodeEnum.OMDB_LANE_NUM.code -> 0 DataCodeEnum.OMDB_LANE_NUM.code -> 0
DataCodeEnum.OMDB_RD_LINK_KIND.code -> 1 DataCodeEnum.OMDB_RD_LINK_KIND.code -> 1
DataCodeEnum.OMDB_RD_LINK_FUNCTION_CLASS.code -> 2 DataCodeEnum.OMDB_RD_LINK_FUNCTION_CLASS.code -> 2

View File

@ -1553,6 +1553,11 @@
<text use="road" size="16"></text> <text use="road" size="16"></text>
</m> </m>
<!-- 物理车道数 -->
<m v="OMDB_PHY_LANENUM">
<text use="road" size="10" ></text>
</m>
<!-- 车信 --> <!-- 车信 -->
<m v="OMDB_LANEINFO" > <m v="OMDB_LANEINFO" >
<m k="symbol" v="true"> <m k="symbol" v="true">
@ -1621,22 +1626,22 @@
<!-- 中央隔离带 --> <!-- 中央隔离带 -->
<m v="OMDB_LINK_MEDIAN"> <m v="OMDB_LINK_MEDIAN">
<m k="medianSurface" v="0"> <m k="medianSurface" v="0">
<area use="obj-area" stroke="#00000000" stroke-width="1" src="assets:omdb/icon_2071_0.svg"></area> <area use="obj-area" hasDirect="true" stroke="#00000000" stroke-width="1" src="assets:omdb/icon_2071_0.svg"></area>
</m> </m>
<m k="medianSurface" v="1"> <m k="medianSurface" v="1">
<area use="obj-area" stroke="#00000000" stroke-width="1" src="assets:omdb/icon_2071_1.svg"></area> <area use="obj-area" hasDirect="true" stroke="#00000000" stroke-width="1" src="assets:omdb/icon_2071_1.svg"></area>
</m> </m>
<m k="medianSurface" v="2"> <m k="medianSurface" v="2">
<area use="obj-area" stroke="#00000000" stroke-width="1" src="assets:omdb/icon_2071_2.svg"></area> <area use="obj-area" hasDirect="true" stroke="#00000000" stroke-width="1" src="assets:omdb/icon_2071_2.svg"></area>
</m> </m>
<m k="medianSurface" v="3"> <m k="medianSurface" v="3">
<area use="obj-area" stroke="#ffffff" stroke-width="1" src="assets:omdb/icon_2071_0.svg"></area> <area use="obj-area" hasDirect="true" stroke="#ffffff" stroke-width="1" src="assets:omdb/icon_2071_0.svg"></area>
</m> </m>
<m k="medianSurface" v="4"> <m k="medianSurface" v="4">
<area use="obj-area" stroke="#ffffff" stroke-width="1" src="assets:omdb/icon_2071_1.svg"></area> <area use="obj-area" hasDirect="true" stroke="#ffffff" stroke-width="1" src="assets:omdb/icon_2071_1.svg"></area>
</m> </m>
<m k="medianSurface" v="5"> <m k="medianSurface" v="5">
<area use="obj-area" stroke="#ffffff" stroke-width="1" src="assets:omdb/icon_2071_2.svg"></area> <area use="obj-area" hasDirect="true" stroke="#ffffff" stroke-width="1" src="assets:omdb/icon_2071_2.svg"></area>
</m> </m>
</m> </m>
@ -2171,7 +2176,7 @@
<!-- zLevel --> <!-- zLevel -->
<m v="OMDB_ZLEVEL"> <m v="OMDB_ZLEVEL">
<m k="type" v="zlevelLine"> <m k="type" v="zlevelLine">
<line stroke="#59feb8" width="0.2" /> <line stroke="#59feb8" width="0.5" />
</m> </m>
<m k="type" v="zlevelName"> <m k="type" v="zlevelName">
<caption k="name" fill="#000000" stroke="#f1fe59" size="12" priority="0" ></caption> <caption k="name" fill="#000000" stroke="#f1fe59" size="12" priority="0" ></caption>