diff --git a/app/src/main/assets/omdb_config.json b/app/src/main/assets/omdb_config.json index 20ecfd56..7d532f4a 100644 --- a/app/src/main/assets/omdb_config.json +++ b/app/src/main/assets/omdb_config.json @@ -150,7 +150,7 @@ "code": 2092, "name": "车道类型", "catch": true, - "isDependOnOtherTable": true, + "isDependOnOtherTable": false, "zoomMin": 18, "zoomMax": 20, "transformer": [ @@ -173,7 +173,7 @@ "name": "桥", "catch": true, "existSubCode": true, - "isDependOnOtherTable": true, + "isDependOnOtherTable": false, "zoomMin": 15, "zoomMax": 20, "transformer": [ @@ -350,7 +350,7 @@ "code": 4001, "name": "路口", "zoomMin": 15, - "isDependOnOtherTable": true, + "isDependOnOtherTable": false, "zoomMax": 17, "catch": true, "transformer": [ @@ -452,7 +452,7 @@ "zoomMin": 15, "zoomMax": 17, "filterData": true, - "isDependOnOtherTable": true, + "isDependOnOtherTable": false, "catch": true, "transformer": [ { @@ -492,7 +492,7 @@ "code": 4009, "name": "警示信息", "catch": true, - "isDependOnOtherTable": true, + "isDependOnOtherTable": false, "zoomMin": 15, "zoomMax": 20, "transformer": [ @@ -581,7 +581,7 @@ "code": 4601, "name": "车信", "catch": true, - "isDependOnOtherTable": true, + "isDependOnOtherTable": false, "zoomMin": 15, "zoomMax": 17, "transformer": [ @@ -610,7 +610,7 @@ "code": 5001, "name": "车道中心线", "catch": false, - "isDependOnOtherTable": true, + "isDependOnOtherTable": false, "checkLinkId": false, "zoomMin": 18, "zoomMax": 20, 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 003ea649..c2c556ab 100644 --- a/app/src/main/java/com/navinfo/omqs/db/ImportOMDBHelper.kt +++ b/app/src/main/java/com/navinfo/omqs/db/ImportOMDBHelper.kt @@ -247,11 +247,11 @@ class ImportOMDBHelper @AssistedInject constructor( CMLog.writeLogtoFile(ImportOMDBHelper::class.java.name, "数据安装", "安装结束") + Constant.INSTALL_DATA = false + } catch (e: Exception) { Log.e("jingo", "安装报错1 ${e.message}") return false - }finally { - Constant.INSTALL_DATA = false } return true } @@ -294,12 +294,15 @@ class ImportOMDBHelper @AssistedInject constructor( continue } newTime = System.currentTimeMillis() - Log.e( - "jingo", - "安装数据 ${currentConfig.table} $elementIndex ${listRenderEntity.size} ${newTime - time}" - ) + + if(elementIndex%50==0){ + Log.e("jingo", "安装数据 ${currentConfig.table} $elementIndex ${listRenderEntity.size} ${newTime - time}") + } + time = newTime + elementIndex += 1 + val map = gson.fromJson>( line, object : TypeToken>() {}.type ).toMutableMap() @@ -488,6 +491,8 @@ class ImportOMDBHelper @AssistedInject constructor( // 对renderEntity做预处理后再保存 val resultEntity = importConfig.transformProperties(renderEntity, realm) + + //车道中心线不在主表写入 if (resultEntity != null) { //对code编码需要特殊处理 存在多个属性值时,渲染优先级:SA>PA,存在多个属性值时,渲染优先级:FRONTAGE>MAIN_SIDE_A CCESS @@ -697,6 +702,7 @@ class ImportOMDBHelper @AssistedInject constructor( renderEntity.propertiesDb = DeflaterUtil.zipString(JSON.toJSONString(renderEntity.properties)) listRenderEntity.add(renderEntity) + } if (listRenderEntity.size > 20000) { 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 5ece1286..cb5b22c3 100644 --- a/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt +++ b/app/src/main/java/com/navinfo/omqs/db/ImportPreProcess.kt @@ -242,8 +242,9 @@ class ImportPreProcess { startEndReference.properties["type"] = "s_2_e" val listResult = mutableListOf() startEndReference.propertiesDb = DeflaterUtil.zipString(JSON.toJSONString(startEndReference.properties)) - listResult.add(startEndReference) - insertData(listResult) + renderEntity.referenceEntitys?.add(startEndReference) + //listResult.add(startEndReference) + //insertData(listResult) } /** @@ -292,9 +293,9 @@ class ImportPreProcess { endReference.properties["qi_table"] = renderEntity.table endReference.properties["type"] = "e_2_p" endReference.properties["geometry"] = endReference.geometry - - listResult.add(endReference) - insertData(listResult) + renderEntity.referenceEntitys?.add(endReference) + //listResult.add(endReference) + //insertData(listResult) } } @@ -379,9 +380,10 @@ class ImportPreProcess { } endReference.properties["geometry"] = endReference.geometry endReference.propertiesDb = DeflaterUtil.zipString(JSON.toJSONString(endReference.properties)) - listResult.add(endReference) + renderEntity.referenceEntitys?.add(endReference) + //listResult.add(endReference) Log.e("qj", "generateS2EReferencePoint===4") - insertData(listResult) + //insertData(listResult) } /** @@ -477,9 +479,10 @@ class ImportPreProcess { angleReference.properties["qi_table"] = renderEntity.table angleReference.properties["type"] = "angle" angleReference.propertiesDb = DeflaterUtil.zipString(JSON.toJSONString(angleReference.properties)) - listResult.add(angleReference) + renderEntity.referenceEntitys?.add(angleReference) + //listResult.add(angleReference) } - insertData(listResult) + //insertData(listResult) } fun addAngleFromGeometry(renderEntity: RenderEntity): String { @@ -634,9 +637,10 @@ class ImportPreProcess { "assets:omdb/4601/${type}/1301_${referenceEntity.properties["currentDirect"]}.svg" Log.d("unpackingLaneInfo", referenceEntity.properties["symbol"].toString()) referenceEntity.propertiesDb = DeflaterUtil.zipString(JSON.toJSONString(referenceEntity.properties)) - listResult.add(referenceEntity) + renderEntity.referenceEntitys?.add(referenceEntity) + //listResult.add(referenceEntity) } - insertData(listResult) + //insertData(listResult) } } } @@ -744,8 +748,9 @@ class ImportPreProcess { angleReference.enable = renderEntity.enable val listResult = mutableListOf() angleReference.propertiesDb = DeflaterUtil.zipString(JSON.toJSONString(angleReference.properties)) - listResult.add(angleReference) - insertData(listResult) + renderEntity.referenceEntitys?.add(angleReference) + //listResult.add(angleReference) + //insertData(listResult) } @@ -775,9 +780,10 @@ class ImportPreProcess { intersectionReference.properties["qi_table"] = renderEntity.table intersectionReference.properties["type"] = "node" intersectionReference.propertiesDb = DeflaterUtil.zipString(JSON.toJSONString(intersectionReference.properties)) - listResult.add(intersectionReference) + renderEntity.referenceEntitys?.add(intersectionReference) + //listResult.add(intersectionReference) } - insertData(listResult) + //insertData(listResult) } } @@ -944,9 +950,10 @@ class ImportPreProcess { val code = renderEntity.properties[codeName] dynamicSrcReference.properties["src"] = "${prefix}${code}${suffix}" dynamicSrcReference.propertiesDb = DeflaterUtil.zipString(JSON.toJSONString(dynamicSrcReference.properties)) - listResult.add(dynamicSrcReference) + renderEntity.referenceEntitys?.add(dynamicSrcReference) + //listResult.add(dynamicSrcReference) } - insertData(listResult) + //insertData(listResult) } private fun insertData(list: List) { diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt index e7b7b478..2454546b 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt @@ -854,7 +854,7 @@ class MainViewModel @Inject constructor( */ private suspend fun captureLink(point: GeoPoint) { - if (captureLinkState) { + if (captureLinkState||Constant.INSTALL_DATA) { return } diff --git a/collect-library/src/main/java/com/navinfo/collect/library/data/entity/RenderEntity.kt b/collect-library/src/main/java/com/navinfo/collect/library/data/entity/RenderEntity.kt index 75516708..44a5940e 100644 --- a/collect-library/src/main/java/com/navinfo/collect/library/data/entity/RenderEntity.kt +++ b/collect-library/src/main/java/com/navinfo/collect/library/data/entity/RenderEntity.kt @@ -108,6 +108,7 @@ open class RenderEntity() : RealmObject(), Parcelable { @Index var linkPid: String = "" // RenderEntity关联的linkPid集合(可能会关联多个) var linkRelation: LinkRelation? = null + var referenceEntitys: RealmSet? = RealmSet()// constructor(name: String) : this() { this.name = name diff --git a/collect-library/src/main/java/com/navinfo/collect/library/map/source/OMDBDataDecoder.java b/collect-library/src/main/java/com/navinfo/collect/library/map/source/OMDBDataDecoder.java index 7c0b4d75..95b92fc2 100644 --- a/collect-library/src/main/java/com/navinfo/collect/library/map/source/OMDBDataDecoder.java +++ b/collect-library/src/main/java/com/navinfo/collect/library/map/source/OMDBDataDecoder.java @@ -4,10 +4,13 @@ import static org.oscim.core.MercatorProjection.latitudeToY; import static org.oscim.core.MercatorProjection.longitudeToX; import android.os.Build; +import android.util.Log; import androidx.annotation.RequiresApi; import com.navinfo.collect.library.data.entity.RenderEntity; +import com.navinfo.collect.library.enums.DataCodeEnum; +import com.navinfo.collect.library.utils.GeometryTools; import org.locationtech.jts.geom.Coordinate; import org.locationtech.jts.geom.Geometry; @@ -103,7 +106,14 @@ public class OMDBDataDecoder extends TileDecoder { processCoordinateArray(multiPoint.getGeometryN(i).getCoordinates(), false); } } else if (geometry instanceof LineString) { - processLineString((LineString) geometry); + //将车道中心进行转化面渲染 + if(layerName!=null&&layerName.equals(DataCodeEnum.OMDB_LANE_LINK_LG.name())){ + Log.e("qj","车道中心线转化开始"); + processPolygon((Polygon) GeometryTools.createGeometry(GeometryTools.computeLine(0.000035,0.000035,geometry.toString()))); + Log.e("qj","车道中心线转化结束"); + }else{ + processLineString((LineString) geometry); + } } else if (geometry instanceof MultiLineString) { MultiLineString multiLineString = (MultiLineString) geometry; for (int i = 0; i < multiLineString.getNumGeometries(); i++) { diff --git a/collect-library/src/main/java/com/navinfo/collect/library/utils/DeflaterUtil.java b/collect-library/src/main/java/com/navinfo/collect/library/utils/DeflaterUtil.java index eebbc008..b5d17cf7 100644 --- a/collect-library/src/main/java/com/navinfo/collect/library/utils/DeflaterUtil.java +++ b/collect-library/src/main/java/com/navinfo/collect/library/utils/DeflaterUtil.java @@ -71,25 +71,35 @@ public class DeflaterUtil{ deflater.finish(); - final byte[] bytes = new byte[256]; + final byte[] bytes = new byte[512]; - ByteArrayOutputStream outputStream = new ByteArrayOutputStream(256); + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(512); - while (!deflater.finished()) { + try { - //压缩输入数据并用压缩数据填充指定的缓冲区。 + while (!deflater.finished()) { - int length = deflater.deflate(bytes); + //压缩输入数据并用压缩数据填充指定的缓冲区。 - outputStream.write(bytes, 0, length); + int length = deflater.deflate(bytes); + outputStream.write(bytes, 0, length); + + } + + deflater.end(); + + return Base64.encodeBase64String(outputStream.toByteArray()); + + }catch (Exception e){ + return null; + }finally { + try { + outputStream.close(); + }catch (Exception e){ + + } } - - deflater.end(); - - return Base64.encodeBase64String(outputStream.toByteArray()); - - } /** @@ -108,9 +118,9 @@ public class DeflaterUtil{ inflater.setInput(decode); - final byte[] bytes = new byte[256]; + final byte[] bytes = new byte[512]; - ByteArrayOutputStream outputStream = new ByteArrayOutputStream(256); + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(512); try { @@ -150,6 +160,12 @@ public class DeflaterUtil{ return null; + }finally { + try { + outputStream.close(); + }catch (Exception e){ + + } } }