From 00515cfe3774db2f16ddd84c9ba4dc2d38cb401c Mon Sep 17 00:00:00 2001 From: xiaoyan Date: Thu, 19 Oct 2023 16:30:38 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=E5=BC=95=E5=85=A5=E9=80=9A?= =?UTF-8?q?=E8=A1=8C=E8=BD=A6=E8=BE=86=E7=B1=BB=E5=9E=8BLane=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E6=95=B0=E6=8D=AE=EF=BC=8C=E5=A2=9E=E5=8A=A0=E5=AF=B9?= =?UTF-8?q?=E5=BA=94=E6=B8=B2=E6=9F=93=E5=8E=9F=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/assets/omdb_config.json | 18 +++++++++ .../com/navinfo/omqs/db/ImportOMDBHelper.kt | 6 +-- .../com/navinfo/omqs/db/ImportPreProcess.kt | 37 +++++++++++++++++++ .../personalcenter/PersonalCenterFragment.kt | 2 +- .../src/main/assets/editormarker.xml | 5 +++ 5 files changed, 64 insertions(+), 4 deletions(-) diff --git a/app/src/main/assets/omdb_config.json b/app/src/main/assets/omdb_config.json index 1adbb1ba..472d2651 100644 --- a/app/src/main/assets/omdb_config.json +++ b/app/src/main/assets/omdb_config.json @@ -182,6 +182,24 @@ } ] }, + "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, 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 24cc8c0f..8d871e61 100644 --- a/app/src/main/java/com/navinfo/omqs/db/ImportOMDBHelper.kt +++ b/app/src/main/java/com/navinfo/omqs/db/ImportOMDBHelper.kt @@ -752,9 +752,9 @@ class ImportOMDBHelper @AssistedInject constructor( Realm.getInstance(currentInstallTaskConfig) .insert(renderEntity) Log.d("ImportOMDBHelper", "解析===2insert") - } - if (currentConfig.code == DataCodeEnum.OMDB_RD_LINK.code.toInt()) { - listResult.add(renderEntity) + if (currentConfig.code == DataCodeEnum.OMDB_RD_LINK.code.toInt()) { + listResult.add(renderEntity) + } } } } 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 438319c8..e26e2f2e 100644 --- a/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt +++ b/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt @@ -895,4 +895,41 @@ class ImportPreProcess { renderEntity.geometry = GeometryTools.createGeometry(GeoPoint(centerPoint!!.y, centerPoint.x)).toString() } } + + /** + * 生成通行车辆类型Lane的渲染名称字段 + * */ + fun generateLaneAccessType(renderEntity: RenderEntity): Boolean { + if (renderEntity.properties.containsKey("accessCharacteristic")) { + // 解析accessCharacteristic,判断是否存在指定属性 + val accessCharacteristic = renderEntity.properties["accessCharacteristic"].toString().toInt() + var str = "" + if (accessCharacteristic.and(4)>0) { + str += "公" + } + if (accessCharacteristic.and(8)>0) { + if (str.isNotEmpty()) { + str += "|" + } + str += "多" + } + if (accessCharacteristic.and(64)>0) { + if (str.isNotEmpty()) { + str += "|" + } + str += "行" + } + if (accessCharacteristic.and(128)>0) { + if (str.isNotEmpty()) { + str += "|" + } + str += "自" + } + if (str.isNotEmpty()) { + renderEntity.properties["name"] = str + return true + } + } + return false + } } \ No newline at end of file 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 ddf80f33..f5f262c8 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 @@ -182,7 +182,7 @@ class PersonalCenterFragment(private var indoorDataListener: ((Boolean) -> Unit? // 定位到指定位置 niMapController.mMapView.vtmMap.animator() // .animateTo(GeoPoint( 40.05108004733645, 116.29187746293708 )) - .animateTo(GeoPoint(40.0882756, 116.3033581)) + .animateTo(GeoPoint(39.617824808620675, 115.52374142452308)) } R.id.personal_center_menu_open_all_layer -> { diff --git a/collect-library/src/main/assets/editormarker.xml b/collect-library/src/main/assets/editormarker.xml index 47974f40..5ab044da 100644 --- a/collect-library/src/main/assets/editormarker.xml +++ b/collect-library/src/main/assets/editormarker.xml @@ -2029,6 +2029,11 @@ + + + + + From 8c49ac7bc8a7dadf999d9d487583d16a1d7180a7 Mon Sep 17 00:00:00 2001 From: xiaoyan Date: Tue, 24 Oct 2023 11:03:57 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=BD=A6=E9=81=93?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E3=80=81=E8=BD=A6=E9=81=93=E7=82=B9=E9=99=90?= =?UTF-8?q?=E9=80=9F=E6=B8=B2=E6=9F=93=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/assets/omdb_config.json | 33 ++++++++++ .../com/navinfo/omqs/db/ImportOMDBHelper.kt | 3 +- .../com/navinfo/omqs/db/ImportPreProcess.kt | 65 ++++++++++++++++++- .../personalcenter/PersonalCenterFragment.kt | 2 +- .../src/main/assets/editormarker.xml | 22 +++++++ .../src/main/assets/omdb/icon_2092_e.svg | 1 + .../src/main/assets/omdb/icon_2092_s.svg | 1 + .../src/main/assets/omdb/icon_4005.svg | 1 + 8 files changed, 125 insertions(+), 3 deletions(-) create mode 100644 collect-library/src/main/assets/omdb/icon_2092_e.svg create mode 100644 collect-library/src/main/assets/omdb/icon_2092_s.svg create mode 100644 collect-library/src/main/assets/omdb/icon_4005.svg diff --git a/app/src/main/assets/omdb_config.json b/app/src/main/assets/omdb_config.json index 472d2651..c09975d4 100644 --- a/app/src/main/assets/omdb_config.json +++ b/app/src/main/assets/omdb_config.json @@ -149,6 +149,22 @@ "zoomMin": 18, "zoomMax": 20 }, + "2092":{ + "table": "OMDB_LANE_TYPE_ACCESS", + "code": 2092, + "name": "车道类型", + "catch":true, + "zoomMin": 18, + "zoomMax": 20, + "transformer": [ + { + "k": "geometry", + "v": "~", + "klib": "geometry", + "vlib": "generateLaneTypeAccessS2ERefPoint()" + } + ] + }, "2201":{ "table": "OMDB_BRIDGE", "code": 2201, @@ -408,6 +424,23 @@ } ] }, + "4005": { + "table": "OMDB_LANE_SPEEDLIMIT", + "code": 4005, + "name": "车道点限速", + "zoomMin": 18, + "zoomMax": 20, + "filterData": true, + "catch": true, + "transformer": [ + { + "k": "geometry", + "v": "~", + "klib": "geometry", + "vlib": "obtainLaneSpeedLimitName()" + } + ] + }, "4006": { "table": "OMDB_RESTRICTION", "code": 4006, 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 8d871e61..50370fae 100644 --- a/app/src/main/java/com/navinfo/omqs/db/ImportOMDBHelper.kt +++ b/app/src/main/java/com/navinfo/omqs/db/ImportOMDBHelper.kt @@ -236,7 +236,7 @@ class ImportOMDBHelper @AssistedInject constructor( } elementIndex += 1 dataIndex += 1 - Log.d("ImportOMDBHelper", "解析第:${index + 1}行") + Log.d("ImportOMDBHelper", "解析第:${index + 1}行---${txtFile?.name}") val map = gson.fromJson>( line, object : TypeToken>() {}.getType() @@ -799,6 +799,7 @@ class ImportOMDBHelper @AssistedInject constructor( if (Realm.getInstance(currentInstallTaskConfig).isInTransaction) { Realm.getInstance(currentInstallTaskConfig).cancelTransaction() } + Log.e("ImportOMDBHelper", "安装失败", e) throw e } emit("finish") 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 e26e2f2e..78dd5815 100644 --- a/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt +++ b/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt @@ -20,6 +20,7 @@ class ImportPreProcess { lateinit var cacheRdLink: Map val defaultTranslateDistance = 3.0 val testFlag: Boolean = false + var realm:Realm? = null fun checkCircleRoad(renderEntity: RenderEntity): Boolean { val linkInId = renderEntity.properties["linkIn"] val linkOutId = renderEntity.properties["linkOut"] @@ -223,6 +224,59 @@ class ImportPreProcess { insertData(listResult) } + /** + * 生成车道类型起终点参考数据 + * */ + fun generateLaneTypeAccessS2ERefPoint(renderEntity: RenderEntity) { + // 如果车道类型非常规车道(第0bit的数据),则需要生成辅助数据 + if (renderEntity.properties["laneType"]!!.toInt()>0) { + val geometry = GeometryTools.createGeometry(renderEntity.properties["geometry"]) + + val pointEnd = geometry!!.coordinates[geometry.numPoints - 1] // 获取这个geometry对应的结束点坐标 + val pointStart = geometry!!.coordinates[0] // 获取这个geometry对应的起点 + val listResult = mutableListOf() + + // 将这个起终点的线记录在数据中 + val startReference = ReferenceEntity() + startReference.renderEntityId = renderEntity.id + startReference.name = "${renderEntity.name}参考点" + startReference.code = renderEntity.code + startReference.table = renderEntity.table + startReference.zoomMin = renderEntity.zoomMin + startReference.zoomMax = renderEntity.zoomMax + startReference.taskId = renderEntity.taskId + startReference.enable = renderEntity.enable + + // 起点坐标 + startReference.geometry = + GeometryTools.createGeometry(GeoPoint(pointStart.y, pointStart.x)).toString() + startReference.properties["qi_table"] = renderEntity.table + startReference.properties["type"] = "s_2_p" + startReference.properties["geometry"] = startReference.geometry + listResult.add(startReference) + + val endReference = ReferenceEntity() + endReference.renderEntityId = renderEntity.id + endReference.name = "${renderEntity.name}参考点" + endReference.code = renderEntity.code + endReference.table = renderEntity.table + endReference.zoomMin = renderEntity.zoomMin + endReference.zoomMax = renderEntity.zoomMax + endReference.taskId = renderEntity.taskId + endReference.enable = renderEntity.enable + + // 终点坐标 + endReference.geometry = + GeometryTools.createGeometry(GeoPoint(pointEnd.y, pointEnd.x)).toString() + endReference.properties["qi_table"] = renderEntity.table + endReference.properties["type"] = "e_2_p" + endReference.properties["geometry"] = endReference.geometry + + listResult.add(endReference) + insertData(listResult) + } + } + fun generateS2EReferencePoint( renderEntity: RenderEntity, proKey: String = "", @@ -562,7 +616,7 @@ class ImportPreProcess { } // 获取最小的shape值,将其记录增加记录在properties的name属性下 if (shape != null) { - renderEntity.properties["name"] = shape["name"].toString() + renderEntity.properties["name"] = shape.optString("name", "") } else { renderEntity.properties["name"] = "" } @@ -932,4 +986,13 @@ class ImportPreProcess { } return false } + + /** + * 生成车道点限速的名称 + * */ + fun obtainLaneSpeedLimitName(renderEntity: RenderEntity) { + if (renderEntity.properties.containsKey("maxSpeed")&&renderEntity.properties.containsKey("minSpeed")) { + renderEntity.properties["ref"] = "${renderEntity.properties["maxSpeed"]}|${renderEntity.properties["minSpeed"]}" + } + } } \ No newline at end of file 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 f5f262c8..f1167537 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 @@ -182,7 +182,7 @@ class PersonalCenterFragment(private var indoorDataListener: ((Boolean) -> Unit? // 定位到指定位置 niMapController.mMapView.vtmMap.animator() // .animateTo(GeoPoint( 40.05108004733645, 116.29187746293708 )) - .animateTo(GeoPoint(39.617824808620675, 115.52374142452308)) + .animateTo(GeoPoint(31.205913609396507, 121.56955739056055 )) } R.id.personal_center_menu_open_all_layer -> { diff --git a/collect-library/src/main/assets/editormarker.xml b/collect-library/src/main/assets/editormarker.xml index 5ab044da..6d6917a3 100644 --- a/collect-library/src/main/assets/editormarker.xml +++ b/collect-library/src/main/assets/editormarker.xml @@ -2056,5 +2056,27 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/icon_2092_e.svg b/collect-library/src/main/assets/omdb/icon_2092_e.svg new file mode 100644 index 00000000..96006c66 --- /dev/null +++ b/collect-library/src/main/assets/omdb/icon_2092_e.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/icon_2092_s.svg b/collect-library/src/main/assets/omdb/icon_2092_s.svg new file mode 100644 index 00000000..83a60267 --- /dev/null +++ b/collect-library/src/main/assets/omdb/icon_2092_s.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/collect-library/src/main/assets/omdb/icon_4005.svg b/collect-library/src/main/assets/omdb/icon_4005.svg new file mode 100644 index 00000000..f07e08a7 --- /dev/null +++ b/collect-library/src/main/assets/omdb/icon_4005.svg @@ -0,0 +1 @@ + \ No newline at end of file