diff --git a/app/src/main/assets/omdb_config.json b/app/src/main/assets/omdb_config.json index 277ebd69..20ecfd56 100644 --- a/app/src/main/assets/omdb_config.json +++ b/app/src/main/assets/omdb_config.json @@ -1,692 +1,698 @@ [ - { - "tableGroupName": "普通图层", - "tableMap" : { - "1007": { - "table": "OMDB_NODE_FORM", - "code": 1007, - "name": "点形态", - "existSubCode": true, - "checkLinkId": false, - "zoomMin": 15, - "zoomMax": 20 - }, - "1007_PA": { - "table": "OMDB_NODE_PA", - "code": 1007, - "name": "点形态PA", - "existSubCode": true, - "checkLinkId": false, - "zoomMin": 15, - "zoomMax": 20 - }, - "1012": { - "table": "OMDB_CHECKPOINT", - "code": 1012, - "name": "检查点", - "catch":true, - "zoomMin": 15, - "zoomMax": 20 - }, - "2001": { - "table": "OMDB_RD_LINK", - "code": 2001, - "name": "道路线", - "zoomMin": 15, - "zoomMax": 17, - "catch":true, - "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": 17, - "catch":false, - "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, - "filterData": true, - "catch":true, - "transformer": [ - { - "k": "geometry", - "v": "~", - "klib": "geometry", - "vlib": "unpackingLaneBoundary()" - } - ] - }, - "2017": { - "table": "OMDB_LINK_CONSTRUCTION", - "code": 2017, - "name": "道路施工", - "catch":true, - "checkLinkId": false, - "zoomMin": 15, - "zoomMax": 17 - }, - "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 - }, - "2097":{ - "table": "OMDB_PHY_LANENUM", - "code": 2097, - "name": "物理车道数" - }, - "2083":{ - "table": "OMDB_RDBOUND_BOUNDARYTYPE", - "code": 2083, - "name": "道路边界类型", - "checkLinkId": false, - "filterData": true, - "zoomMin": 18, - "zoomMax": 20, - "catch":true - }, - "2090":{ - "table": "OMDB_LANE_CONSTRUCTION", - "code": 2090, - "name": "车道施工", - "existSubCode": true, - "checkLinkId": false, - "catch":true, - "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, - "name": "桥", - "catch":true, - "existSubCode": true, - "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, - "catch":true, - "transformer": [ - { - "k": "geometry", - "v": "~", - "klib": "geometry", - "vlib": "generateS2EReferencePoint()" - } - ] - }, - "2638":{ - "table": "OMDB_LANE_ACCESS", - "code": 2638, - "name": "通行车辆类型Lane", - "zoomMin": 15, - "zoomMax": 20, - "catch":true, - "filterData": false, - "checkLinkId": false, - "transformer": [ - { - "k": "geometry", - "v": "~", - "klib": "geometry", - "vlib": "generateLaneAccessType()" - } - ] - }, - "3001":{ - "table": "OMDB_OBJECT_OH_STRUCT", - "code": 3001, - "name": "上方障碍物", - "zoomMin": 15, - "zoomMax": 20, - "catch":true, - "checkLinkId": false, - "transformer": [ - { - "k": "geometry", - "v": "~", - "klib": "geometry", - "vlib": "getPolygonCenterPoint()" - } - ] - }, - "3002":{ - "table": "OMDB_OBJECT_TEXT", - "code": 3002, - "name": "文字", - "zoomMin": 18, - "zoomMax": 20, - "catch":true, - "checkLinkId": false, - "transformer": [] - }, - "3003":{ - "table": "OMDB_OBJECT_SYMBOL", - "code": 3003, - "name": "符号", - "checkLinkId": false, - "zoomMin": 18, - "zoomMax": 20, - "catch":true, - "transformer": [] - }, - "3004":{ - "table": "OMDB_OBJECT_ARROW", - "code": 3004, - "name": "箭头", - "checkLinkId": false, - "zoomMin": 18, - "zoomMax": 20, - "catch":true, - "transformer": [ - { - "k": "geometry", - "v": "~", - "klib": "geometry", - "vlib": "obtainDynamicSrc('assets:omdb/arrowDirection/','.svg','arrowClass')" - } - ] - }, - "3005":{ - "table": "OMDB_TRAFFIC_SIGN", - "code": 3005, - "name": "交通标牌", - "zoomMin": 18, - "zoomMax": 20, - "is3D": true, - "catch":true, - "transformer": [ - { - "k": "geometry", - "v": "~", - "klib": "geometry", - "vlib": "obtainTrafficSignCenterPoint()" - } - ] - }, - "3006":{ - "table": "OMDB_POLE", - "code": 3006, - "name": "杆状物", - "is3D": true, - "catch":true, - "filterData": true, - "zoomMin": 18, - "zoomMax": 20, - "transformer": [ - { - "k": "geometry", - "v": "~", - "klib": "geometry", - "vlib": "normalizationPoleHeight()" - } - ] - }, - "3012":{ - "table": "OMDB_FILL_AREA", - "code": 3012, - "name": "导流区", - "catch":true, - "checkLinkId": false, - "zoomMin": 18, - "zoomMax": 20 - }, - "3014":{ - "table": "OMDB_CROSS_WALK", - "code": 3014, - "name": "人行横道", - "catch":true, - "checkLinkId": false, - "zoomMin": 18, - "zoomMax": 20 - }, - "3016":{ - "table": "OMDB_OBJECT_STOPLOCATION", - "code": 3016, - "name": "停止位置", - "checkLinkId": false, - "filterData": true, - "zoomMin": 18, - "catch":true, - "zoomMax": 20 - }, - "3027":{ - "table": "OMDB_OBJECT_REFUGE_ISLAND", - "code": 3027, - "name": "路口内交通岛", - "catch":true, - "checkLinkId": false, - "zoomMin": 18, - "zoomMax": 20 - }, - "4001": { - "table": "OMDB_INTERSECTION", - "code": 4001, - "name": "路口", - "zoomMin": 15, - "zoomMax": 17, - "catch":true, - "transformer": [ - { - "k": "geometry", - "v": "~", - "klib": "geometry", - "vlib": "generateIntersectionReference()" - } - ] - }, - "4002": { - "table": "OMDB_SPEEDLIMIT", - "code": 4002, - "name": "常规点限速", - "catch":true, - "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": "条件点限速", - "catch":true, - "zoomMin": 15, - "zoomMax": 20, - "transformer": [ - { - "k": "maxSpeed", - "v": "0|", - "klib": "maxSpeed", - "vlib": "限" - } - ] - }, - "4004":{ - "table": "OMDB_SPEEDLIMIT_VAR", - "code": 4004, - "name": "可变点限速", - "catch":true, - "zoomMin": 15, - "zoomMax": 20, - "transformer": [ - { - "k": "location", - "v": "1", - "klib": "ref", - "vlib": "左" - }, - { - "k": "location", - "v": "2", - "klib": "ref", - "vlib": "右" - }, - { - "k": "location", - "v": "3", - "klib": "ref", - "vlib": "上" - } - ] - }, - "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, - "name": "普通交限", - "zoomMin": 15, - "zoomMax": 17, - "filterData":true, - "catch":true, - "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()" - } - ] - }, - "4009":{ - "table": "OMDB_WARNINGSIGN", - "code": 4009, - "name": "警示信息", - "catch":true, - "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": "obtainReferenceDynamicSrc('assets:omdb/appendix/1105_','_0.svg','typeCode')" - } - ] - }, - "4010":{ - "table": "OMDB_ELECTRONICEYE", - "code": 4010, - "name": "电子眼", - "catch":true, - "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": "交通灯", - "catch":true, - "zoomMin": 15, - "zoomMax": 20, - "transformer": [ - ] - }, - "4023": { - "table": "OMDB_TOLLGATE", - "code": 4023, - "name": "收费站", - "catch":true, - "zoomMin": 15, - "zoomMax": 20, - "transformer": [ - ] - }, - "4601":{ - "table": "OMDB_LANEINFO", - "code": 4601, - "name": "车信", - "catch":true, - "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": "车道中心线", - "catch":false, - "checkLinkId": false, - "zoomMin": 18, - "zoomMax": 20, - "transformer": [ - { - "k": "geometry", - "v": "~", - "klib": "geometry", - "vlib": "generateAddWidthLine()" - } - ] - } - } - }, - { - "tableGroupName": "道路形态", - "tableMap" : { - "2004": { - "table": "OMDB_LINK_ATTRIBUTE", - "code": 2004, - "name": "道路属性", - "existSubCode": true, - "catch":true, - "zoomMin": 15, - "zoomMax": 20, - "transformer": [ - { - "k": "geometry", - "v": "~", - "klib": "geometry", - "vlib": "generateRoadText()" - } - ] - }, - "2022": { - "table": "OMDB_CON_ACCESS", - "code": 2022, - "name": "全封闭", - "zoomMin": 15, - "zoomMax": 17 - }, - "2037": { - "table": "OMDB_RAMP", - "code": 2037, - "name": "匝道", - "existSubCode": true, - "zoomMin": 15, - "zoomMax": 17 - }, - "2040": { - "table": "OMDB_MULTI_DIGITIZED", - "code": 2040, - "name": "上下线分离", - "zoomMin": 15, - "zoomMax": 17 - }, - "2204":{ - "table": "OMDB_ROUNDABOUT", - "code": 2204, - "name": "环岛", - "catch":true, - "zoomMin": 15, - "zoomMax": 17, - "transformer": [ - ] - }, - "2205":{ - "table": "OMDB_LINK_FORM1", - "code": 2205, - "name": "道路形态1", - "existSubCode": true, - "zoomMin": 15, - "zoomMax": 17 - }, - "2206":{ - "table": "OMDB_LINK_FORM2", - "code": 2206, - "existSubCode": true, - "name": "道路形态2", - "zoomMin": 15, - "zoomMax": 17 - } - - } - } + { + "tableGroupName": "普通图层", + "tableMap": { + "1007": { + "table": "OMDB_NODE_FORM", + "code": 1007, + "name": "点形态", + "existSubCode": true, + "checkLinkId": false, + "zoomMin": 15, + "zoomMax": 20 + }, + "1007_PA": { + "table": "OMDB_NODE_PA", + "code": 1007, + "name": "点形态PA", + "existSubCode": true, + "checkLinkId": false, + "zoomMin": 15, + "zoomMax": 20 + }, + "1012": { + "table": "OMDB_CHECKPOINT", + "code": 1012, + "name": "检查点", + "catch": true, + "zoomMin": 15, + "zoomMax": 20 + }, + "2001": { + "table": "OMDB_RD_LINK", + "code": 2001, + "name": "道路线", + "zoomMin": 15, + "zoomMax": 17, + "catch": true, + "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": 17, + "catch": false, + "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, + "isDependOnOtherTable": true, + "checkLinkId": false, + "filterData": true, + "catch": true, + "transformer": [ + { + "k": "geometry", + "v": "~", + "klib": "geometry", + "vlib": "unpackingLaneBoundary()" + } + ] + }, + "2017": { + "table": "OMDB_LINK_CONSTRUCTION", + "code": 2017, + "name": "道路施工", + "catch": true, + "checkLinkId": false, + "zoomMin": 15, + "zoomMax": 17 + }, + "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 + }, + "2083": { + "table": "OMDB_RDBOUND_BOUNDARYTYPE", + "code": 2083, + "name": "道路边界类型", + "checkLinkId": false, + "filterData": true, + "zoomMin": 18, + "zoomMax": 20, + "catch": true + }, + "2090": { + "table": "OMDB_LANE_CONSTRUCTION", + "code": 2090, + "name": "车道施工", + "existSubCode": true, + "catch": true, + "zoomMin": 18, + "zoomMax": 20 + }, + "2092": { + "table": "OMDB_LANE_TYPE_ACCESS", + "code": 2092, + "name": "车道类型", + "catch": true, + "isDependOnOtherTable": true, + "zoomMin": 18, + "zoomMax": 20, + "transformer": [ + { + "k": "geometry", + "v": "~", + "klib": "geometry", + "vlib": "generateLaneTypeAccessS2ERefPoint()" + } + ] + }, + "2097": { + "table": "OMDB_PHY_LANENUM", + "code": 2097, + "name": "物理车道数" + }, + "2201": { + "table": "OMDB_BRIDGE", + "code": 2201, + "name": "桥", + "catch": true, + "existSubCode": true, + "isDependOnOtherTable": true, + "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, + "catch": true, + "transformer": [ + { + "k": "geometry", + "v": "~", + "klib": "geometry", + "vlib": "generateS2EReferencePoint()" + } + ] + }, + "2638": { + "table": "OMDB_LANE_ACCESS", + "code": 2638, + "name": "通行车辆类型Lane", + "zoomMin": 15, + "zoomMax": 20, + "catch": true, + "filterData": false, + "checkLinkId": false, + "transformer": [ + { + "k": "geometry", + "v": "~", + "klib": "geometry", + "vlib": "generateLaneAccessType()" + } + ] + }, + "3001": { + "table": "OMDB_OBJECT_OH_STRUCT", + "code": 3001, + "name": "上方障碍物", + "zoomMin": 15, + "zoomMax": 20, + "catch": true, + "checkLinkId": false, + "transformer": [ + { + "k": "geometry", + "v": "~", + "klib": "geometry", + "vlib": "getPolygonCenterPoint()" + } + ] + }, + "3002": { + "table": "OMDB_OBJECT_TEXT", + "code": 3002, + "name": "文字", + "zoomMin": 18, + "zoomMax": 20, + "catch": true, + "checkLinkId": false, + "transformer": [] + }, + "3003": { + "table": "OMDB_OBJECT_SYMBOL", + "code": 3003, + "name": "符号", + "checkLinkId": false, + "zoomMin": 18, + "zoomMax": 20, + "catch": true, + "transformer": [] + }, + "3004": { + "table": "OMDB_OBJECT_ARROW", + "code": 3004, + "name": "箭头", + "checkLinkId": false, + "zoomMin": 18, + "zoomMax": 20, + "catch": true, + "transformer": [ + { + "k": "geometry", + "v": "~", + "klib": "geometry", + "vlib": "obtainDynamicSrc('assets:omdb/arrowDirection/','.svg','arrowClass')" + } + ] + }, + "3005": { + "table": "OMDB_TRAFFIC_SIGN", + "code": 3005, + "name": "交通标牌", + "zoomMin": 18, + "zoomMax": 20, + "is3D": true, + "catch": true, + "transformer": [ + { + "k": "geometry", + "v": "~", + "klib": "geometry", + "vlib": "obtainTrafficSignCenterPoint()" + } + ] + }, + "3006": { + "table": "OMDB_POLE", + "code": 3006, + "name": "杆状物", + "is3D": true, + "catch": true, + "filterData": true, + "zoomMin": 18, + "zoomMax": 20, + "transformer": [ + { + "k": "geometry", + "v": "~", + "klib": "geometry", + "vlib": "normalizationPoleHeight()" + } + ] + }, + "3012": { + "table": "OMDB_FILL_AREA", + "code": 3012, + "name": "导流区", + "catch": true, + "checkLinkId": false, + "zoomMin": 18, + "zoomMax": 20 + }, + "3014": { + "table": "OMDB_CROSS_WALK", + "code": 3014, + "name": "人行横道", + "catch": true, + "checkLinkId": false, + "zoomMin": 18, + "zoomMax": 20 + }, + "3016": { + "table": "OMDB_OBJECT_STOPLOCATION", + "code": 3016, + "name": "停止位置", + "checkLinkId": false, + "filterData": true, + "zoomMin": 18, + "catch": true, + "zoomMax": 20 + }, + "3027": { + "table": "OMDB_OBJECT_REFUGE_ISLAND", + "code": 3027, + "name": "路口内交通岛", + "catch": true, + "checkLinkId": false, + "zoomMin": 18, + "zoomMax": 20 + }, + "4001": { + "table": "OMDB_INTERSECTION", + "code": 4001, + "name": "路口", + "zoomMin": 15, + "isDependOnOtherTable": true, + "zoomMax": 17, + "catch": true, + "transformer": [ + { + "k": "geometry", + "v": "~", + "klib": "geometry", + "vlib": "generateIntersectionReference()" + } + ] + }, + "4002": { + "table": "OMDB_SPEEDLIMIT", + "code": 4002, + "name": "常规点限速", + "catch": true, + "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": "条件点限速", + "catch": true, + "zoomMin": 15, + "zoomMax": 20, + "transformer": [ + { + "k": "maxSpeed", + "v": "0|", + "klib": "maxSpeed", + "vlib": "限" + } + ] + }, + "4004": { + "table": "OMDB_SPEEDLIMIT_VAR", + "code": 4004, + "name": "可变点限速", + "catch": true, + "zoomMin": 15, + "zoomMax": 20, + "transformer": [ + { + "k": "location", + "v": "1", + "klib": "ref", + "vlib": "左" + }, + { + "k": "location", + "v": "2", + "klib": "ref", + "vlib": "右" + }, + { + "k": "location", + "v": "3", + "klib": "ref", + "vlib": "上" + } + ] + }, + "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, + "name": "普通交限", + "zoomMin": 15, + "zoomMax": 17, + "filterData": true, + "isDependOnOtherTable": true, + "catch": true, + "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()" + } + ] + }, + "4009": { + "table": "OMDB_WARNINGSIGN", + "code": 4009, + "name": "警示信息", + "catch": true, + "isDependOnOtherTable": true, + "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": "obtainReferenceDynamicSrc('assets:omdb/appendix/1105_','_0.svg','typeCode')" + } + ] + }, + "4010": { + "table": "OMDB_ELECTRONICEYE", + "code": 4010, + "name": "电子眼", + "catch": true, + "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": "交通灯", + "catch": true, + "zoomMin": 15, + "zoomMax": 20, + "transformer": [ + ] + }, + "4023": { + "table": "OMDB_TOLLGATE", + "code": 4023, + "name": "收费站", + "catch": true, + "zoomMin": 15, + "zoomMax": 20, + "transformer": [ + ] + }, + "4601": { + "table": "OMDB_LANEINFO", + "code": 4601, + "name": "车信", + "catch": true, + "isDependOnOtherTable": true, + "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": "车道中心线", + "catch": false, + "isDependOnOtherTable": true, + "checkLinkId": false, + "zoomMin": 18, + "zoomMax": 20, + "transformer": [ + { + "k": "geometry", + "v": "~", + "klib": "geometry", + "vlib": "generateAddWidthLine()" + } + ] + } + } + }, + { + "tableGroupName": "道路形态", + "tableMap": { + "2004": { + "table": "OMDB_LINK_ATTRIBUTE", + "code": 2004, + "name": "道路属性", + "existSubCode": true, + "catch": true, + "zoomMin": 15, + "zoomMax": 20, + "transformer": [ + { + "k": "geometry", + "v": "~", + "klib": "geometry", + "vlib": "generateRoadText()" + } + ] + }, + "2022": { + "table": "OMDB_CON_ACCESS", + "code": 2022, + "name": "全封闭", + "zoomMin": 15, + "zoomMax": 17 + }, + "2037": { + "table": "OMDB_RAMP", + "code": 2037, + "name": "匝道", + "existSubCode": true, + "zoomMin": 15, + "zoomMax": 17 + }, + "2040": { + "table": "OMDB_MULTI_DIGITIZED", + "code": 2040, + "name": "上下线分离", + "zoomMin": 15, + "zoomMax": 17 + }, + "2204": { + "table": "OMDB_ROUNDABOUT", + "code": 2204, + "name": "环岛", + "catch": true, + "zoomMin": 15, + "zoomMax": 17, + "transformer": [ + ] + }, + "2205": { + "table": "OMDB_LINK_FORM1", + "code": 2205, + "name": "道路形态1", + "existSubCode": true, + "zoomMin": 15, + "zoomMax": 17 + }, + "2206": { + "table": "OMDB_LINK_FORM2", + "code": 2206, + "existSubCode": true, + "name": "道路形态2", + "zoomMin": 15, + "zoomMax": 17 + } + } + } ] \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/omqs/bean/ImportConfig.kt b/app/src/main/java/com/navinfo/omqs/bean/ImportConfig.kt index cf50508f..6e07e485 100644 --- a/app/src/main/java/com/navinfo/omqs/bean/ImportConfig.kt +++ b/app/src/main/java/com/navinfo/omqs/bean/ImportConfig.kt @@ -20,14 +20,12 @@ class ImportConfig { @Expose var checked: Boolean = true val preProcess: ImportPreProcess = ImportPreProcess() - fun transformProperties(renderEntity: RenderEntity, realm: Realm): RenderEntity? { + fun transformProperties(renderEntity: RenderEntity, realm: Realm?): RenderEntity? { preProcess.realm = realm val transformList = tableMap[renderEntity.code.toString()]?.transformer if (transformList.isNullOrEmpty()) { - Log.e("qj", "子表转换为空===${renderEntity.code}") return renderEntity } - Log.e("qj", "子表转换不为空===${renderEntity.code}") for (transform in transformList) { // 开始执行转换 val key: String = transform.k @@ -144,7 +142,7 @@ class TableInfo { val checkLinkId: Boolean = true//是否需要校验linkid val filterData: Boolean = false//是否需要过滤数据 val existSubCode: Boolean = false//是否存在子编码 - + val isDependOnOtherTable = false//是否依赖其他表 val catch: Boolean = false//是否需要捕捉 // 需要根据丹丹提供的捕捉原则进行设置,参考文档W行设置条件,https://navinfo.feishu.cn/sheets/shtcnfsxKZhekU26ezBcHgl7aWh?sheet=BZd6yM val name: String = "" 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 29bab874..292ea3fa 100644 --- a/app/src/main/java/com/navinfo/omqs/db/ImportOMDBHelper.kt +++ b/app/src/main/java/com/navinfo/omqs/db/ImportOMDBHelper.kt @@ -2,24 +2,19 @@ package com.navinfo.omqs.db import android.content.Context import android.database.Cursor.* -import android.os.Build -import android.provider.ContactsContract.Data import android.util.Log -import androidx.annotation.RequiresApi -import com.blankj.utilcode.util.FileIOUtils import com.blankj.utilcode.util.ZipUtils import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.navinfo.collect.library.data.entity.* import com.navinfo.collect.library.enums.DataCodeEnum -import com.navinfo.collect.library.utils.DeflaterUtil -import com.navinfo.collect.library.utils.GeometryTools import com.navinfo.collect.library.utils.StrZipUtil import com.navinfo.omqs.Constant import com.navinfo.omqs.Constant.Companion.currentInstallTaskConfig import com.navinfo.omqs.Constant.Companion.currentInstallTaskFolder import com.navinfo.omqs.Constant.Companion.installTaskid import com.navinfo.omqs.bean.ImportConfig +import com.navinfo.omqs.bean.TableInfo import com.navinfo.omqs.db.deep.LinkList import com.navinfo.omqs.hilt.OMDBDataBaseHiltFactory import com.navinfo.omqs.util.CMLog @@ -27,23 +22,19 @@ import dagger.assisted.Assisted import dagger.assisted.AssistedInject import io.realm.Realm import io.realm.RealmConfiguration -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.delay +import kotlinx.coroutines.* +import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.FlowCollector +import kotlinx.coroutines.flow.channelFlow import kotlinx.coroutines.flow.flow -import kotlinx.coroutines.withContext -import org.locationtech.jts.geom.Geometry -import org.locationtech.jts.geom.GeometryFactory -import org.locationtech.jts.geom.LineString -import org.locationtech.jts.geom.MultiLineString +import kotlinx.coroutines.sync.Mutex import org.spatialite.database.SQLiteDatabase import java.io.BufferedReader import java.io.File import java.io.FileReader import java.util.* import javax.inject.Inject -import kotlin.collections.HashMap -import kotlin.streams.toList /** * 导入omdb数据的帮助类 @@ -56,11 +47,12 @@ class ImportOMDBHelper @AssistedInject constructor( @Inject lateinit var gson: Gson - private val database by lazy { - omdbHiltFactory.obtainOmdbDataBaseHelper( - context, omdbFile.absolutePath, 1 - ).writableDatabase - } + + // private val database by lazy { +// omdbHiltFactory.obtainOmdbDataBaseHelper( +// context, omdbFile.absolutePath, 1 +// ).writableDatabase +// } private val configFile: File = File("${Constant.USER_DATA_PATH}", Constant.OMDB_CONFIG) private val importConfigList by lazy { @@ -82,701 +74,700 @@ class ImportOMDBHelper @AssistedInject constructor( } } - /** - * 读取指定数据表的数据集 - * */ - @RequiresApi(Build.VERSION_CODES.N) - suspend fun getOMDBTableData(table: String): Flow>> = - withContext(Dispatchers.IO) { - val listResult: MutableList> = mutableListOf() - flow>> { - if (database.isOpen) { - val comumns = mutableListOf() - // 获取要读取的列名 - val columns = getColumns(database, table) - // 处理列名,如果列名是GEOMETRY,则使用spatialite函数ST_AsText读取blob数据 - val finalColumns = columns.stream().map { - val column = it.replace("\"", "", true) - if ("GEOMETRY".equals(column, ignoreCase = true)) { - "ST_AsText($column)" - } else { - column - } - }.toList() +// /** +// * 读取指定数据表的数据集 +// * */ +// @RequiresApi(Build.VERSION_CODES.N) +// suspend fun getOMDBTableData(table: String): Flow>> = +// withContext(Dispatchers.IO) { +// val listResult: MutableList> = mutableListOf() +// flow>> { +// if (database.isOpen) { +// val comumns = mutableListOf() +// // 获取要读取的列名 +// val columns = getColumns(database, table) +// // 处理列名,如果列名是GEOMETRY,则使用spatialite函数ST_AsText读取blob数据 +// val finalColumns = columns.stream().map { +// val column = it.replace("\"", "", true) +// if ("GEOMETRY".equals(column, ignoreCase = true)) { +// "ST_AsText($column)" +// } else { +// column +// } +// }.toList() +// +// val cursor = database.query( +// table, +// finalColumns.toTypedArray(), +// "1=1", +// mutableListOf().toTypedArray(), +// null, +// null, +// null, +// null +// ) +// with(cursor) { +// if (moveToFirst()) { +// while (moveToNext()) { +// val rowMap = mutableMapOf() +// for (columnIndex in 0 until columnCount) { +// var columnName = getColumnName(columnIndex) +// if (columnName.startsWith("ST_AsText(")) { +// columnName = columnName.replace("ST_AsText(", "") +// .substringBeforeLast(")") +// } +// when (getType(columnIndex)) { +// FIELD_TYPE_NULL -> rowMap[columnName] = "" +// FIELD_TYPE_INTEGER -> rowMap[columnName] = +// getInt(columnIndex) +// +// FIELD_TYPE_FLOAT -> rowMap[columnName] = +// getFloat(columnIndex) +// +// FIELD_TYPE_BLOB -> rowMap[columnName] = +// String(getBlob(columnIndex), Charsets.UTF_8) +// +// else -> rowMap[columnName] = getString(columnIndex) +// } +// } +// listResult.add(rowMap) +// } +// } +// } +// emit(listResult) +// cursor.close() +// } +// } +// } - val cursor = database.query( - table, - finalColumns.toTypedArray(), - "1=1", - mutableListOf().toTypedArray(), - null, - null, - null, - null - ) - with(cursor) { - if (moveToFirst()) { - while (moveToNext()) { - val rowMap = mutableMapOf() - for (columnIndex in 0 until columnCount) { - var columnName = getColumnName(columnIndex) - if (columnName.startsWith("ST_AsText(")) { - columnName = columnName.replace("ST_AsText(", "") - .substringBeforeLast(")") - } - when (getType(columnIndex)) { - FIELD_TYPE_NULL -> rowMap[columnName] = "" - FIELD_TYPE_INTEGER -> rowMap[columnName] = - getInt(columnIndex) - - FIELD_TYPE_FLOAT -> rowMap[columnName] = - getFloat(columnIndex) - - FIELD_TYPE_BLOB -> rowMap[columnName] = - String(getBlob(columnIndex), Charsets.UTF_8) - - else -> rowMap[columnName] = getString(columnIndex) - } - } - listResult.add(rowMap) - } - } - } - emit(listResult) - cursor.close() - } - } - } /** * 从zip文件中导入数据到Realm中 * @param omdbZipFile omdb数据抽取生成的Zip文件 * @param configFile 对应的配置文件 * */ - suspend fun importOmdbZipFile(omdbZipFile: File, task: TaskBean): Flow = - withContext(Dispatchers.IO) { - installTaskid = task.id.toString() - currentInstallTaskFolder = File(Constant.USER_DATA_PATH + "/$installTaskid") - if (!currentInstallTaskFolder.exists()) currentInstallTaskFolder.mkdirs() - currentInstallTaskConfig = - RealmConfiguration.Builder().directory(currentInstallTaskFolder).name("OMQS.realm") - .encryptionKey(Constant.PASSWORD) + suspend fun importOmdbZipFile( + omdbZipFile: File, task: TaskBean, scope: CoroutineScope + ): Boolean { + val channel = Channel>(Channel.RENDEZVOUS) + + installTaskid = task.id.toString() + currentInstallTaskFolder = File(Constant.USER_DATA_PATH + "/$installTaskid") + if (!currentInstallTaskFolder.exists()) currentInstallTaskFolder.mkdirs() + currentInstallTaskConfig = + RealmConfiguration.Builder().directory(currentInstallTaskFolder) + .name("OMQS.realm") + .encryptionKey(Constant.PASSWORD) // .allowQueriesOnUiThread(true) - .schemaVersion(2).build() - val unZipFolder = File(omdbZipFile.parentFile, "result") + .schemaVersion(2).build() - flow { - if (unZipFolder.exists()) { - unZipFolder.deleteRecursively() - } - unZipFolder.mkdirs() - // 开始解压zip文件 - val unZipFiles = ZipUtils.unzipFile(omdbZipFile, unZipFolder) - // 先获取当前配置的所有图层的个数,方便后续计算数据解析进度 - var tableNum = 0 - var processIndex = 0 - //下载数据统计 - var dataIndex = 0 - //数据库插入的统计 - var insertIndex = 0 - //单个表要素统计 - var elementIndex = 0 - //单个表要素时间统计 -// var tableImportTime = System.currentTimeMillis() - //总表要素统计时间 -// var dataImportTime = System.currentTimeMillis() -// Realm.compactRealm(currentInstallTaskConfig) - var realm = Realm.getInstance(currentInstallTaskConfig) + val unZipFolder = File(omdbZipFile.parentFile, "result") + if (unZipFolder.exists()) { + unZipFolder.deleteRecursively() + } + unZipFolder.mkdirs() + // 开始解压zip文件 + val unZipFiles = ZipUtils.unzipFile(omdbZipFile, unZipFolder) + // 先获取当前配置的所有图层的个数,方便后续计算数据解析进度 + var tableNum = 0 + var processIndex = 0 - realm.beginTransaction() - for (importConfig in importConfigList) { - tableNum += importConfig.tableMap.size - } - //缓存任务link信息,便于下面与数据进行任务link匹配 - val hashMap: HashMap = HashMap() + for (importConfig in importConfigList) { + tableNum += importConfig.tableMap.size + } + //缓存任务link信息,便于下面与数据进行任务link匹配 + val hashMap: HashMap = HashMap() // val lineList = arrayOfNulls(task.hadLinkDvoList.size) // var index = 0 - task.hadLinkDvoList.forEach { - hashMap[it.linkPid.toLong()] = it + task.hadLinkDvoList.forEach { + hashMap[it.linkPid.toLong()] = it // lineList[index] = GeometryTools.createGeometry(it.geometry) as LineString // index++ + } + //需要关联查询的表 + val listDependOnEntry = + mutableMapOf, ImportConfig>() + //协程池 + val listJob = mutableListOf() + try { + for (importConfig in importConfigList) { + for ((index, currentEntry) in importConfig.tableMap.entries.withIndex()) { + if (currentEntry.value.isDependOnOtherTable) { + listDependOnEntry[currentEntry] = importConfig + continue + } + val job = scope.launch(Dispatchers.IO) { + importData( + channel, + unZipFiles, + currentEntry, + task, + importConfig, + hashMap + ) + } + listJob.add(job) + } + } + val channelJob = scope.launch(Dispatchers.IO) { + val iterator = channel.iterator() + while (iterator.hasNext()) { + val next = iterator.next() + val realm = Realm.getInstance(currentInstallTaskConfig) + realm.executeTransaction { + it.copyToRealm(next) + } + realm.close() } - val resHashMap: HashMap = HashMap() //define empty hashmap - val listRenderEntity = mutableListOf() - try { + } -// var multipLine = MultiLineString(lineList, GeometryFactory()) + listJob.joinAll() + channel.close() + channelJob.join() + Log.e("jingo", "channel close 等待结束") + for ((currentEntry, importConfig) in listDependOnEntry) { + importData( + channel, + unZipFiles, + currentEntry, + task, + importConfig, + hashMap, + false + ) + } + Log.e("jingo", "安装结束") + } catch (e: Exception) { + Log.e("jingo", "安装报错1 ${e.message}") + return false + } + return true + } - - // 遍历解压后的文件,读取该数据返回 -// Log.d("ImportOMDBHelper", "表解析===开始时间$dataImportTime===") - CMLog.writeLogtoFile( - ImportOMDBHelper::class.java.name, - "importOmdbZipFile", - "开始" + private suspend fun importData( + f: Channel>, + unZipFiles: List, + currentEntry: MutableMap.MutableEntry, + task: TaskBean, + importConfig: ImportConfig, + hashMap: HashMap, + isEmit: Boolean = true + ) { + val resHashMap: HashMap = HashMap() //define empty hashmap + var listRenderEntity = mutableListOf() + //单个表要素统计 + var elementIndex = 0 + val currentConfig = currentEntry.value +// CMLog.writeLogtoFile( +// ImportOMDBHelper::class.java.name, +// "importOmdbZipFile", +// "${currentConfig.table}开始" +// ) + try { + var realm: Realm? = null + if (!isEmit) { + realm = Realm.getInstance(currentInstallTaskConfig) + realm.beginTransaction() + } + val txtFile = unZipFiles.find { + it.name == currentConfig.table + } + if (txtFile != null && txtFile.exists()) { + val fileReader = FileReader(txtFile) + val bufferedReader = BufferedReader(fileReader) + var line: String? = bufferedReader.readLine() + var time = System.currentTimeMillis() + var newTime = 0L + while (line != null) { + if (line == null || line.trim() == "") { + line = bufferedReader.readLine() + continue + } + newTime = System.currentTimeMillis() + Log.e( + "jingo", + "安装数据 ${currentConfig.table} $elementIndex ${listRenderEntity.size} ${newTime - time}" ) - for (importConfig in importConfigList) { + time = newTime + elementIndex += 1 + val map = gson.fromJson>( + line, object : TypeToken>() {}.type + ).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_zoomMin"] = currentConfig.zoomMin + map["qi_zoomMax"] = currentConfig.zoomMax - for ((index, currentEntry) in importConfig.tableMap.entries.withIndex()) { - processIndex += 1 + // 先查询这个mesh下有没有数据,如果有则跳过即可 + 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() - val currentConfig = currentEntry.value - - CMLog.writeLogtoFile( - ImportOMDBHelper::class.java.name, - "importOmdbZipFile", - "${currentConfig.table}开始" + // 在外层记录当前数据的linkPid + if (map.containsKey("linkPid")) { + renderEntity.linkPid = map["linkPid"].toString().split(",")[0] + } else if (map.containsKey("linkList")) { + val linkList = map["linkList"].toString() + if (!linkList.isNullOrEmpty() && linkList != "null") { + val list: List = gson.fromJson( + linkList, object : TypeToken>() {}.type ) + renderEntity.linkPid = list[0].linkPid + } + } - val txtFile = unZipFiles.find { - it.name == currentConfig.table + renderEntity.geometry = map["geometry"].toString() + for ((key, value) in map) { + when (value) { + is String -> renderEntity.properties[key] = value + is Int -> renderEntity.properties[key] = value.toInt().toString() + + is Double -> renderEntity.properties[key] = + value.toDouble().toString() + + else -> renderEntity.properties[key] = value.toString() + } + } + // 如果properties中不包含name,那么自动将要素名称添加进properties中 + if (!renderEntity.properties.containsKey("name")) { + renderEntity.properties["name"] = renderEntity.name; + } + + if (currentConfig.filterData) { + when (renderEntity.code.toInt()) { + + DataCodeEnum.OMDB_POLE.code.toInt() -> { + //过滤树类型的杆状物,无需导入到数据库中 + val poleType = renderEntity.properties["poleType"] + if (poleType != null && poleType.toInt() == 2) { + line = bufferedReader.readLine() + continue + } } - Log.e("qj", "开始遍历文件==${currentConfig.table}") - if (txtFile != null && txtFile.exists()) { - try { - Log.e("qj", "开始遍历文件1") - val fileReader = FileReader(txtFile) - val bufferedReader = BufferedReader(fileReader) - var line: String? = bufferedReader.readLine() - - while (line != null) { - if (line == null || line.trim() == "") { + DataCodeEnum.OMDB_LANE_MARK_BOUNDARYTYPE.code.toInt() -> { + val boundaryType = renderEntity.properties["boundaryType"] + if (boundaryType != null) { + when (boundaryType.toInt()) { + 0, 1, 6, 8, 9 -> { + renderEntity.enable = 0 line = bufferedReader.readLine() continue } - elementIndex += 1 - dataIndex += 1 - val map = gson.fromJson>( - line, object : TypeToken>() {}.type - ).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_zoomMin"] = currentConfig.zoomMin - map["qi_zoomMax"] = currentConfig.zoomMax - - // 先查询这个mesh下有没有数据,如果有则跳过即可 - 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() - - // 在外层记录当前数据的linkPid - if (map.containsKey("linkPid")) { - renderEntity.linkPid = - map["linkPid"].toString().split(",")[0] - } else if (map.containsKey("linkList")) { - val linkList = map["linkList"].toString() - if (!linkList.isNullOrEmpty() && linkList != "null") { - val list: List = gson.fromJson( - linkList, - object : TypeToken>() {}.type - ) - renderEntity.linkPid = list[0].linkPid - } - } - - Log.e( - "jingo", - "安装数据 ${renderEntity.table} ${renderEntity.linkPid} $elementIndex $insertIndex" - ) - - renderEntity.geometry = map["geometry"].toString() - Log.e("jingo", "map解析开始") - for ((key, value) in map) { - when (value) { - is String -> renderEntity.properties[key] = value - is Int -> renderEntity.properties[key] = - value.toInt().toString() - - is Double -> renderEntity.properties[key] = - value.toDouble().toString() - - else -> renderEntity.properties[key] = - value.toString() - } - } - - // 如果properties中不包含name,那么自动将要素名称添加进properties中 - if (!renderEntity.properties.containsKey("name")) { - renderEntity.properties["name"] = renderEntity.name; - } - - Log.e("jingo", "map解析结束") - - if (currentConfig.filterData) { - when (renderEntity.code.toInt()) { - - DataCodeEnum.OMDB_POLE.code.toInt() -> { - //过滤树类型的杆状物,无需导入到数据库中 - val poleType = - renderEntity.properties["poleType"] - if (poleType != null && poleType.toInt() == 2) { - line = bufferedReader.readLine() - continue - } - } - - DataCodeEnum.OMDB_LANE_MARK_BOUNDARYTYPE.code.toInt() -> { - val boundaryType = - renderEntity.properties["boundaryType"] - if (boundaryType != null) { - when (boundaryType.toInt()) { - 0, 1, 6, 8, 9 -> { - renderEntity.enable = 0 - line = bufferedReader.readLine() - continue - } - } - } - } - - DataCodeEnum.OMDB_RDBOUND_BOUNDARYTYPE.code.toInt() -> { - val boundaryType = - renderEntity.properties["boundaryType"] - if (boundaryType != null) { - when (boundaryType.toInt()) { - 0, 1, 3, 4, 5, 7, 9 -> { - renderEntity.enable = 0 - line = bufferedReader.readLine() - continue - } - } - } - } - - DataCodeEnum.OMDB_OBJECT_STOPLOCATION.code.toInt() -> { - val locationType = - renderEntity.properties["locationType"] - if (locationType != null) { - when (locationType.toInt()) { - 3, 4 -> { - renderEntity.enable = 0 - line = bufferedReader.readLine() - continue - } - } - } - } - - DataCodeEnum.OMDB_RESTRICTION.code.toInt() -> { - if (renderEntity.properties.containsKey("linkIn") && renderEntity.properties.containsKey( - "linkOut" - ) - ) { - val linkIn = - renderEntity.properties["linkIn"] - val linkOut = - renderEntity.properties["linkOut"] - if (linkIn != null && linkOut != null) { - val checkMsg = "$linkIn$linkOut" - if (resHashMap.containsKey(checkMsg)) { - line = bufferedReader.readLine() - continue - } else { - resHashMap[checkMsg] = renderEntity - } - } - } - } - } - } - - //遍历判断只显示与任务Link相关的任务数据 - if (currentConfig.checkLinkId) { - - if (renderEntity.linkPid.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 - } - } - } - } - - } else if (renderEntity.code.toInt() == DataCodeEnum.OMDB_INTERSECTION.code.toInt() || renderEntity.code.toInt() == DataCodeEnum.OMDB_LANE_CONSTRUCTION.code.toInt() && renderEntity.properties.containsKey( - "linkList" - ) - ) { - - if (renderEntity.properties["linkList"] != null) { - - val linkList = - renderEntity.properties["linkList"] - - if (!linkList.isNullOrEmpty() && linkList != "null") { - - val list: List = gson.fromJson( - linkList, - object : - TypeToken>() {}.type - ) - - m@ for (link in list) { - if (hashMap.containsKey(link.linkPid.toLong())) { - renderEntity.enable = 1 - break@m - } - } - } - } - } else { - //不包括linkPid直接过滤 - line = bufferedReader.readLine() - continue - } - //过滤掉非任务路线上的数据 - if (renderEntity.enable != 1) { - line = bufferedReader.readLine() - continue - } - - } else { - renderEntity.enable = 1 - } - - if (currentConfig.catch) { - renderEntity.catchEnable = 1 - } else { - renderEntity.catchEnable = 0 - } - - var resultEntity = importConfig.transformProperties(renderEntity, realm) - - if (resultEntity != null) { - - if (currentConfig.existSubCode) { - when (renderEntity.code.toInt()) { - DataCodeEnum.OMDB_LINK_ATTRIBUTE.code.toInt() -> { - var type = renderEntity.properties["sa"] - - if (type != null && type == "1") { - renderEntity.code = - DataCodeEnum.OMDB_LINK_ATTRIBUTE_SA.code - } else { - type = renderEntity.properties["pa"] - if (type != null && type == "1") { - renderEntity.code = - DataCodeEnum.OMDB_LINK_ATTRIBUTE_PA.code - } else { - type = - renderEntity.properties["frontage"] - if (type != null && type == "1") { - renderEntity.code = - DataCodeEnum.OMDB_LINK_ATTRIBUTE_FORNTAGE.code - renderEntity.zoomMin = 15 - renderEntity.zoomMax = 17 - } else { - type = - renderEntity.properties["mainSideAccess"] - if (type != null && type == "1") { - renderEntity.code = - DataCodeEnum.OMDB_LINK_ATTRIBUTE_MAIN_SIDE_ACCESS.code - renderEntity.zoomMin = 15 - renderEntity.zoomMax = 17 - } else { - renderEntity.enable = 0 - renderEntity.zoomMin = 15 - renderEntity.zoomMax = 17 - line = - bufferedReader.readLine() - continue - } - } - } - } - } - //桥 - DataCodeEnum.OMDB_BRIDGE.code.toInt() -> { - when (renderEntity.properties["bridgeType"]) { - "1" -> renderEntity.code = - DataCodeEnum.OMDB_BRIDGE_1.code - - "2" -> renderEntity.code = - DataCodeEnum.OMDB_BRIDGE_2.code - - else -> DataCodeEnum.OMDB_BRIDGE.code - } - } - - DataCodeEnum.OMDB_RAMP.code.toInt() -> { - //*匝道*//* - val formWay = - renderEntity.properties["formOfWay"] - if (formWay != null) { - when (formWay.toInt()) { - 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 - } - } - } - - DataCodeEnum.OMDB_LINK_FORM1.code.toInt() -> { - //*道路形态1*//* - val formWay = - renderEntity.properties["formOfWay"] - if (formWay != null) { - when (formWay.toInt()) { - 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 - } - } - } - - DataCodeEnum.OMDB_LINK_FORM2.code.toInt() -> { - //*道路形态2*//* - val formWay = - renderEntity.properties["formOfWay"] - if (formWay != null) { - when (formWay.toInt()) { - 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 - } - } - } - - DataCodeEnum.OMDB_LANE_CONSTRUCTION.code.toInt() -> { - //特殊处理空数据,渲染原则使用 - val startTime = - renderEntity.properties["startTime"] - if (startTime == null || startTime == "") { - renderEntity.properties["startTime"] = - "null" - } - } - } - - if (renderEntity.table == DataCodeEnum.OMDB_NODE_FORM.name) {//特殊处理,因为code相同,使用表名判断 - //过滤不需要渲染的要素 - val formOfWay = - renderEntity.properties["formOfWay"] - if (formOfWay != null && formOfWay.toInt() == 30) { - renderEntity.enable = 2 - renderEntity.code = - DataCodeEnum.OMDB_NODE_FORM.code - } else { - line = bufferedReader.readLine() - continue - } - } else if (renderEntity.table == DataCodeEnum.OMDB_NODE_PA.name) {//特殊处理,因为code相同,使用表名判断 - //过滤不需要渲染的要素 - val attributeType = - renderEntity.properties["attributeType"] - if (attributeType != null && attributeType.toInt() == 30) { - renderEntity.enable = 2 - renderEntity.code = - DataCodeEnum.OMDB_NODE_PA.code - } else { - line = bufferedReader.readLine() - continue - } - } - } - - ++insertIndex - - //移除该字段,减少数据量 - if (renderEntity.properties.containsKey("geometry")) { - renderEntity.properties.remove("geometry") - } - - //移除该字段,减少数据量 - if (renderEntity.properties.containsKey("linkPid")) { - renderEntity.properties.remove("linkPid") - } - - // 如果当前解析的是OMDB_RD_LINK数据,将其缓存在预处理类中,以便后续处理其他要素时使用 - if (currentConfig.code == DataCodeEnum.OMDB_RD_LINK.code.toInt()) { - if (renderEntity.linkRelation == null) { - renderEntity.linkRelation = LinkRelation() - } - renderEntity.linkRelation!!.linkPid = - renderEntity.linkPid - renderEntity.linkRelation!!.sNodeId = - renderEntity.properties["snodePid"] - renderEntity.linkRelation!!.eNodeId = - renderEntity.properties["enodePid"] - } - - //去掉暂用控件较大的字段多余属性字段 - if (renderEntity.properties.containsKey("shapeList")) { - renderEntity.properties.remove("shapeList") - } - - var gsonStr = gson.toJson(renderEntity.properties).toByteArray() - - renderEntity.propertiesDb = DeflaterUtil.compress(gsonStr)//StrZipUtil.compress(gsonStr) - - listRenderEntity.add(renderEntity) - } - - if (listRenderEntity.size > 50000) { - Log.e("jingo", "50000刷新") - realm.copyToRealmOrUpdate(listRenderEntity) - realm.commitTransaction() - realm.close() - listRenderEntity.clear() - insertIndex = 0 - realm = Realm.getInstance(currentInstallTaskConfig) - realm.beginTransaction() - } - line = bufferedReader.readLine() } - - bufferedReader.close() - } catch (e: Exception) { - CMLog.writeLogtoFile( - ImportOMDBHelper::class.java.name, - "importOmdbZipFile", - "${currentConfig.table}安装异常" - ) } - } else { - CMLog.writeLogtoFile( - ImportOMDBHelper::class.java.name, - "importOmdbZipFile", - "文件不存在" - ) } - // 1个文件发送一次flow流 - emit("${processIndex}/${tableNum}") - CMLog.writeLogtoFile( - ImportOMDBHelper::class.java.name, - "importOmdbZipFile", - "${currentConfig.table}结束==$elementIndex" - ) - elementIndex = 0 + + DataCodeEnum.OMDB_RDBOUND_BOUNDARYTYPE.code.toInt() -> { + val boundaryType = renderEntity.properties["boundaryType"] + if (boundaryType != null) { + when (boundaryType.toInt()) { + 0, 1, 3, 4, 5, 7, 9 -> { + renderEntity.enable = 0 + line = bufferedReader.readLine() + continue + } + } + } + } + + DataCodeEnum.OMDB_OBJECT_STOPLOCATION.code.toInt() -> { + val locationType = renderEntity.properties["locationType"] + if (locationType != null) { + when (locationType.toInt()) { + 3, 4 -> { + renderEntity.enable = 0 + line = bufferedReader.readLine() + continue + } + } + } + } + + DataCodeEnum.OMDB_RESTRICTION.code.toInt() -> { + if (renderEntity.properties.containsKey("linkIn") && renderEntity.properties.containsKey( + "linkOut" + ) + ) { + val linkIn = renderEntity.properties["linkIn"] + val linkOut = renderEntity.properties["linkOut"] + if (linkIn != null && linkOut != null) { + val checkMsg = "$linkIn$linkOut" + if (resHashMap.containsKey(checkMsg)) { + line = bufferedReader.readLine() + continue + } else { + resHashMap[checkMsg] = renderEntity + } + } + } + } } } - CMLog.writeLogtoFile( - ImportOMDBHelper::class.java.name, - "importOmdbZipFile", - "结束===总量$dataIndex" - ) - realm.copyToRealmOrUpdate(listRenderEntity) - realm.commitTransaction() - realm.close() - listRenderEntity.clear() - Log.e("qj", "安装结束") - } catch (e: Exception) { - if (realm.isInTransaction) { - realm.cancelTransaction() - realm.close() + //遍历判断只显示与任务Link相关的任务数据 + if (currentConfig.checkLinkId) { + + if (renderEntity.linkPid.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 + } + } + } + } + + } else if (renderEntity.code.toInt() == DataCodeEnum.OMDB_INTERSECTION.code.toInt() || renderEntity.code.toInt() == DataCodeEnum.OMDB_LANE_CONSTRUCTION.code.toInt() && renderEntity.properties.containsKey( + "linkList" + ) + ) { + + if (renderEntity.properties["linkList"] != null) { + + val linkList = renderEntity.properties["linkList"] + + if (!linkList.isNullOrEmpty() && linkList != "null") { + val list: List = gson.fromJson( + linkList, object : TypeToken>() {}.type + ) + + m@ for (link in list) { + if (hashMap.containsKey(link.linkPid.toLong())) { + renderEntity.enable = 1 + break@m + } + } + } + } + } else { + //不包括linkPid直接过滤 + line = bufferedReader.readLine() + continue + } + //过滤掉非任务路线上的数据 + if (renderEntity.enable != 1) { + line = bufferedReader.readLine() + continue + } + + } else { + renderEntity.enable = 1 } - throw e + + if (currentConfig.catch) { + renderEntity.catchEnable = 1 + } else { + renderEntity.catchEnable = 0 + } + + // 对renderEntity做预处理后再保存 + val resultEntity = importConfig.transformProperties(renderEntity, realm) + if (resultEntity != null) { + + //对code编码需要特殊处理 存在多个属性值时,渲染优先级:SA>PA,存在多个属性值时,渲染优先级:FRONTAGE>MAIN_SIDE_A CCESS + if (currentConfig.existSubCode) { + when (renderEntity.code.toInt()) { + DataCodeEnum.OMDB_LINK_ATTRIBUTE.code.toInt() -> { + + var type = renderEntity.properties["sa"] + if (type != null && type == "1") { + renderEntity.code = + DataCodeEnum.OMDB_LINK_ATTRIBUTE_SA.code + } else { + type = renderEntity.properties["pa"] + if (type != null && type == "1") { + renderEntity.code = + DataCodeEnum.OMDB_LINK_ATTRIBUTE_PA.code + } else { + type = renderEntity.properties["frontage"] + if (type != null && type == "1") { + renderEntity.code = + DataCodeEnum.OMDB_LINK_ATTRIBUTE_FORNTAGE.code + renderEntity.zoomMin = 15 + renderEntity.zoomMax = 17 + } else { + type = renderEntity.properties["mainSideAccess"] + if (type != null && type == "1") { + renderEntity.code = + DataCodeEnum.OMDB_LINK_ATTRIBUTE_MAIN_SIDE_ACCESS.code + renderEntity.zoomMin = 15 + renderEntity.zoomMax = 17 + } else { + renderEntity.enable = 0 + renderEntity.zoomMin = 15 + renderEntity.zoomMax = 17 + line = bufferedReader.readLine() + continue + } + } + } + } + } + //桥 + DataCodeEnum.OMDB_BRIDGE.code.toInt() -> { + when (renderEntity.properties["bridgeType"]) { + "1" -> renderEntity.code = + DataCodeEnum.OMDB_BRIDGE_1.code + "2" -> renderEntity.code = + DataCodeEnum.OMDB_BRIDGE_2.code + // "3" -> renderEntity.code = DataCodeEnum.OMDB_BRIDGE_3.code + else -> DataCodeEnum.OMDB_BRIDGE.code + } + } + + DataCodeEnum.OMDB_RAMP.code.toInt() -> { + /*匝道*/ + val formWay = renderEntity.properties["formOfWay"] + if (formWay != null) { + when (formWay.toInt()) { + 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 + } + } + } + + DataCodeEnum.OMDB_LINK_FORM1.code.toInt() -> { + /*道路形态1*/ + val formWay = renderEntity.properties["formOfWay"] + if (formWay != null) { + when (formWay.toInt()) { + 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 + } + } + } + + DataCodeEnum.OMDB_LINK_FORM2.code.toInt() -> { + /*道路形态2*/ + val formWay = renderEntity.properties["formOfWay"] + if (formWay != null) { + when (formWay.toInt()) { + 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 + } + } + } + + DataCodeEnum.OMDB_LANE_CONSTRUCTION.code.toInt() -> { + //特殊处理空数据,渲染原则使用 + val startTime = renderEntity.properties["startTime"] + if (startTime == null || startTime == "") { + renderEntity.properties["startTime"] = "null" + } + } + } + + if (renderEntity.table == DataCodeEnum.OMDB_NODE_FORM.name) {//特殊处理,因为code相同,使用表名判断 + //过滤不需要渲染的要素 + val formOfWay = renderEntity.properties["formOfWay"] + if (formOfWay != null && formOfWay.toInt() == 30) { + renderEntity.enable = 2 + renderEntity.code = DataCodeEnum.OMDB_NODE_FORM.code + } else { + line = bufferedReader.readLine() + continue + } + } else if (renderEntity.table == DataCodeEnum.OMDB_NODE_PA.name) {//特殊处理,因为code相同,使用表名判断 + //过滤不需要渲染的要素 + val attributeType = renderEntity.properties["attributeType"] + if (attributeType != null && attributeType.toInt() == 30) { + renderEntity.enable = 2 + renderEntity.code = DataCodeEnum.OMDB_NODE_PA.code + } else { + line = bufferedReader.readLine() + continue + } + } + } + + + //移除该字段,减少数据量 + if (renderEntity.properties.containsKey("geometry")) { + renderEntity.properties.remove("geometry") + } + + //移除该字段,减少数据量 + if (renderEntity.properties.containsKey("linkPid")) { + renderEntity.properties.remove("linkPid") + } + + // 如果当前解析的是OMDB_RD_LINK数据,将其缓存在预处理类中,以便后续处理其他要素时使用 + if (currentConfig.code == DataCodeEnum.OMDB_RD_LINK.code.toInt()) { + if (renderEntity.linkRelation == null) { + renderEntity.linkRelation = LinkRelation() + } + renderEntity.linkRelation!!.linkPid = renderEntity.linkPid + renderEntity.linkRelation!!.sNodeId = + renderEntity.properties["snodePid"] + renderEntity.linkRelation!!.eNodeId = + renderEntity.properties["enodePid"] + } + + //去掉暂用控件较大的字段多余属性字段 + if (renderEntity.properties.containsKey("shapeList")) { + renderEntity.properties.remove("shapeList") + } + + renderEntity.propertiesDb = StrZipUtil.compress( + gson.toJson(renderEntity.properties).toString() + ) + listRenderEntity.add(renderEntity) + } + + if (listRenderEntity.size > 20000) { + Log.e( + "jingo", + "安装数据 ${currentConfig.table} $elementIndex ${listRenderEntity.size}" + ) + if (isEmit) { + f.send(listRenderEntity) + delay(20) + } else { + realm!!.copyToRealm(listRenderEntity) + realm!!.commitTransaction() + realm!!.close() + realm = Realm.getInstance(currentInstallTaskConfig) + realm.beginTransaction() + } + listRenderEntity = mutableListOf() +// + } + line = bufferedReader.readLine() } - emit("finish") - } - } +// CMLog.writeLogtoFile( +// ImportOMDBHelper::class.java.name, +// "importOmdbZipFile", +// "结束===总量$elementIndex" +// ) - // 获取指定数据表的列名 - fun getColumns(db: SQLiteDatabase, tableName: String): List { - val columns = mutableListOf() + if (isEmit) { + f.send(listRenderEntity) + delay(20) - // 查询 sqlite_master 表获取指定数据表的元数据信息 - val cursor = db.query( - "sqlite_master", - arrayOf("sql"), - "type='table' AND name=?", - arrayOf(tableName), - null, - null, - null - ) - - // 从元数据信息中解析出列名 - if (cursor.moveToFirst()) { - val sql = cursor.getString(0) - val startIndex = sql.indexOf("(") + 1 - val endIndex = sql.lastIndexOf(")") - val columnDefs = sql.substring(startIndex, endIndex).split(",") - for (columnDef in columnDefs) { - val columnName = columnDef.trim().split(" ")[0] - if (!columnName.startsWith("rowid", true)) { // 排除 rowid 列 - columns.add(columnName) + } else { + bufferedReader.close() + realm!!.copyToRealm(listRenderEntity) + realm!!.commitTransaction() } } + if (!isEmit) { + realm!!.close() + } + } catch (e: Exception) { + Log.e("jingo", "安装报错 ${currentConfig.table} ${elementIndex} ${e.message}") + throw e } - cursor.close() - return columns + Log.e("jingo", "完成 ${currentConfig.table}") } + + +// // 获取指定数据表的列名 +// fun getColumns(db: SQLiteDatabase, tableName: String): List { +// val columns = mutableListOf() +// +// // 查询 sqlite_master 表获取指定数据表的元数据信息 +// val cursor = db.query( +// "sqlite_master", +// arrayOf("sql"), +// "type='table' AND name=?", +// arrayOf(tableName), +// null, +// null, +// null +// ) +// +// // 从元数据信息中解析出列名 +// if (cursor.moveToFirst()) { +// val sql = cursor.getString(0) +// val startIndex = sql.indexOf("(") + 1 +// val endIndex = sql.lastIndexOf(")") +// val columnDefs = sql.substring(startIndex, endIndex).split(",") +// for (columnDef in columnDefs) { +// val columnName = columnDef.trim().split(" ")[0] +// if (!columnName.startsWith("rowid", true)) { // 排除 rowid 列 +// columns.add(columnName) +// } +// } +// } +// cursor.close() +// return columns +// } } \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt b/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt index 1888ebf4..fc383914 100644 --- a/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt +++ b/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt @@ -728,6 +728,7 @@ class ImportPreProcess { * 生成车道中心线面宽度 * */ fun generateAddWidthLine(renderEntity: RenderEntity) { + var newTime = 0L // 添加车道中心面渲染原则,根据车道宽度进行渲染 val angleReference = ReferenceEntity() // angleReference.renderEntityId = renderEntity.id @@ -952,11 +953,8 @@ class ImportPreProcess { private fun insertData(list: List) { realm?.let { - Log.e("qj", "子表插入==") if (list != null && list.isNotEmpty()) { - Log.e("qj", "子表插入开始==") it.copyToRealm(list) - Log.e("qj", "子表插入结束==") } } } diff --git a/app/src/main/java/com/navinfo/omqs/http/taskdownload/TaskDownloadScope.kt b/app/src/main/java/com/navinfo/omqs/http/taskdownload/TaskDownloadScope.kt index 38cf4f82..e93e47fa 100644 --- a/app/src/main/java/com/navinfo/omqs/http/taskdownload/TaskDownloadScope.kt +++ b/app/src/main/java/com/navinfo/omqs/http/taskdownload/TaskDownloadScope.kt @@ -155,21 +155,20 @@ class TaskDownloadScope( fileNew ) if (task != null) { - importOMDBHelper.importOmdbZipFile(importOMDBHelper.omdbFile, task).collect { - Log.e("jingo", "数据安装 $it") - if (it == "finish") { - change(FileDownloadStatus.DONE) - Log.e("jingo", "数据安装结束") - withContext(Dispatchers.Main) { - //任务与当前一致,需要更新渲染图层 - if (MapParamUtils.getTaskId() == taskBean.id) { - downloadManager.mapController.layerManagerHandler.updateOMDBVectorTileLayer() - } + if (importOMDBHelper.importOmdbZipFile(importOMDBHelper.omdbFile, task, this)) { +// if (it == "finish") { + change(FileDownloadStatus.DONE) + Log.e("jingo", "数据安装结束") + withContext(Dispatchers.Main) { + //任务与当前一致,需要更新渲染图层 + if (MapParamUtils.getTaskId() == taskBean.id) { + downloadManager.mapController.layerManagerHandler.updateOMDBVectorTileLayer() } - } else { - change(FileDownloadStatus.IMPORTING, it) } + } else { + change(FileDownloadStatus.IMPORTING, "anzhuang") } +// } } } catch (e: Exception) { Log.e("jingo", "数据安装失败 ${e.toString()}") diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterFragment.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterFragment.kt index d8c9f121..8de5a029 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterFragment.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterFragment.kt @@ -81,30 +81,30 @@ class PersonalCenterFragment(private var indoorDataListener: ((Boolean) -> Unit? R.id.personal_center_menu_offline_map -> findNavController().navigate(R.id.OfflineMapFragment) - R.id.personal_center_menu_obtain_data -> { // 生成数据,根据sqlite文件生成对应的zip文件 - fileChooser.openChooseFileDialog(object : FileChooserCallback() { - override fun onCancel(reason: String) { - } - - @RequiresApi(Build.VERSION_CODES.N) - override fun onResult(uri: Uri) { - val file = UriUtils.uri2File(uri) - // 开始导入数据 - // 656e6372797000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - CoroutineUtils.launchWithLoading( - requireContext(), - loadingMessage = "生成数据..." - ) { - val importOMDBHelper: ImportOMDBHelper = - importOMDBHiltFactory.obtainImportOMDBHelper( - requireContext(), - file - ) - viewModel.obtainOMDBZipData(importOMDBHelper) - } - } - }) - } +// R.id.personal_center_menu_obtain_data -> { // 生成数据,根据sqlite文件生成对应的zip文件 +// fileChooser.openChooseFileDialog(object : FileChooserCallback() { +// override fun onCancel(reason: String) { +// } +// +// @RequiresApi(Build.VERSION_CODES.N) +// override fun onResult(uri: Uri) { +// val file = UriUtils.uri2File(uri) +// // 开始导入数据 +// // 656e6372797000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +// CoroutineUtils.launchWithLoading( +// requireContext(), +// loadingMessage = "生成数据..." +// ) { +// val importOMDBHelper: ImportOMDBHelper = +// importOMDBHiltFactory.obtainImportOMDBHelper( +// requireContext(), +// file +// ) +// viewModel.obtainOMDBZipData(importOMDBHelper) +// } +// } +// }) +// } R.id.personal_center_menu_import_data -> { // 导入zip数据 fileChooser.openChooseFileDialog(object : FileChooserCallback() { diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterViewModel.kt index 1c8c0a26..8c247086 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterViewModel.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/personalcenter/PersonalCenterViewModel.kt @@ -1,17 +1,12 @@ package com.navinfo.omqs.ui.fragment.personalcenter import android.net.Uri -import android.os.Build import android.util.Log -import androidx.annotation.RequiresApi import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.blankj.utilcode.util.FileIOUtils import com.blankj.utilcode.util.UriUtils -import com.blankj.utilcode.util.ZipUtils -import com.google.gson.Gson -import com.navinfo.collect.library.data.entity.* +import com.navinfo.collect.library.data.entity.TaskBean import com.navinfo.omqs.bean.ScProblemTypeBean import com.navinfo.omqs.bean.ScRootCauseAnalysisBean import com.navinfo.omqs.bean.ScWarningCodeBean @@ -24,7 +19,6 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import org.apache.commons.io.input.BOMInputStream import java.io.* -import java.util.* import javax.inject.Inject @@ -37,119 +31,119 @@ class PersonalCenterViewModel @Inject constructor( val liveDataMessage = MutableLiveData() - /** - * 导入OMDB数据 - * */ - @RequiresApi(Build.VERSION_CODES.N) - suspend fun obtainOMDBZipData(importOMDBHelper: ImportOMDBHelper) { - Log.d("OMQSApplication", "开始生成数据") - val gson = Gson() - val hadLinkFile = File(importOMDBHelper.omdbFile.parentFile, "HAD_LINK.txt") - val hadLinkKindFile = File(importOMDBHelper.omdbFile.parentFile, "HAD_LINK_KIND.txt") - val hadLinkDirectFile = File(importOMDBHelper.omdbFile.parentFile, "HAD_LINK_DIRECT.txt") - val hadSpeedLimitFile = File(importOMDBHelper.omdbFile.parentFile, "HAD_SPEEDLIMIT.txt") - val hadSpeedLimitCondFile = - File(importOMDBHelper.omdbFile.parentFile, "HAD_SPEEDLIMIT_COND.txt") - val hadSpeedLimitVarFile = - File(importOMDBHelper.omdbFile.parentFile, "HAD_SPEEDLIMIT_VAR.txt") - - for (tableName in listOf( - "HAD_LINK", "HAD_SPEEDLIMIT", "HAD_SPEEDLIMIT_COND", "HAD_SPEEDLIMIT_VAR" - )/*listOf("HAD_LINK")*/) { - importOMDBHelper.getOMDBTableData(tableName).collect { - for (map in it) { - if ("HAD_LINK" == tableName) { - // 根据HAD_Link生成json文件 - val hadLink = HAD_LINK() - hadLink.LINK_PID = map["LINK_PID"].toString() - hadLink.MESH = map["MESH"].toString() - hadLink.S_NODE_PID = map["S_NODE_PID"].toString() - hadLink.E_NODE_PID = map["E_NODE_PID"].toString() - hadLink.GEOMETRY = map["GEOMETRY"].toString() - // 将该数据写入到对应的txt文件 - FileIOUtils.writeFileFromString( - hadLinkFile, gson.toJson(hadLink) + "\r", true - ) - - val hadLinkDirect = HAD_LINK_DIRECT() - hadLinkDirect.LINK_PID = map["LINK_PID"].toString() - hadLinkDirect.MESH = map["MESH"].toString() - hadLinkDirect.DIRECT = map["DIRECT"].toString().toInt() - hadLinkDirect.GEOMETRY = map["GEOMETRY"].toString() - // 将该数据写入到对应的txt文件 - FileIOUtils.writeFileFromString( - hadLinkDirectFile, gson.toJson(hadLinkDirect) + "\r", true - ) - - val hadLinkKind = HAD_LINK_KIND() - hadLinkKind.LINK_PID = map["LINK_PID"].toString() - hadLinkKind.MESH = map["MESH"].toString() - hadLinkKind.KIND = map["KIND"].toString().toInt() - hadLinkKind.GEOMETRY = map["GEOMETRY"].toString() - // 将该数据写入到对应的txt文件 - FileIOUtils.writeFileFromString( - hadLinkKindFile, gson.toJson(hadLinkKind) + "\r", true - ) - } else if ("HAD_SPEEDLIMIT" == tableName) { - val hadSpeedlimit = HAD_SPEEDLIMIT() - hadSpeedlimit.SPEED_ID = map["SPEED_ID"].toString() - hadSpeedlimit.MESH = map["MESH"].toString() - hadSpeedlimit.LINK_PID = map["LINK_PID"].toString() - hadSpeedlimit.GEOMETRY = map["GEOMETRY"].toString() - hadSpeedlimit.DIRECT = map["DIRECT"].toString().toInt() - hadSpeedlimit.SPEED_FLAG = map["SPEED_FLAG"].toString().toInt() - hadSpeedlimit.MAX_SPEED = map["MAX_SPEED"].toString().toInt() - hadSpeedlimit.MIN_SPEED = map["MIN_SPEED"].toString().toInt() - // 将该数据写入到对应的txt文件 - FileIOUtils.writeFileFromString( - hadSpeedLimitFile, gson.toJson(hadSpeedlimit) + "\r", true - ) - } else if ("HAD_SPEEDLIMIT_COND" == tableName) { - val hadSpeedlimitCond = HAD_SPEEDLIMIT_COND() - hadSpeedlimitCond.SPEED_COND_ID = map["SPEED_COND_ID"].toString() - hadSpeedlimitCond.MESH = map["MESH"].toString() - hadSpeedlimitCond.LINK_PID = map["LINK_PID"].toString() - hadSpeedlimitCond.GEOMETRY = map["GEOMETRY"].toString() - hadSpeedlimitCond.DIRECT = map["DIRECT"].toString().toInt() - hadSpeedlimitCond.SPEED_FLAG = map["SPEED_FLAG"].toString().toInt() - hadSpeedlimitCond.MAX_SPEED = map["MAX_SPEED"].toString().toInt() - hadSpeedlimitCond.SPEED_DEPENDENT = - map["SPEED_DEPENDENT"].toString().toInt() - hadSpeedlimitCond.VEHICLE_TYPE = map["VEHICLE_TYPE"].toString().toInt() - hadSpeedlimitCond.VALID_PERIOD = map["VALID_PERIOD"].toString() - // 将该数据写入到对应的txt文件 - FileIOUtils.writeFileFromString( - hadSpeedLimitCondFile, gson.toJson(hadSpeedlimitCond) + "\r", true - ) - } else if ("HAD_SPEEDLIMIT_VAR" == tableName) { - val hadSpeedlimitVar = HAD_SPEEDLIMIT_VAR() - hadSpeedlimitVar.SPEED_VAR_ID = map["SPEED_ID"].toString() - hadSpeedlimitVar.MESH = map["MESH"].toString() - hadSpeedlimitVar.LINK_PID = map["LINK_PID"].toString() - hadSpeedlimitVar.GEOMETRY = map["GEOMETRY"].toString() - hadSpeedlimitVar.DIRECT = map["DIRECT"].toString().toInt() - hadSpeedlimitVar.LOCATION = map["LOCATION"].toString() - // 将该数据写入到对应的txt文件 - FileIOUtils.writeFileFromString( - hadSpeedLimitVarFile, gson.toJson(hadSpeedlimitVar) + "\r", true - ) - } - } - } - } - ZipUtils.zipFiles( - mutableListOf( - hadLinkFile, - hadLinkKindFile, - hadLinkDirectFile, - hadSpeedLimitFile, - hadSpeedLimitCondFile, - hadSpeedLimitVarFile - ), File(importOMDBHelper.omdbFile.parentFile, "output.zip") - ) - - Log.d("OMQSApplication", "生成数据完成") - } +// /** +// * 导入OMDB数据 +// * */ +// @RequiresApi(Build.VERSION_CODES.N) +// suspend fun obtainOMDBZipData(importOMDBHelper: ImportOMDBHelper) { +// Log.d("OMQSApplication", "开始生成数据") +// val gson = Gson() +// val hadLinkFile = File(importOMDBHelper.omdbFile.parentFile, "HAD_LINK.txt") +// val hadLinkKindFile = File(importOMDBHelper.omdbFile.parentFile, "HAD_LINK_KIND.txt") +// val hadLinkDirectFile = File(importOMDBHelper.omdbFile.parentFile, "HAD_LINK_DIRECT.txt") +// val hadSpeedLimitFile = File(importOMDBHelper.omdbFile.parentFile, "HAD_SPEEDLIMIT.txt") +// val hadSpeedLimitCondFile = +// File(importOMDBHelper.omdbFile.parentFile, "HAD_SPEEDLIMIT_COND.txt") +// val hadSpeedLimitVarFile = +// File(importOMDBHelper.omdbFile.parentFile, "HAD_SPEEDLIMIT_VAR.txt") +// +// for (tableName in listOf( +// "HAD_LINK", "HAD_SPEEDLIMIT", "HAD_SPEEDLIMIT_COND", "HAD_SPEEDLIMIT_VAR" +// )/*listOf("HAD_LINK")*/) { +// importOMDBHelper.getOMDBTableData(tableName).collect { +// for (map in it) { +// if ("HAD_LINK" == tableName) { +// // 根据HAD_Link生成json文件 +// val hadLink = HAD_LINK() +// hadLink.LINK_PID = map["LINK_PID"].toString() +// hadLink.MESH = map["MESH"].toString() +// hadLink.S_NODE_PID = map["S_NODE_PID"].toString() +// hadLink.E_NODE_PID = map["E_NODE_PID"].toString() +// hadLink.GEOMETRY = map["GEOMETRY"].toString() +// // 将该数据写入到对应的txt文件 +// FileIOUtils.writeFileFromString( +// hadLinkFile, gson.toJson(hadLink) + "\r", true +// ) +// +// val hadLinkDirect = HAD_LINK_DIRECT() +// hadLinkDirect.LINK_PID = map["LINK_PID"].toString() +// hadLinkDirect.MESH = map["MESH"].toString() +// hadLinkDirect.DIRECT = map["DIRECT"].toString().toInt() +// hadLinkDirect.GEOMETRY = map["GEOMETRY"].toString() +// // 将该数据写入到对应的txt文件 +// FileIOUtils.writeFileFromString( +// hadLinkDirectFile, gson.toJson(hadLinkDirect) + "\r", true +// ) +// +// val hadLinkKind = HAD_LINK_KIND() +// hadLinkKind.LINK_PID = map["LINK_PID"].toString() +// hadLinkKind.MESH = map["MESH"].toString() +// hadLinkKind.KIND = map["KIND"].toString().toInt() +// hadLinkKind.GEOMETRY = map["GEOMETRY"].toString() +// // 将该数据写入到对应的txt文件 +// FileIOUtils.writeFileFromString( +// hadLinkKindFile, gson.toJson(hadLinkKind) + "\r", true +// ) +// } else if ("HAD_SPEEDLIMIT" == tableName) { +// val hadSpeedlimit = HAD_SPEEDLIMIT() +// hadSpeedlimit.SPEED_ID = map["SPEED_ID"].toString() +// hadSpeedlimit.MESH = map["MESH"].toString() +// hadSpeedlimit.LINK_PID = map["LINK_PID"].toString() +// hadSpeedlimit.GEOMETRY = map["GEOMETRY"].toString() +// hadSpeedlimit.DIRECT = map["DIRECT"].toString().toInt() +// hadSpeedlimit.SPEED_FLAG = map["SPEED_FLAG"].toString().toInt() +// hadSpeedlimit.MAX_SPEED = map["MAX_SPEED"].toString().toInt() +// hadSpeedlimit.MIN_SPEED = map["MIN_SPEED"].toString().toInt() +// // 将该数据写入到对应的txt文件 +// FileIOUtils.writeFileFromString( +// hadSpeedLimitFile, gson.toJson(hadSpeedlimit) + "\r", true +// ) +// } else if ("HAD_SPEEDLIMIT_COND" == tableName) { +// val hadSpeedlimitCond = HAD_SPEEDLIMIT_COND() +// hadSpeedlimitCond.SPEED_COND_ID = map["SPEED_COND_ID"].toString() +// hadSpeedlimitCond.MESH = map["MESH"].toString() +// hadSpeedlimitCond.LINK_PID = map["LINK_PID"].toString() +// hadSpeedlimitCond.GEOMETRY = map["GEOMETRY"].toString() +// hadSpeedlimitCond.DIRECT = map["DIRECT"].toString().toInt() +// hadSpeedlimitCond.SPEED_FLAG = map["SPEED_FLAG"].toString().toInt() +// hadSpeedlimitCond.MAX_SPEED = map["MAX_SPEED"].toString().toInt() +// hadSpeedlimitCond.SPEED_DEPENDENT = +// map["SPEED_DEPENDENT"].toString().toInt() +// hadSpeedlimitCond.VEHICLE_TYPE = map["VEHICLE_TYPE"].toString().toInt() +// hadSpeedlimitCond.VALID_PERIOD = map["VALID_PERIOD"].toString() +// // 将该数据写入到对应的txt文件 +// FileIOUtils.writeFileFromString( +// hadSpeedLimitCondFile, gson.toJson(hadSpeedlimitCond) + "\r", true +// ) +// } else if ("HAD_SPEEDLIMIT_VAR" == tableName) { +// val hadSpeedlimitVar = HAD_SPEEDLIMIT_VAR() +// hadSpeedlimitVar.SPEED_VAR_ID = map["SPEED_ID"].toString() +// hadSpeedlimitVar.MESH = map["MESH"].toString() +// hadSpeedlimitVar.LINK_PID = map["LINK_PID"].toString() +// hadSpeedlimitVar.GEOMETRY = map["GEOMETRY"].toString() +// hadSpeedlimitVar.DIRECT = map["DIRECT"].toString().toInt() +// hadSpeedlimitVar.LOCATION = map["LOCATION"].toString() +// // 将该数据写入到对应的txt文件 +// FileIOUtils.writeFileFromString( +// hadSpeedLimitVarFile, gson.toJson(hadSpeedlimitVar) + "\r", true +// ) +// } +// } +// } +// } +// ZipUtils.zipFiles( +// mutableListOf( +// hadLinkFile, +// hadLinkKindFile, +// hadLinkDirectFile, +// hadSpeedLimitFile, +// hadSpeedLimitCondFile, +// hadSpeedLimitVarFile +// ), File(importOMDBHelper.omdbFile.parentFile, "output.zip") +// ) +// +// Log.d("OMQSApplication", "生成数据完成") +// } /** * 导入OMDB数据 @@ -158,15 +152,12 @@ class PersonalCenterViewModel @Inject constructor( viewModelScope.launch(Dispatchers.IO) { Log.d("OMQSApplication", "开始导入数据") if (task != null) { - importOMDBHelper.importOmdbZipFile(importOMDBHelper.omdbFile, task).collect { - Log.d("importOMDBData", it) - } + importOMDBHelper.importOmdbZipFile(importOMDBHelper.omdbFile, task, this) } else { val newTask = TaskBean() newTask.id = -1 - importOMDBHelper.importOmdbZipFile(importOMDBHelper.omdbFile, newTask).collect { - Log.d("importOMDBData", it) - } + importOMDBHelper.importOmdbZipFile(importOMDBHelper.omdbFile, newTask, this) + } Log.d("OMQSApplication", "导入数据完成") } diff --git a/app/src/main/java/com/navinfo/omqs/util/CMLog.java b/app/src/main/java/com/navinfo/omqs/util/CMLog.java index 4dff58e0..6eb82f97 100644 --- a/app/src/main/java/com/navinfo/omqs/util/CMLog.java +++ b/app/src/main/java/com/navinfo/omqs/util/CMLog.java @@ -214,7 +214,7 @@ public class CMLog { if (!flag&&MYLOG_WRITE_TO_FILE) { flag = true; try { - Log.e("jingo", "日志写入0"); + Log.e("qj", "日志写入0"); // 新建或打开日志文件 Date nowtime = new Date(); String needWriteFiel = logfile.format(nowtime); @@ -232,11 +232,11 @@ public class CMLog { new File(Constant.USER_DATA_LOG_PATH).mkdirs(); } File file = new File(Constant.USER_DATA_LOG_PATH, needWriteFiel + MYLOGFILEName); - Log.e("jingo", "日志写入1"); + Log.e("qj", "日志写入1"); if (!file.exists()) file.createNewFile(); - Log.e("jingo", "日志写入2"); + Log.e("qj", "日志写入2"); FileWriter filerWriter = new FileWriter(file, true);//后面这个参数代表是不是要接上文件中原来的数据,不进行覆盖 BufferedWriter bufWriter = new BufferedWriter(filerWriter); @@ -244,7 +244,7 @@ public class CMLog { bufWriter.newLine(); bufWriter.close(); filerWriter.close(); - Log.e("jingo", "日志写入结束"); + Log.e("qj", "日志写入结束"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); diff --git a/app/src/main/java/com/navinfo/omqs/util/NaviEngineNew.kt b/app/src/main/java/com/navinfo/omqs/util/NaviEngineNew.kt index 82363d40..84edd079 100644 --- a/app/src/main/java/com/navinfo/omqs/util/NaviEngineNew.kt +++ b/app/src/main/java/com/navinfo/omqs/util/NaviEngineNew.kt @@ -1,20 +1,14 @@ package com.navinfo.omqs.util -import android.os.Build -import android.util.Log -import androidx.annotation.RequiresApi import com.navinfo.collect.library.data.entity.HadLinkDvoBean import com.navinfo.collect.library.data.entity.NiLocation import com.navinfo.collect.library.data.entity.RenderEntity import com.navinfo.collect.library.data.entity.TaskBean import com.navinfo.collect.library.enums.DataCodeEnum -import com.navinfo.collect.library.utils.FootAndDistance import com.navinfo.collect.library.utils.GeometryTools import com.navinfo.omqs.db.RealmOperateHelper import io.realm.Realm import org.oscim.core.GeoPoint -import java.time.LocalDate -import java.time.LocalDateTime class NaviEngineNew( private val realmOperateHelper: RealmOperateHelper, @@ -38,7 +32,6 @@ class NaviEngineNew( geoPoint: GeoPoint, realm:Realm ) { -// val geoPoint = GeoPoint(niLocation.latitude, niLocation.longitude) var latestRoute: HadLinkDvoBean? = null var lastDis = -1.0 diff --git a/collect-library/src/main/java/com/navinfo/collect/library/utils/GeometryToolsKt.kt b/collect-library/src/main/java/com/navinfo/collect/library/utils/GeometryToolsKt.kt index b626079c..f108e2c4 100644 --- a/collect-library/src/main/java/com/navinfo/collect/library/utils/GeometryToolsKt.kt +++ b/collect-library/src/main/java/com/navinfo/collect/library/utils/GeometryToolsKt.kt @@ -49,7 +49,6 @@ class GeometryToolsKt { } } } - println("YGeometry-time:" + (System.currentTimeMillis() - startTime)) } /** @@ -93,7 +92,6 @@ class GeometryToolsKt { } } } - println("XGeometry-time:" + (System.currentTimeMillis() - startTime)) } fun getMasterPoint(wkt: String): String { diff --git a/vtm b/vtm index 9e0cc6dc..c046e788 160000 --- a/vtm +++ b/vtm @@ -1 +1 @@ -Subproject commit 9e0cc6dcdce04d1082ed6459e8810d6329e8cfdc +Subproject commit c046e788f5c739612a31c308639fca2de639669a