1、修改物理车道数编码2、修复车道中心面断面问题3、修复中央隔离带按通行方向左右显示4、修复设施分离按通行方向左右显示5、更新可变线限速样式

This commit is contained in:
qiji4215 2023-12-06 17:21:46 +08:00
parent 3fc43af5bf
commit 517d5a884c
11 changed files with 138 additions and 89 deletions
app/src/main
collect-library/src/main
assets
java/com/navinfo/collect/library/enums

@ -243,22 +243,6 @@
}
]
},
"2097": {
"table": "OMDB_PHY_LANENUM",
"code": 2097,
"name": "物理车道数",
"zoomMin": 15,
"zoomMax": 18,
"catch": true,
"transformer": [
{
"k": "geometry",
"v": "~",
"klib": "geometry",
"vlib": "generatePhyName()"
}
]
},
"2201": {
"table": "OMDB_BRIDGE",
"code": 2201,
@ -293,6 +277,22 @@
}
]
},
"2617": {
"table": "OMDB_PHY_LANENUM",
"code": 2617,
"name": "物理车道数",
"zoomMin": 15,
"zoomMax": 18,
"catch": true,
"transformer": [
{
"k": "geometry",
"v": "~",
"klib": "geometry",
"vlib": "generatePhyName()"
}
]
},
"2638": {
"table": "OMDB_LANE_ACCESS",
"code": 2638,

@ -194,12 +194,12 @@ class ImportOMDBHelper @AssistedInject constructor(
tableNum += importConfig.tableMap.size
}
//缓存任务link信息便于下面与数据进行任务link匹配
val hashMap: HashMap<Long, HadLinkDvoBean> = HashMap<Long, HadLinkDvoBean>()
val hashMap: HashMap<String, HadLinkDvoBean> = HashMap<String, HadLinkDvoBean>()
// val lineList = arrayOfNulls<LineString>(task.hadLinkDvoList.size)
// var index = 0
task.hadLinkDvoList.forEach {
hashMap[it.linkPid.toLong()] = it
hashMap[it.linkPid] = it
// lineList[index] = GeometryTools.createGeometry(it.geometry) as LineString
// index++
}
@ -310,7 +310,7 @@ class ImportOMDBHelper @AssistedInject constructor(
currentEntry: MutableMap.MutableEntry<String, TableInfo>,
task: TaskBean,
importConfig: ImportConfig,
hashMap: HashMap<Long, HadLinkDvoBean>,
hashMap: HashMap<String, HadLinkDvoBean>,
isEmit: Boolean = true) = callbackFlow <Event>{
val cancellable= importData(f,unZipFiles,currentEntry,task,importConfig,hashMap,isEmit,object :MultiPathsCallback<String>{
override fun onProgress(value: Int) {
@ -342,7 +342,7 @@ class ImportOMDBHelper @AssistedInject constructor(
currentEntry: MutableMap.MutableEntry<String, TableInfo>,
task: TaskBean,
importConfig: ImportConfig,
hashMap: HashMap<Long, HadLinkDvoBean>,
hashMap: HashMap<String, HadLinkDvoBean>,
isEmit: Boolean = true, callback: MultiPathsCallback<String>?
):NonCancellable {
val resHashMap: HashMap<String, RenderEntity> = HashMap() //define empty hashmap
@ -379,13 +379,6 @@ class ImportOMDBHelper @AssistedInject constructor(
}
newTime = System.currentTimeMillis()
// if (elementIndex % 50 == 0) {
// Log.e(
// "jingo",
// "安装数据 ${currentConfig.table} $elementIndex ${listRenderEntity.size} ${newTime - time}"
// )
// }
time = newTime
elementIndex += 1
@ -409,16 +402,25 @@ class ImportOMDBHelper @AssistedInject constructor(
renderEntity.zoomMin = map["qi_zoomMin"].toString().toInt()
renderEntity.zoomMax = map["qi_zoomMax"].toString().toInt()
//缓存当前数据对应的导航linkpid信息根据与任务对应关系保留任务唯一linkpid
var linkPidList = mutableListOf<String>()
// 在外层记录当前数据的linkPid
if (map.containsKey("linkPid")) {
renderEntity.linkPid = map["linkPid"].toString().split(",")[0]
if (map.containsKey("linkPid")&& map["linkPid"].toString().split(",").isNotEmpty()) {
linkPidList.addAll(map["linkPid"].toString().split(","))
} else if (map.containsKey("linkList")) {
val linkList = map["linkList"].toString()
if (!linkList.isNullOrEmpty() && linkList != "null") {
val list: List<LinkList> = gson.fromJson(
linkList, object : TypeToken<List<LinkList>>() {}.type
)
renderEntity.linkPid = list[0].linkPid
val list: List<LinkList> = gson.fromJson(linkList, object : TypeToken<List<LinkList>>() {}.type)
list.forEach {
linkPidList.add(it.linkPid)
}
}
}
@ -514,25 +516,16 @@ class ImportOMDBHelper @AssistedInject constructor(
//遍历判断只显示与任务Link相关的任务数据
if (currentConfig.checkLinkId) {
if (renderEntity.linkPid.isNotEmpty()) {
if (linkPidList.isNotEmpty()) {
val currentLinkPid = renderEntity.linkPid
if (!currentLinkPid.isNullOrEmpty() && currentLinkPid != "null") {
val list = currentLinkPid.split(",")
if (list.isNotEmpty()) {
m@ for (linkPid in list) {
if (hashMap.containsKey(linkPid.toLong())) {
renderEntity.enable = 1
break@m
}
}
m@ for (linkPid in linkPidList) {
Log.e("jingo", "$linkPid=======linkPid")
if (linkPid!=null&&hashMap.containsKey(linkPid)) {
renderEntity.enable = 1
renderEntity.linkPid = linkPid
break@m
}
}
} else if (renderEntity.code.toInt() == DataCodeEnum.OMDB_INTERSECTION.code.toInt() || renderEntity.code.toInt() == DataCodeEnum.OMDB_LANE_CONSTRUCTION.code.toInt() && renderEntity.properties.containsKey(
"linkList"
)
@ -548,8 +541,9 @@ class ImportOMDBHelper @AssistedInject constructor(
)
m@ for (link in list) {
if (hashMap.containsKey(link.linkPid.toLong())) {
if (hashMap.containsKey(link.linkPid)) {
renderEntity.enable = 1
renderEntity.linkPid = link.linkPid
break@m
}
}

@ -271,7 +271,6 @@ class ImportPreProcess {
// 将这个起终点的线记录在数据中
val startReference = ReferenceEntity()
// startReference.renderEntityId = renderEntity.id
startReference.name = "${renderEntity.name}参考点"
startReference.code = renderEntity.code
startReference.table = renderEntity.table
@ -285,7 +284,6 @@ class ImportPreProcess {
startReference.properties["qi_table"] = renderEntity.table
startReference.properties["type"] =
"s${if (renderEntity.properties["laneType"]!!.toInt() and (0b1000) > 0) "_dec" else "_acc"}"
startReference.properties["geometry"] = startReference.geometry
startReference.propertiesDb = DeflaterUtil.zipString(JSON.toJSONString(startReference.properties))
renderEntity.referenceEntitys.add(startReference)
@ -304,7 +302,6 @@ class ImportPreProcess {
endReference.properties["qi_table"] = renderEntity.table
endReference.properties["type"] =
"e${if (renderEntity.properties["laneType"]!!.toInt() and (0b1000) > 0) "_dec" else "_acc"}"
endReference.properties["geometry"] = endReference.geometry
endReference.propertiesDb = DeflaterUtil.zipString(JSON.toJSONString(endReference.properties))
renderEntity.referenceEntitys.add(endReference)
}
@ -353,7 +350,6 @@ class ImportPreProcess {
Log.e("qj", "generateS2EReferencePoint===${startReference.geometry}")
startReference.properties["geometry"] = startReference.geometry
startReference.propertiesDb =
DeflaterUtil.zipString(JSON.toJSONString(startReference.properties))
listResult.add(startReference)
@ -388,7 +384,6 @@ class ImportPreProcess {
endReference.properties["type"] = "e_2_p"
Log.e("qj", "generateS2EReferencePoint===e_2_p${renderEntity.name}")
}
endReference.properties["geometry"] = endReference.geometry
endReference.propertiesDb =
DeflaterUtil.zipString(JSON.toJSONString(endReference.properties))
renderEntity.referenceEntitys.add(endReference)
@ -844,14 +839,24 @@ class ImportPreProcess {
when(renderEntity.properties["direct"]?.toInt()){
0,1,2->{
if (medianWidth != null) {
angleReference.geometry =
GeometryTools.computeLine(0.000015, 0.0, renderEntity.geometry)
if(side=="0"){
angleReference.geometry =
GeometryTools.computeLine(0.000015, 0.0, renderEntity.geometry)
}else{
angleReference.geometry =
GeometryTools.computeLine( 0.0, 0.000015,renderEntity.geometry)
}
}
}
3->{
if (medianWidth != null) {
angleReference.geometry =
GeometryTools.computeLine(0.0, 0.000015, renderEntity.geometry)
if(side=="0"){
angleReference.geometry =
GeometryTools.computeLine(0.0, 0.000015, renderEntity.geometry)
}else{
angleReference.geometry =
GeometryTools.computeLine(0.000015, 0.0, renderEntity.geometry)
}
}
}
}

@ -105,6 +105,13 @@ class SignMoreInfoFragment : BaseFragment() {
}
else -> {
val adapter = SignUtil.getMoreInfoAdapter(it.renderEntity)
//增加详情为空不显示业务
if(adapter==null || adapter.data.isEmpty()){
activity?.run {
supportFragmentManager.beginTransaction().remove(this@SignMoreInfoFragment)
.commit()
}
}
binding.signInfoRecyclerview.adapter = adapter
}
}

@ -52,6 +52,8 @@ import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
/**
* Tools for handler picture

@ -833,16 +833,9 @@ class SignUtil {
else -> ""
}))
}
//路牙
DataCodeEnum.OMDB_OBJECT_CURB.code -> {
list.add(TwoItemAdapterItem(title = "是否符合高精地图", text = when (data.properties["compliant"]) {
"0" -> ""
"1" -> ""
else -> ""
}))
}
//平行墙
DataCodeEnum.OMDB_OBJECT_WALL.code -> {
list.add(TwoItemAdapterItem(title = "对象号码", text = "${data.properties["objectPid"]}"))
list.add(TwoItemAdapterItem(title = "类型", text = when (data.properties["type"]) {
"1" -> "隧道墙"
"3" -> "其他墙"
@ -851,6 +844,7 @@ class SignUtil {
}
//警示区
DataCodeEnum.OMDB_OBJECT_WARNING_AREA.code -> {
list.add(TwoItemAdapterItem(title = "对象号码", text = "${data.properties["objectPid"]}"))
list.add(TwoItemAdapterItem(title = "颜色", text = when (data.properties["color"]) {
"0" -> "未验证"
"1" -> "白色"

@ -64,7 +64,7 @@
<item
android:id="@+id/personal_center_menu_version"
android:icon="@drawable/ic_baseline_layers_24"
android:title="版本24QE1_V1.2.3_20231201_A" />
android:title="版本24QE1_V1.2.4_20231206_A" />
</group>
<group android:checkableBehavior="single">
<item android:title="小标题">

@ -184,7 +184,7 @@
<!-- 路牙 -->
<style-symbol id="curb" repeat="true" gland="true" repeat-gap="10" repeat-start="1" src="assets:omdb/icon_2013_3.svg" symbol-width="16" />
<!---->
<style-symbol id="wall" repeat="true" gland="true" repeat-gap="10" repeat-start="1" src="assets:omdb/icon_2013_5.svg" symbol-width="16" />
<style-symbol id="wall" repeat="true" gland="true" repeat-gap="8" repeat-start="1" src="assets:omdb/icon_2013_5.svg" symbol-width="12" />
<!-- omdb -->
<style-line id="boundaryType" stipple-width="0.1" width="0.1" />
@ -1978,7 +1978,22 @@
<!-- 设施分离 -->
<m v="OMDB_LINK_SEPARATION">
<symbol repeat="true" gland="true" repeat-gap="11" repeat-start="1" symbol-width="18" symbol-height="18" src="assets:omdb/icon_2070_2.svg"/>
<m k="direct" v="0|1|2">
<m k="side" v="0">
<symbol repeat="true" gland="true" repeat-gap="11" repeat-start="1" symbol-width="18" symbol-height="18" src="assets:omdb/icon_2070_2.svg"/>
</m>
<m k="side" v="1">
<symbol repeat="true" degree="180" gland="true" repeat-gap="11" repeat-start="1" symbol-width="18" symbol-height="18" src="assets:omdb/icon_2070_2.svg"/>
</m>
</m>
<m k="direct" v="3">
<m k="side" v="1">
<symbol repeat="true" gland="true" repeat-gap="11" repeat-start="1" symbol-width="18" symbol-height="18" src="assets:omdb/icon_2070_2.svg"/>
</m>
<m k="side" v="0">
<symbol repeat="true" degree="180" gland="true" repeat-gap="11" repeat-start="1" symbol-width="18" symbol-height="18" src="assets:omdb/icon_2070_2.svg"/>
</m>
</m>
</m>
<!-- 停止位置 -->
@ -2050,13 +2065,10 @@
<!--可变点限速-->
<m v="OMDB_SPEEDLIMIT_VAR" >
<caption fill="#ffffff" k="ref" priority="0" size="12" stroke="#ffffff"
stroke-width="1.0"></caption>
<symbol src="assets:omdb/icon_4004_0.svg" symbol-height="38"
<symbol src="assets:omdb/icon_4004_0.png" symbol-height="38"
symbol-width="20"></symbol>
</m>
<!--交通灯-->
<m v="OMDB_TRAFFICLIGHT">
<caption dy="6" fill="#FF0000" k="name" priority="0" size="12" symbol-width="37"
@ -2186,19 +2198,6 @@
</m>
</m>
<!-- zLevel -->
<m v="OMDB_ZLEVEL">
<m k="type" v="zlevelLine">
<line stroke="#59feb8" width="0.5" />
</m>
<m k="type" v="zlevelName">
<caption k="name" fill="#000000" stroke="#f1fe59" size="12" priority="0" ></caption>
</m>
<m k="linkPid">
<circle radius="3" stroke="#000000" fill="#ffffff"></circle>
</m>
</m>
<!-- 车道类型 -->
<m v="OMDB_LANE_TYPE_ACCESS">
<m k="bike">
@ -2230,5 +2229,18 @@
<caption k="ref" priority="0" size="12" fill="#ff0000" stroke="#ffffff" stroke-width="1" dy="-13"></caption>
</m>
<!-- zLevel -->
<m v="OMDB_ZLEVEL">
<m k="type" v="zlevelLine">
<line stroke="#59feb8" width="0.5" />
</m>
<m k="type" v="zlevelName">
<caption k="name" fill="#000000" stroke="#f1fe59" size="12" priority="0" ></caption>
</m>
<m k="linkPid">
<circle radius="3" stroke="#000000" fill="#ffffff"></circle>
</m>
</m>
</m>
</rendertheme>

Binary file not shown.

After

(image error) Size: 3.8 KiB

@ -1 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?><svg id="b" xmlns="http://www.w3.org/2000/svg" width="70" height="94" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 70 94"><defs><style>.h{fill:#a74d4b;opacity:.7;}.h,.i,.j,.k,.l,.m,.n{stroke-width:0px;}.h,.j{isolation:isolate;}.i{opacity:0;}.i,.o{fill:none;}.j{fill:#ff5f4c;opacity:.3;}.o{stroke:#db4646;stroke-dasharray:0 0 0 0 0 0 6.4 7.1;stroke-linecap:square;stroke-width:2.1px;}.k{fill:#2a23f5;}.l{fill:#fff;}.m{fill:url(#f);}.n{fill:url(#g);}</style><radialGradient id="f" cx="131.4" cy="284.8" fx="131.4" fy="284.8" r="1.3" gradientTransform="translate(-1182.6 -13193.2) rotate(38.1) scale(54 33.9) skewX(7.5)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#ff9287"/><stop offset=".8" stop-color="#ff5f4c"/><stop offset="1" stop-color="#ff5f4c"/></radialGradient><radialGradient id="g" cx="128.9" cy="283.6" fx="128.9" fy="283.6" r=".5" gradientTransform="translate(-5048.6 -10839.4) scale(39.4 38.4)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#e75545"/><stop offset=".8" stop-color="#c4483b"/><stop offset="1" stop-color="#983b31"/></radialGradient></defs><g id="c"><ellipse id="d" class="j" cx="35.5" cy="84.1" rx="14.4" ry="3.7"/><ellipse id="e" class="h" cx="35.5" cy="84.1" rx="7.5" ry="3"/><path class="m" d="m26.7,71.1l-1.1-1c-9.6-4.2-15.6-13.4-15.4-23.6,0-14.1,11.2-25.5,25-25.5s25,11.4,25,25.5-6.5,19.8-15.6,23.6c-.3.3-.6.6-.9,1-3.4,3.9-6.2,8.3-8.3,13,0,0-3.6-7.8-8.9-13h.1Z"/><ellipse class="n" cx="35" cy="45.6" rx="19.8" ry="19.2"/><ellipse class="l" cx="35.2" cy="45.3" rx="20.1" ry="19.6"/><ellipse class="k" cx="35.2" cy="45.3" rx="17.2" ry="16.8"/><ellipse class="o" cx="35.2" cy="45.3" rx="18.3" ry="17.8"/><rect class="i" width="70" height="94"/></g></svg>
<?xml version="1.0" encoding="UTF-8"?>
<svg id="b" xmlns="http://www.w3.org/2000/svg" width="70" height="94"
xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 70 94">
<defs>
<style>
.h{fill:#a74d4b;opacity:.7;}.h,.i,.j,.k,.l,.m,.n{stroke-width:0px;}.h,.j{isolation:isolate;}.i{opacity:0;}.i,.o{fill:none;}.j{fill:#ff5f4c;opacity:.3;}.o{stroke:#db4646;stroke-dasharray:0
0 0 0 0 0 6.4
7.1;stroke-linecap:square;stroke-width:2.1px;}.k{fill:#2a23f5;}.l{fill:#fff;}.m{fill:url(#f);}.n{fill:url(#g);}
</style>
<radialGradient id="f" cx="131.4" cy="284.8" fx="131.4" fy="284.8" r="1.3"
gradientTransform="translate(-1182.6 -13193.2) rotate(38.1) scale(54 33.9) skewX(7.5)"
gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#ff9287" />
<stop offset=".8" stop-color="#ff5f4c" />
<stop offset="1" stop-color="#ff5f4c" />
</radialGradient>
<radialGradient id="g" cx="128.9" cy="283.6" fx="128.9" fy="283.6" r=".5"
gradientTransform="translate(-5048.6 -10839.4) scale(39.4 38.4)"
gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#e75545" />
<stop offset=".8" stop-color="#c4483b" />
<stop offset="1" stop-color="#983b31" />
</radialGradient>
</defs>
<g id="c">
<ellipse id="d" class="j" cx="35.5" cy="84.1" rx="14.4" ry="3.7" />
<ellipse id="e" class="h" cx="35.5" cy="84.1" rx="7.5" ry="3" />
<path class="m"
d="m26.7,71.1l-1.1-1c-9.6-4.2-15.6-13.4-15.4-23.6,0-14.1,11.2-25.5,25-25.5s25,11.4,25,25.5-6.5,19.8-15.6,23.6c-.3.3-.6.6-.9,1-3.4,3.9-6.2,8.3-8.3,13,0,0-3.6-7.8-8.9-13h.1Z" />
<ellipse class="n" cx="35" cy="45.6" rx="19.8" ry="19.2" />
<ellipse class="l" cx="35.2" cy="45.3" rx="20.1" ry="19.6" />
<ellipse class="k" cx="35.2" cy="45.3" rx="17.2" ry="16.8" />
<ellipse class="o" cx="35.2" cy="45.3" rx="18.3" ry="17.8" />
<rect class="i" width="70" height="94" />
</g>
</svg>

Before

(image error) Size: 1.7 KiB

After

(image error) Size: 2.1 KiB

@ -33,7 +33,7 @@ public enum class DataCodeEnum(var tableName: String,var tableSubName: String, v
OMDB_RAMP_7("高速直连出口匝道高速出入口匝道", "匝道","2037-7"),
OMDB_MULTI_DIGITIZED("上下线分离", "上下线分离","2040"),
OMDB_LANE_NUM("车道数", "车道数","2041"),
OMDB_PHY_LANENUM("物理车道数", "物理车道数","2097"),
OMDB_PHY_LANENUM("物理车道数", "物理车道数","2617"),
OMDB_VIADUCT("高架", "高架","2043"),
OMDB_LINK_SEPARATION("设施分离","设施分离", "2070"),
OMDB_LINK_MEDIAN("中央隔离带", "中央隔离带","2071"),