diff --git a/app/src/main/assets/omdb_config.json b/app/src/main/assets/omdb_config.json index 6ece5274..5a0c499c 100644 --- a/app/src/main/assets/omdb_config.json +++ b/app/src/main/assets/omdb_config.json @@ -1,404 +1,413 @@ -{ - "tableMap" : { - "1012": { - "table": "OMDB_CHECKPOINT", - "code": 1012, - "name": "检查点", - "zoomMin": 15, - "zoomMax": 19 - }, - "2001": { - "table": "OMDB_RD_LINK", - "code": 2001, - "name": "道路线", - "zoomMin": 15, - "zoomMax": 17, - "checkLinkId": false - }, - "2002": { - "table": "OMDB_RD_LINK_FUNCTION_CLASS", - "code": 2002, - "name": "道路功能等级", - "zoomMin": 15, - "zoomMax": 17 - }, - "2004": { - "table": "OMDB_LINK_ATTRIBUTE", - "code": 2004, - "name": "道路属性", - "zoomMin": 15, - "zoomMax": 19, - "transformer": [ - { - "k": "geometry", - "v": "~", - "klib": "geometry", - "vlib": "generateRoadText()" - } - ] - }, - "2008": { - "table": "OMDB_RD_LINK_KIND", - "code": 2008, - "name": "道路种别", - "zoomMin": 15, - "zoomMax": 20, - "checkLinkId": false - }, - "2010": { - "table": "OMDB_LINK_DIRECT", - "code": 2010, - "name": "道路方向", - "zoomMin": 15, - "zoomMax": 17, - "checkLinkId": false - }, - "2011": { - "table": "OMDB_LINK_NAME", - "code": 2011, - "name": "道路名", - "zoomMin": 15, - "zoomMax": 17, - "checkLinkId": false, - "transformer": [ - { - "k": "geometry", - "v": "~", - "klib": "geometry", - "vlib": "generateRoadName()" - } - ] - }, - "2013": { - "table": "OMDB_LANE_MARK_BOUNDARYTYPE", - "code": 2013, - "name": "车道边界类型", - "zoomMin": 18, - "zoomMax": 20, - "checkLinkId": false, - "transformer": [ - { - "k": "geometry", - "v": "~", - "klib": "geometry", - "vlib": "unpackingLaneBoundary()" - } - ] - }, - "2019": { - "table": "OMDB_LINK_SPEEDLIMIT", - "code": 2019, - "name": "常规线限速", - "zoomMin": 15, - "zoomMax": 17 - }, - "2020": { - "table": "OMDB_LINK_SPEEDLIMIT_COND", - "code": 2020, - "name": "条件线限速", - "zoomMin": 15, - "zoomMax": 17 - }, - "2021": { - "table": "OMDB_LINK_SPEEDLIMIT_VAR", - "code": 2021, - "name": "可变线限速", - "zoomMin": 15, - "zoomMax": 17 - }, - "2022": { - "table": "OMDB_CON_ACCESS", - "code": 2022, - "name": "全封闭" - }, - "2037": { - "table": "OMDB_RAMP", - "code": 2037, - "name": "匝道" - }, - "2040": { - "table": "OMDB_MULTI_DIGITIZED", - "code": 2040, - "name": "上下线分离" - }, - "2041":{ - "table": "OMDB_LANE_NUM", - "code": 2041, - "name": "车道数" - }, - "2083":{ - "table": "OMDB_RDBOUND_BOUNDARYTYPE", - "code": 2083, - "name": "道路边界类型", - "zoomMin": 18, - "zoomMax": 20, - "checkLinkId": false - }, - "2201":{ - "table": "OMDB_BRIDGE", - "code": 2201, - "name": "桥", - "zoomMin": 15, - "zoomMax": 20, - "transformer": [ - { - "k": "geometry", - "v": "~", - "klib": "geometry", - "vlib": "generateS2EReferencePoint(bridgeType,OMDB_BRIDGE)" - } - ] - }, - "2202":{ - "table": "OMDB_TUNNEL", - "code": 2202, - "name": "隧道", - "zoomMin": 15, - "zoomMax": 20, - "transformer2Code": "" - }, - "2204":{ - "table": "OMDB_ROUNDABOUT", - "code": 2204, - "name": "环岛", - "zoomMin": 15, - "zoomMax": 17, - "transformer": [ - { - "k": "geometry", - "v": "~", - "klib": "geometry", - "vlib": "generateS2EReferencePoint()" - } - ] - }, - "2205":{ - "table": "OMDB_LINK_FORM1", - "code": 2205, - "name": "道路形态1", - "zoomMin": 15, - "zoomMax": 17 - }, - "2206":{ - "table": "OMDB_LINK_FORM2", - "code": 2206, - "name": "道路形态2", - "zoomMin": 15, - "zoomMax": 17, - "transformer2Code": "" - }, - "3012":{ - "table": "OMDB_FILL_AREA", - "code": 3012, - "name": "导流区", - "zoomMin": 16, - "zoomMax": 20 - }, - "4001": { - "table": "OMDB_INTERSECTION", - "code": 4001, - "name": "路口", - "zoomMin": 15, - "zoomMax": 17, - "transformer": [ - { - "k": "geometry", - "v": "~", - "klib": "geometry", - "vlib": "generateIntersectionReference()" - } - ] - }, - "4002": { - "table": "OMDB_SPEEDLIMIT", - "code": 4002, - "name": "常规点限速", - "zoomMin": 15, - "zoomMax": 20, - "transformer": [ - { - "k": "maxSpeed", - "v": "0", - "klib": "maxSpeed", - "vlib": "限" - }, - { - "k": "geometry", - "v": "~", - "klib": "geometry", - "vlib": "translateRight()" - } - ] - }, - "4003":{ - "table": "OMDB_SPEEDLIMIT_COND", - "code": 4003, - "name": "条件点限速", - "zoomMin": 15, - "zoomMax": 20, - "transformer": [ - { - "k": "maxSpeed", - "v": "0|", - "klib": "maxSpeed", - "vlib": "限" - } - ] - }, - "4004":{ - "table": "OMDB_SPEEDLIMIT_VAR", - "code": 4004, - "name": "可变点限速", - "zoomMin": 15, - "zoomMax": 20, - "transformer": [ - { - "k": "location", - "v": "1", - "klib": "location", - "vlib": "左" - }, - { - "k": "location", - "v": "2", - "klib": "locationlib", - "vlib": "右" - }, - { - "k": "location", - "v": "3", - "klib": "location", - "vlib": "上" - } - ] - }, - "4006":{ - "table": "OMDB_RESTRICTION", - "code": 4006, - "name": "普通交限", - "zoomMin": 15, - "zoomMax": 20, - "transformer": [ - { - "k": "geometry", - "v": "~", - "klib": "geometry", - "vlib": "checkCircleRoad()" - }, - { - "k": "geometry", - "v": "~", - "klib": "geometry", - "vlib": "translateBack()" - }, - { - "k": "geometry", - "v": "~", - "klib": "geometry", - "vlib": "translateRight()" - }, - { - "k": "geometry", - "v": "~", - "klib": "geometry", - "vlib": "generateS2EReferenceLine()" - }, - { - "k": "geometry", - "v": "~", - "klib": "geometry", - "vlib": "generateDirectReferenceLine()" - } - ] - }, - "4010":{ - "table": "OMDB_ELECTRONICEYE", - "code": 4010, - "name": "电子眼", - "zoomMin": 15, - "zoomMax": 20, - "transformer": [ - { - "k": "geometry", - "v": "~", - "klib": "geometry", - "vlib": "translateRight()" - }, - { - "k": "geometry", - "v": "~", - "klib": "geometry", - "vlib": "generateS2EReferenceLine()" - }, - { - "k": "geometry", - "v": "~", - "klib": "geometry", - "vlib": "generateDirectReferenceLine(3)" - }, - { - "k": "geometry", - "v": "~", - "klib": "geometry", - "vlib": "generateElectronName()" - } - ] - }, - "4022": { - "table": "OMDB_TRAFFICLIGHT", - "code": 4022, - "name": "交通灯", - "zoomMin": 15, - "zoomMax": 20, - "transformer": [ - ] - }, - "4601":{ - "table": "OMDB_LANEINFO", - "code": 4601, - "name": "车信", - "zoomMin": 15, - "zoomMax": 17, - "transformer": [ - { - "k": "geometry", - "v": "~", - "klib": "geometry", - "vlib": "translateRight(direct=3)" - }, - { - "k": "geometry", - "v": "~", - "klib": "geometry", - "vlib": "unpackingLaneInfo()" - }, - { - "k": "geometry", - "v": "~", - "klib": "geometry", - "vlib": "generateS2EReferenceLine()" - } - ] - }, - "5001":{ - "table": "OMDB_LANE_LINK_LG", - "code": 5001, - "name": "车道中心线", - "zoomMin": 18, - "zoomMax": 20, - "transformer": [ - { - "k": "geometry", - "v": "~", - "klib": "geometry", - "vlib": "generateAddWidthLine()" - } - ] - }, - "5002":{ - "table": "OMDB_AREA", - "code": 5002, - "name": "面测试" +[ + { + "tableGroupName": "普通图层", + "tableMap" : { + "1012": { + "table": "OMDB_CHECKPOINT", + "code": 1012, + "name": "检查点", + "zoomMin": 15, + "zoomMax": 19 + }, + "2001": { + "table": "OMDB_RD_LINK", + "code": 2001, + "name": "道路线", + "zoomMin": 15, + "zoomMax": 17, + "checkLinkId": false + }, + "2002": { + "table": "OMDB_RD_LINK_FUNCTION_CLASS", + "code": 2002, + "name": "道路功能等级", + "zoomMin": 15, + "zoomMax": 17 + }, + "2008": { + "table": "OMDB_RD_LINK_KIND", + "code": 2008, + "name": "道路种别", + "zoomMin": 15, + "zoomMax": 20, + "checkLinkId": false + }, + "2010": { + "table": "OMDB_LINK_DIRECT", + "code": 2010, + "name": "道路方向", + "zoomMin": 15, + "zoomMax": 17, + "checkLinkId": false + }, + "2011": { + "table": "OMDB_LINK_NAME", + "code": 2011, + "name": "道路名", + "zoomMin": 15, + "zoomMax": 17, + "checkLinkId": false, + "transformer": [ + { + "k": "geometry", + "v": "~", + "klib": "geometry", + "vlib": "generateRoadName()" + } + ] + }, + "2013": { + "table": "OMDB_LANE_MARK_BOUNDARYTYPE", + "code": 2013, + "name": "车道边界类型", + "zoomMin": 18, + "zoomMax": 20, + "checkLinkId": false, + "transformer": [ + { + "k": "geometry", + "v": "~", + "klib": "geometry", + "vlib": "unpackingLaneBoundary()" + } + ] + }, + "2019": { + "table": "OMDB_LINK_SPEEDLIMIT", + "code": 2019, + "name": "常规线限速", + "zoomMin": 15, + "zoomMax": 17 + }, + "2020": { + "table": "OMDB_LINK_SPEEDLIMIT_COND", + "code": 2020, + "name": "条件线限速", + "zoomMin": 15, + "zoomMax": 17 + }, + "2021": { + "table": "OMDB_LINK_SPEEDLIMIT_VAR", + "code": 2021, + "name": "可变线限速", + "zoomMin": 15, + "zoomMax": 17 + }, + "2041":{ + "table": "OMDB_LANE_NUM", + "code": 2041, + "name": "车道数" + }, + "2083":{ + "table": "OMDB_RDBOUND_BOUNDARYTYPE", + "code": 2083, + "name": "道路边界类型", + "zoomMin": 18, + "zoomMax": 20, + "checkLinkId": false + }, + "2201":{ + "table": "OMDB_BRIDGE", + "code": 2201, + "name": "桥", + "zoomMin": 15, + "zoomMax": 20, + "transformer": [ + { + "k": "geometry", + "v": "~", + "klib": "geometry", + "vlib": "generateS2EReferencePoint(bridgeType,OMDB_BRIDGE)" + } + ] + }, + "2202":{ + "table": "OMDB_TUNNEL", + "code": 2202, + "name": "隧道", + "zoomMin": 15, + "zoomMax": 20, + "transformer2Code": "" + }, + "3012":{ + "table": "OMDB_FILL_AREA", + "code": 3012, + "name": "导流区", + "zoomMin": 16, + "zoomMax": 20 + }, + "4001": { + "table": "OMDB_INTERSECTION", + "code": 4001, + "name": "路口", + "zoomMin": 15, + "zoomMax": 17, + "transformer": [ + { + "k": "geometry", + "v": "~", + "klib": "geometry", + "vlib": "generateIntersectionReference()" + } + ] + }, + "4002": { + "table": "OMDB_SPEEDLIMIT", + "code": 4002, + "name": "常规点限速", + "zoomMin": 15, + "zoomMax": 20, + "transformer": [ + { + "k": "maxSpeed", + "v": "0", + "klib": "maxSpeed", + "vlib": "限" + }, + { + "k": "geometry", + "v": "~", + "klib": "geometry", + "vlib": "translateRight()" + } + ] + }, + "4003":{ + "table": "OMDB_SPEEDLIMIT_COND", + "code": 4003, + "name": "条件点限速", + "zoomMin": 15, + "zoomMax": 20, + "transformer": [ + { + "k": "maxSpeed", + "v": "0|", + "klib": "maxSpeed", + "vlib": "限" + } + ] + }, + "4004":{ + "table": "OMDB_SPEEDLIMIT_VAR", + "code": 4004, + "name": "可变点限速", + "zoomMin": 15, + "zoomMax": 20, + "transformer": [ + { + "k": "location", + "v": "1", + "klib": "location", + "vlib": "左" + }, + { + "k": "location", + "v": "2", + "klib": "locationlib", + "vlib": "右" + }, + { + "k": "location", + "v": "3", + "klib": "location", + "vlib": "上" + } + ] + }, + "4006":{ + "table": "OMDB_RESTRICTION", + "code": 4006, + "name": "普通交限", + "zoomMin": 15, + "zoomMax": 20, + "transformer": [ + { + "k": "geometry", + "v": "~", + "klib": "geometry", + "vlib": "checkCircleRoad()" + }, + { + "k": "geometry", + "v": "~", + "klib": "geometry", + "vlib": "translateBack()" + }, + { + "k": "geometry", + "v": "~", + "klib": "geometry", + "vlib": "translateRight()" + }, + { + "k": "geometry", + "v": "~", + "klib": "geometry", + "vlib": "generateS2EReferenceLine()" + }, + { + "k": "geometry", + "v": "~", + "klib": "geometry", + "vlib": "generateDirectReferenceLine()" + } + ] + }, + "4010":{ + "table": "OMDB_ELECTRONICEYE", + "code": 4010, + "name": "电子眼", + "zoomMin": 15, + "zoomMax": 20, + "transformer": [ + { + "k": "geometry", + "v": "~", + "klib": "geometry", + "vlib": "translateRight()" + }, + { + "k": "geometry", + "v": "~", + "klib": "geometry", + "vlib": "generateS2EReferenceLine()" + }, + { + "k": "geometry", + "v": "~", + "klib": "geometry", + "vlib": "generateDirectReferenceLine(3)" + }, + { + "k": "geometry", + "v": "~", + "klib": "geometry", + "vlib": "generateElectronName()" + } + ] + }, + "4022": { + "table": "OMDB_TRAFFICLIGHT", + "code": 4022, + "name": "交通灯", + "zoomMin": 15, + "zoomMax": 20, + "transformer": [ + ] + }, + "4601":{ + "table": "OMDB_LANEINFO", + "code": 4601, + "name": "车信", + "zoomMin": 15, + "zoomMax": 17, + "transformer": [ + { + "k": "geometry", + "v": "~", + "klib": "geometry", + "vlib": "translateRight(direct=3)" + }, + { + "k": "geometry", + "v": "~", + "klib": "geometry", + "vlib": "unpackingLaneInfo()" + }, + { + "k": "geometry", + "v": "~", + "klib": "geometry", + "vlib": "generateS2EReferenceLine()" + } + ] + }, + "5001":{ + "table": "OMDB_LANE_LINK_LG", + "code": 5001, + "name": "车道中心线", + "zoomMin": 18, + "zoomMax": 20, + "transformer": [ + { + "k": "geometry", + "v": "~", + "klib": "geometry", + "vlib": "generateAddWidthLine()" + } + ] + }, + "5002":{ + "table": "OMDB_AREA", + "code": 5002, + "name": "面测试" + } + } + }, + { + "tableGroupName": "道路形态", + "tableMap" : { + "2004": { + "table": "OMDB_LINK_ATTRIBUTE", + "code": 2004, + "name": "道路属性", + "zoomMin": 15, + "zoomMax": 19, + "transformer": [ + { + "k": "geometry", + "v": "~", + "klib": "geometry", + "vlib": "generateRoadText()" + } + ] + }, + "2022": { + "table": "OMDB_CON_ACCESS", + "code": 2022, + "name": "全封闭" + }, + "2037": { + "table": "OMDB_RAMP", + "code": 2037, + "name": "匝道" + }, + "2040": { + "table": "OMDB_MULTI_DIGITIZED", + "code": 2040, + "name": "上下线分离" + }, + "2204":{ + "table": "OMDB_ROUNDABOUT", + "code": 2204, + "name": "环岛", + "zoomMin": 15, + "zoomMax": 17, + "transformer": [ + { + "k": "geometry", + "v": "~", + "klib": "geometry", + "vlib": "generateS2EReferencePoint()" + } + ] + }, + "2205":{ + "table": "OMDB_LINK_FORM1", + "code": 2205, + "name": "道路形态1", + "zoomMin": 15, + "zoomMax": 17 + }, + "2206":{ + "table": "OMDB_LINK_FORM2", + "code": 2206, + "name": "道路形态2", + "zoomMin": 15, + "zoomMax": 17, + "transformer2Code": "" + } + } } -} \ No newline at end of file +] \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/omqs/Constant.kt b/app/src/main/java/com/navinfo/omqs/Constant.kt index f7f77cce..47a48643 100644 --- a/app/src/main/java/com/navinfo/omqs/Constant.kt +++ b/app/src/main/java/com/navinfo/omqs/Constant.kt @@ -102,7 +102,7 @@ class Constant { const val SELECT_TAKEPHOTO_OR_RECORD = "select_takephoto_or_record" const val OMDB_CONFIG = "omdb_config.json" - const val OTHER_CONFIG = "other_config.json" +// const val OTHER_CONFIG = "other_config.json" val OMDB_LAYER_VISIBLE_LIST: MutableList = mutableListOf() // 记录OMDB数据显示的图层名称列表 diff --git a/app/src/main/java/com/navinfo/omqs/db/ImportOMDBHelper.kt b/app/src/main/java/com/navinfo/omqs/db/ImportOMDBHelper.kt index ba707e60..fbeed81c 100644 --- a/app/src/main/java/com/navinfo/omqs/db/ImportOMDBHelper.kt +++ b/app/src/main/java/com/navinfo/omqs/db/ImportOMDBHelper.kt @@ -50,16 +50,23 @@ class ImportOMDBHelper @AssistedInject constructor( private val configFile: File = File("${Constant.USER_DATA_PATH}", Constant.OMDB_CONFIG) - private val importConfig by lazy { + private val importConfigList by lazy { openConfigFile() } /** * 读取config的配置文件 * */ - fun openConfigFile(): ImportConfig { + fun openConfigFile(): List { + val resultList = mutableListOf() val configStr = configFile.readText() - return gson.fromJson(configStr, ImportConfig::class.java) + val type = object : TypeToken>() {}.type + return try { + val result = gson.fromJson>(configStr, type) + result ?: resultList + } catch (e: Exception) { + resultList + } } /** @@ -135,262 +142,270 @@ class ImportOMDBHelper @AssistedInject constructor( val unZipFiles = ZipUtils.unzipFile(omdbZipFile, unZipFolder) // 将listResult数据插入到Realm数据库中 val realm = Realm.getDefaultInstance() + // 先获取当前配置的所有图层的个数,方便后续计算数据解析进度 + var tableNum = 0 + for (importConfig in importConfigList) { + tableNum += importConfig.tableMap.size + } + realm.beginTransaction() try { // 遍历解压后的文件,读取该数据返回 - for ((index, currentEntry) in importConfig.tableMap.entries.withIndex()) { - val currentConfig = currentEntry.value - val txtFile = unZipFiles.find { - it.name == currentConfig.table - } + for (importConfig in importConfigList) { + for ((index, currentEntry) in importConfig.tableMap.entries.withIndex()) { + val currentConfig = currentEntry.value + val txtFile = unZipFiles.find { + it.name == currentConfig.table + } - val listResult = mutableListOf() - currentConfig?.let { - val list = FileIOUtils.readFile2List(txtFile, "UTF-8") - Log.d("ImportOMDBHelper", "开始解析:${txtFile?.name}") - if (list != null) { - // 将list数据转换为map - for ((index, line) in list.withIndex()) { - if (line == null || line.trim() == "") { - continue - } - Log.d("ImportOMDBHelper", "解析第:${index+1}行") - val map = gson.fromJson>(line, object:TypeToken>(){}.getType()) - .toMutableMap() - map["qi_table"] = currentConfig.table - map["qi_name"] = currentConfig.name - map["qi_code"] = - if (currentConfig.code == 0) currentConfig.code else currentEntry.key - map["qi_code"] = if (currentConfig.code == 0) currentConfig.code else currentEntry.key - map["qi_zoomMin"] = currentConfig.zoomMin - map["qi_zoomMax"] = currentConfig.zoomMax - - // 先查询这个mesh下有没有数据,如果有则跳过即可 - // val meshEntity = Realm.getDefaultInstance().where(RenderEntity::class.java).equalTo("properties['mesh']", map["mesh"].toString()).findFirst() - val renderEntity = RenderEntity() - renderEntity.code = map["qi_code"].toString() - renderEntity.name = map["qi_name"].toString() - renderEntity.table = map["qi_table"].toString() - renderEntity.taskId = task.id - renderEntity.zoomMin = map["qi_zoomMin"].toString().toInt() - renderEntity.zoomMax = map["qi_zoomMax"].toString().toInt() - - // 其他数据插入到Properties中 - renderEntity.geometry = map["geometry"].toString() - for ((key, value) in map) { - when (value) { - is String -> renderEntity.properties.put(key, value) - is Int -> renderEntity.properties.put( - key, - value.toInt().toString() - ) - is Double -> renderEntity.properties.put( - key, - value.toDouble().toString() - ) - else -> renderEntity.properties.put(key, value.toString()) + val listResult = mutableListOf() + currentConfig?.let { + val list = FileIOUtils.readFile2List(txtFile, "UTF-8") + Log.d("ImportOMDBHelper", "开始解析:${txtFile?.name}") + if (list != null) { + // 将list数据转换为map + for ((index, line) in list.withIndex()) { + if (line == null || line.trim() == "") { + continue } - } + Log.d("ImportOMDBHelper", "解析第:${index+1}行") + val map = gson.fromJson>(line, object:TypeToken>(){}.getType()) + .toMutableMap() + map["qi_table"] = currentConfig.table + map["qi_name"] = currentConfig.name + map["qi_code"] = + if (currentConfig.code == 0) currentConfig.code else currentEntry.key + map["qi_code"] = if (currentConfig.code == 0) currentConfig.code else currentEntry.key + map["qi_zoomMin"] = currentConfig.zoomMin + map["qi_zoomMax"] = currentConfig.zoomMax - // 如果properties中不包含name,那么自动将要素名称添加进properties中 - if (!renderEntity.properties.containsKey("name")) { - renderEntity.properties["name"] = renderEntity.name; - } - //遍历判断只显示与任务Link相关的任务数据 - if(currentConfig.checkLinkId){ + // 先查询这个mesh下有没有数据,如果有则跳过即可 + // val meshEntity = Realm.getDefaultInstance().where(RenderEntity::class.java).equalTo("properties['mesh']", map["mesh"].toString()).findFirst() + val renderEntity = RenderEntity() + renderEntity.code = map["qi_code"].toString() + renderEntity.name = map["qi_name"].toString() + renderEntity.table = map["qi_table"].toString() + renderEntity.taskId = task.id + renderEntity.zoomMin = map["qi_zoomMin"].toString().toInt() + renderEntity.zoomMax = map["qi_zoomMax"].toString().toInt() - if(renderEntity.properties.containsKey("linkPid")){ - - var currentLinkPid = renderEntity.properties["linkPid"] - - if(!currentLinkPid.isNullOrEmpty()&¤tLinkPid!="null"){ - - task.hadLinkDvoList.forEach{ - if(it.linkPid==renderEntity.properties["linkPid"]){ - renderEntity.enable = 1 - Log.e("qj","${renderEntity.name}==包括任务link") - return@forEach - } - } + // 其他数据插入到Properties中 + renderEntity.geometry = map["geometry"].toString() + for ((key, value) in map) { + when (value) { + is String -> renderEntity.properties.put(key, value) + is Int -> renderEntity.properties.put( + key, + value.toInt().toString() + ) + is Double -> renderEntity.properties.put( + key, + value.toDouble().toString() + ) + else -> renderEntity.properties.put(key, value.toString()) } + } - }else if(renderEntity.code == DataCodeEnum.OMDB_RESTRICTION.code && renderEntity.properties.containsKey("linkIn")){ + // 如果properties中不包含name,那么自动将要素名称添加进properties中 + if (!renderEntity.properties.containsKey("name")) { + renderEntity.properties["name"] = renderEntity.name; + } + //遍历判断只显示与任务Link相关的任务数据 + if(currentConfig.checkLinkId){ - if (renderEntity.properties["linkIn"] != null) { + if(renderEntity.properties.containsKey("linkPid")){ - var currentLinkPid = renderEntity.properties["linkIn"] + var currentLinkPid = renderEntity.properties["linkPid"] if(!currentLinkPid.isNullOrEmpty()&¤tLinkPid!="null"){ task.hadLinkDvoList.forEach{ - if(it.linkPid==currentLinkPid){ + if(it.linkPid==renderEntity.properties["linkPid"]){ renderEntity.enable = 1 Log.e("qj","${renderEntity.name}==包括任务link") return@forEach } } } - } - }else if(renderEntity.code == DataCodeEnum.OMDB_INTERSECTION.code && renderEntity.properties.containsKey("linkList")){ - if (renderEntity.properties["linkList"] != null) { + }else if(renderEntity.code == DataCodeEnum.OMDB_RESTRICTION.code && renderEntity.properties.containsKey("linkIn")){ - Log.e("qj", "linkList==开始${renderEntity.name}==${renderEntity.properties["linkList"]}}") + if (renderEntity.properties["linkIn"] != null) { - val linkList = renderEntity.properties["linkList"] + var currentLinkPid = renderEntity.properties["linkIn"] - if (!linkList.isNullOrEmpty()&&linkList!="null") { + if(!currentLinkPid.isNullOrEmpty()&¤tLinkPid!="null"){ - Log.e("qj", "linkList==${renderEntity.name}==${renderEntity.properties["linkList"]}}") - - val list: List = gson.fromJson(linkList, object : TypeToken>() {}.type) - - if (list != null) { - m@for (link in list){ - for(hadLink in task.hadLinkDvoList){ - if (hadLink.linkPid == link.linkPid) { - renderEntity.enable = 1 - Log.e("qj", "${renderEntity.name}==包括任务link==${renderEntity.geometry}") - break@m - } + task.hadLinkDvoList.forEach{ + if(it.linkPid==currentLinkPid){ + renderEntity.enable = 1 + Log.e("qj","${renderEntity.name}==包括任务link") + return@forEach } } } - }else{ - renderEntity.enable = 2 - Log.e("qj", "简单路口") } + }else if(renderEntity.code == DataCodeEnum.OMDB_INTERSECTION.code && renderEntity.properties.containsKey("linkList")){ + + if (renderEntity.properties["linkList"] != null) { + + Log.e("qj", "linkList==开始${renderEntity.name}==${renderEntity.properties["linkList"]}}") + + val linkList = renderEntity.properties["linkList"] + + if (!linkList.isNullOrEmpty()&&linkList!="null") { + + Log.e("qj", "linkList==${renderEntity.name}==${renderEntity.properties["linkList"]}}") + + val list: List = gson.fromJson(linkList, object : TypeToken>() {}.type) + + if (list != null) { + m@for (link in list){ + for(hadLink in task.hadLinkDvoList){ + if (hadLink.linkPid == link.linkPid) { + renderEntity.enable = 1 + Log.e("qj", "${renderEntity.name}==包括任务link==${renderEntity.geometry}") + break@m + } + } + } + } + }else{ + renderEntity.enable = 2 + Log.e("qj", "简单路口") + } + } + }else{ + renderEntity.enable = 2 + Log.e("qj","${renderEntity.name}==不包括任务linkPid") } }else{ renderEntity.enable = 2 Log.e("qj","${renderEntity.name}==不包括任务linkPid") } - }else{ - renderEntity.enable = 2 - Log.e("qj","${renderEntity.name}==不包括任务linkPid") - } - // 对renderEntity做预处理后再保存 - val resultEntity = importConfig.transformProperties(renderEntity) + // 对renderEntity做预处理后再保存 + val resultEntity = importConfig.transformProperties(renderEntity) - //对code编码需要特殊处理 存在多个属性值时,渲染优先级:SA>PA,存在多个属性值时,渲染优先级:FRONTAGE>MAIN_SIDE_A CCESS - if(renderEntity.code == DataCodeEnum.OMDB_LINK_ATTRIBUTE.code){ + //对code编码需要特殊处理 存在多个属性值时,渲染优先级:SA>PA,存在多个属性值时,渲染优先级:FRONTAGE>MAIN_SIDE_A CCESS + if(renderEntity.code == DataCodeEnum.OMDB_LINK_ATTRIBUTE.code){ - Log.e("qj","道路属性===0") + Log.e("qj","道路属性===0") - var type = renderEntity.properties["sa"] + var type = renderEntity.properties["sa"] - if(type!=null&&type=="1"){ - renderEntity.code = DataCodeEnum.OMDB_LINK_ATTRIBUTE_SA.code - Log.e("qj","道路属性===1") - }else{ - type = renderEntity.properties["pa"] if(type!=null&&type=="1"){ - renderEntity.code = DataCodeEnum.OMDB_LINK_ATTRIBUTE_PA.code - Log.e("qj","道路属性===2") - } else{ - type = renderEntity.properties["frontage"] + renderEntity.code = DataCodeEnum.OMDB_LINK_ATTRIBUTE_SA.code + Log.e("qj","道路属性===1") + }else{ + type = renderEntity.properties["pa"] if(type!=null&&type=="1"){ - renderEntity.code = DataCodeEnum.OMDB_LINK_ATTRIBUTE_FORNTAGE.code - Log.e("qj","道路属性===3") - }else{ - type = renderEntity.properties["mainSideAccess"] + renderEntity.code = DataCodeEnum.OMDB_LINK_ATTRIBUTE_PA.code + Log.e("qj","道路属性===2") + } else{ + type = renderEntity.properties["frontage"] if(type!=null&&type=="1"){ - renderEntity.code = DataCodeEnum.OMDB_LINK_ATTRIBUTE_MAIN_SIDE_ACCESS.code - Log.e("qj","道路属性===4") + renderEntity.code = DataCodeEnum.OMDB_LINK_ATTRIBUTE_FORNTAGE.code + Log.e("qj","道路属性===3") }else{ + type = renderEntity.properties["mainSideAccess"] + if(type!=null&&type=="1"){ + renderEntity.code = DataCodeEnum.OMDB_LINK_ATTRIBUTE_MAIN_SIDE_ACCESS.code + Log.e("qj","道路属性===4") + }else{ + renderEntity.enable=0 + Log.e("qj","过滤不显示数据${renderEntity.table}") + Log.e("qj","道路属性===5") + continue + } + } + } + } + }else if(renderEntity.code == DataCodeEnum.OMDB_RAMP.code){ + /*匝道*/ + var formWay = renderEntity.properties["FORM_OF_WAY"] + if(formWay!=null){ + when (formWay) { + "93"-> renderEntity.code = DataCodeEnum.OMDB_RAMP_1.code + "98"-> renderEntity.code = DataCodeEnum.OMDB_RAMP_2.code + "99"-> renderEntity.code = DataCodeEnum.OMDB_RAMP_3.code + "100"-> renderEntity.code = DataCodeEnum.OMDB_RAMP_4.code + "102"-> renderEntity.code = DataCodeEnum.OMDB_RAMP_5.code + "103"-> renderEntity.code = DataCodeEnum.OMDB_RAMP_6.code + "104"-> renderEntity.code = DataCodeEnum.OMDB_RAMP_7.code + } + } + }else if(renderEntity.code == DataCodeEnum.OMDB_LINK_FORM1.code){ + /*道路形态1*/ + var formWay = renderEntity.properties["FORM_OF_WAY"] + if(formWay!=null){ + when (formWay) { + "35"-> renderEntity.code = DataCodeEnum.OMDB_LINK_FORM1_1.code + "37"-> renderEntity.code = DataCodeEnum.OMDB_LINK_FORM1_2.code + "38"-> renderEntity.code = DataCodeEnum.OMDB_LINK_FORM1_3.code + } + } + }else if(renderEntity.code == DataCodeEnum.OMDB_LINK_FORM2.code){ + /*道路形态2*/ + var formWay = renderEntity.properties["FORM_OF_WAY"] + if(formWay!=null){ + when (formWay) { + "10"-> renderEntity.code = DataCodeEnum.OMDB_LINK_FORM2_1.code + "11"-> renderEntity.code = DataCodeEnum.OMDB_LINK_FORM2_2.code + "17"-> renderEntity.code = DataCodeEnum.OMDB_LINK_FORM2_3.code + "18"-> renderEntity.code = DataCodeEnum.OMDB_LINK_FORM2_4.code + "20"-> renderEntity.code = DataCodeEnum.OMDB_LINK_FORM2_5.code + "22"-> renderEntity.code = DataCodeEnum.OMDB_LINK_FORM2_6.code + "36"-> renderEntity.code = DataCodeEnum.OMDB_LINK_FORM2_7.code + "52"-> renderEntity.code = DataCodeEnum.OMDB_LINK_FORM2_8.code + "53"-> renderEntity.code = DataCodeEnum.OMDB_LINK_FORM2_9.code + "54"-> renderEntity.code = DataCodeEnum.OMDB_LINK_FORM2_10.code + "60"-> renderEntity.code = DataCodeEnum.OMDB_LINK_FORM2_11.code + "84"-> renderEntity.code = DataCodeEnum.OMDB_LINK_FORM2_12.code + "85"-> renderEntity.code = DataCodeEnum.OMDB_LINK_FORM2_13.code + } + } + }else if(renderEntity.code == DataCodeEnum.OMDB_LANE_MARK_BOUNDARYTYPE.code){ + var boundaryType = renderEntity.properties["boundaryType"] + if(boundaryType!=null){ + when (boundaryType) { + "0","1","6","8","9"->{ + renderEntity.enable=0 + Log.e("qj","过滤不显示数据${renderEntity.table}") + continue + } + } + } + }else if(renderEntity.code == DataCodeEnum.OMDB_RDBOUND_BOUNDARYTYPE.code){ + //过滤不需要渲染的要素 + var boundaryType = renderEntity.properties["boundaryType"] + if(boundaryType!=null){ + when (boundaryType) { + "0","3","4","5","7","9"->{ renderEntity.enable=0 Log.e("qj","过滤不显示数据${renderEntity.table}") - Log.e("qj","道路属性===5") continue } } } } - }else if(renderEntity.code == DataCodeEnum.OMDB_RAMP.code){ - /*匝道*/ - var formWay = renderEntity.properties["FORM_OF_WAY"] - if(formWay!=null){ - when (formWay) { - "93"-> renderEntity.code = DataCodeEnum.OMDB_RAMP_1.code - "98"-> renderEntity.code = DataCodeEnum.OMDB_RAMP_2.code - "99"-> renderEntity.code = DataCodeEnum.OMDB_RAMP_3.code - "100"-> renderEntity.code = DataCodeEnum.OMDB_RAMP_4.code - "102"-> renderEntity.code = DataCodeEnum.OMDB_RAMP_5.code - "103"-> renderEntity.code = DataCodeEnum.OMDB_RAMP_6.code - "104"-> renderEntity.code = DataCodeEnum.OMDB_RAMP_7.code - } - } - }else if(renderEntity.code == DataCodeEnum.OMDB_LINK_FORM1.code){ - /*道路形态1*/ - var formWay = renderEntity.properties["FORM_OF_WAY"] - if(formWay!=null){ - when (formWay) { - "35"-> renderEntity.code = DataCodeEnum.OMDB_LINK_FORM1_1.code - "37"-> renderEntity.code = DataCodeEnum.OMDB_LINK_FORM1_2.code - "38"-> renderEntity.code = DataCodeEnum.OMDB_LINK_FORM1_3.code - } - } - }else if(renderEntity.code == DataCodeEnum.OMDB_LINK_FORM2.code){ - /*道路形态2*/ - var formWay = renderEntity.properties["FORM_OF_WAY"] - if(formWay!=null){ - when (formWay) { - "10"-> renderEntity.code = DataCodeEnum.OMDB_LINK_FORM2_1.code - "11"-> renderEntity.code = DataCodeEnum.OMDB_LINK_FORM2_2.code - "17"-> renderEntity.code = DataCodeEnum.OMDB_LINK_FORM2_3.code - "18"-> renderEntity.code = DataCodeEnum.OMDB_LINK_FORM2_4.code - "20"-> renderEntity.code = DataCodeEnum.OMDB_LINK_FORM2_5.code - "22"-> renderEntity.code = DataCodeEnum.OMDB_LINK_FORM2_6.code - "36"-> renderEntity.code = DataCodeEnum.OMDB_LINK_FORM2_7.code - "52"-> renderEntity.code = DataCodeEnum.OMDB_LINK_FORM2_8.code - "53"-> renderEntity.code = DataCodeEnum.OMDB_LINK_FORM2_9.code - "54"-> renderEntity.code = DataCodeEnum.OMDB_LINK_FORM2_10.code - "60"-> renderEntity.code = DataCodeEnum.OMDB_LINK_FORM2_11.code - "84"-> renderEntity.code = DataCodeEnum.OMDB_LINK_FORM2_12.code - "85"-> renderEntity.code = DataCodeEnum.OMDB_LINK_FORM2_13.code - } - } - }else if(renderEntity.code == DataCodeEnum.OMDB_LANE_MARK_BOUNDARYTYPE.code){ - var boundaryType = renderEntity.properties["boundaryType"] - if(boundaryType!=null){ - when (boundaryType) { - "0","1","6","8","9"->{ - renderEntity.enable=0 - Log.e("qj","过滤不显示数据${renderEntity.table}") - continue - } - } - } - }else if(renderEntity.code == DataCodeEnum.OMDB_RDBOUND_BOUNDARYTYPE.code){ - //过滤不需要渲染的要素 - var boundaryType = renderEntity.properties["boundaryType"] - if(boundaryType!=null){ - when (boundaryType) { - "0","3","4","5","7","9"->{ - renderEntity.enable=0 - Log.e("qj","过滤不显示数据${renderEntity.table}") - continue - } - } - } - } - listResult.add(renderEntity) + listResult.add(renderEntity) - if (resultEntity != null) { - realm.insert(renderEntity) + if (resultEntity != null) { + realm.insert(renderEntity) + } } } } - } - // 1个文件发送一次flow流 - emit("${index + 1}/${importConfig.tableMap.size}") - // 如果当前解析的是OMDB_RD_LINK数据,将其缓存在预处理类中,以便后续处理其他要素时使用 - if (currentConfig.table == "OMDB_RD_LINK") { - importConfig.preProcess.cacheRdLink = - listResult.associateBy { it.properties["linkPid"] } + // 1个文件发送一次flow流 + emit("${index + 1}/${tableNum}") + // 如果当前解析的是OMDB_RD_LINK数据,将其缓存在预处理类中,以便后续处理其他要素时使用 + if (currentConfig.table == "OMDB_RD_LINK") { + importConfig.preProcess.cacheRdLink = + listResult.associateBy { it.properties["linkPid"] } + } } } realm.commitTransaction() diff --git a/app/src/main/java/com/navinfo/omqs/tools/LayerConfigUtils.kt b/app/src/main/java/com/navinfo/omqs/tools/LayerConfigUtils.kt index 1cf4f93c..827a3cb1 100644 --- a/app/src/main/java/com/navinfo/omqs/tools/LayerConfigUtils.kt +++ b/app/src/main/java/com/navinfo/omqs/tools/LayerConfigUtils.kt @@ -6,12 +6,12 @@ import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.navinfo.omqs.Constant import com.navinfo.omqs.bean.ImportConfig +import com.navinfo.omqs.tools.LayerConfigUtils.Companion.gson import java.io.File class LayerConfigUtils { companion object { private val omdbConfigFile = File("${Constant.USER_DATA_PATH}", Constant.OMDB_CONFIG) - private val otherConfigFile = File("${Constant.USER_DATA_PATH}", Constant.OTHER_CONFIG) private val gson = Gson() fun getLayerConfigList(): List { @@ -20,29 +20,19 @@ class LayerConfigUtils { Constant.LAYER_CONFIG_LIST = getLayerConfigListFromAssetsFile() } return Constant.LAYER_CONFIG_LIST!! -// return SPStaticUtils.getString(Constant.EVENT_LAYER_MANAGER_CHANGE, null).let { -// if (it != null) { -// val result: List = -// gson.fromJson(it, object : TypeToken>() {}.type) -// result -// } else { -// LayerConfigUtils.getLayerConfigListFromAssetsFile() -// } -// } } private fun getLayerConfigListFromAssetsFile(): List { val resultList = mutableListOf() if (omdbConfigFile.exists()) { val omdbConfiStr = FileIOUtils.readFile2String(omdbConfigFile) - val omdbConfig = gson.fromJson(omdbConfiStr, ImportConfig::class.java) - resultList.add(omdbConfig) - } - if (otherConfigFile.exists()) { - val otherConfiStr = FileIOUtils.readFile2String(otherConfigFile) - val otherConfig = - gson.fromJson(otherConfiStr, ImportConfig::class.java) - resultList.add(otherConfig) + val type = object : TypeToken>() {}.type + return try { + val result = gson.fromJson>(omdbConfiStr, type) + result ?: resultList + } catch (e: Exception) { + resultList + } } return resultList } diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt index 0be0a786..ce9a67b2 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt @@ -742,15 +742,16 @@ class MainViewModel @Inject constructor( fun refreshOMDBLayer(layerConfigList: List) { // 根据获取到的配置信息,筛选未勾选的图层名称 if (layerConfigList != null && !layerConfigList.isEmpty()) { - val omdbVisibleList = layerConfigList.filter { importConfig -> - importConfig.tableGroupName == "OMDB数据" - }.first().tableMap.filter { entry -> - val tableInfo = entry.value - !tableInfo.checked - }.map { entry -> - val tableInfo = entry.value - tableInfo.table - }.toList() + val omdbVisibleList = mutableListOf() + layerConfigList.forEach { + omdbVisibleList.addAll(it.tableMap.filter { entry -> + val tableInfo = entry.value + !tableInfo.checked + }.map { entry -> + val tableInfo = entry.value + tableInfo.table + }.toList()) + } com.navinfo.collect.library.system.Constant.HAD_LAYER_INVISIABLE_ARRAY = omdbVisibleList.toTypedArray() // 刷新地图 diff --git a/collect-library/src/main/assets/editormarker.xml b/collect-library/src/main/assets/editormarker.xml index f33d55a0..d71cfdcb 100644 --- a/collect-library/src/main/assets/editormarker.xml +++ b/collect-library/src/main/assets/editormarker.xml @@ -2277,7 +2277,7 @@ - + diff --git a/collect-library/src/main/assets/omdb/tex_fill_area_3012.png b/collect-library/src/main/assets/omdb/tex_fill_area_3012.png index 405fc2b5..fa2c2a3c 100644 Binary files a/collect-library/src/main/assets/omdb/tex_fill_area_3012.png and b/collect-library/src/main/assets/omdb/tex_fill_area_3012.png differ