优化数据安装效率,更换第三方库
This commit is contained in:
parent
584eea6928
commit
0f97c08b44
@ -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,
|
||||
|
@ -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<Map<String, Any>>(
|
||||
line, object : TypeToken<Map<String, Any>>() {}.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) {
|
||||
|
@ -242,8 +242,9 @@ class ImportPreProcess {
|
||||
startEndReference.properties["type"] = "s_2_e"
|
||||
val listResult = mutableListOf<ReferenceEntity>()
|
||||
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<ReferenceEntity>()
|
||||
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<RealmModel>) {
|
||||
|
@ -854,7 +854,7 @@ class MainViewModel @Inject constructor(
|
||||
*/
|
||||
private suspend fun captureLink(point: GeoPoint) {
|
||||
|
||||
if (captureLinkState) {
|
||||
if (captureLinkState||Constant.INSTALL_DATA) {
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -108,6 +108,7 @@ open class RenderEntity() : RealmObject(), Parcelable {
|
||||
@Index
|
||||
var linkPid: String = "" // RenderEntity关联的linkPid集合(可能会关联多个)
|
||||
var linkRelation: LinkRelation? = null
|
||||
var referenceEntitys: RealmSet<ReferenceEntity>? = RealmSet()//
|
||||
|
||||
constructor(name: String) : this() {
|
||||
this.name = name
|
||||
|
@ -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++) {
|
||||
|
@ -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){
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user