feat: 交通标牌2D化渲染
This commit is contained in:
@@ -222,13 +222,7 @@
|
|||||||
"k": "geometry",
|
"k": "geometry",
|
||||||
"v": "~",
|
"v": "~",
|
||||||
"klib": "geometry",
|
"klib": "geometry",
|
||||||
"vlib": "obtainCenterPoint()"
|
"vlib": "obtainTrafficSignCenterPoint()"
|
||||||
},
|
|
||||||
{
|
|
||||||
"k": "geometry",
|
|
||||||
"v": "~",
|
|
||||||
"klib": "geometry",
|
|
||||||
"vlib": "generateDirectReferenceLine('', 0.2)"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -819,10 +819,36 @@ class ImportPreProcess {
|
|||||||
/**
|
/**
|
||||||
* 获取当前数据的中心点坐标
|
* 获取当前数据的中心点坐标
|
||||||
* */
|
* */
|
||||||
fun obtainCenterPoint(renderEntity: RenderEntity) {
|
fun obtainTrafficSignCenterPoint(renderEntity: RenderEntity) {
|
||||||
// 获取中心坐标点,将中心坐标作为数据的新的geometry位置
|
// 获取中心坐标点,将中心坐标作为数据的新的geometry位置
|
||||||
val centerPoint = renderEntity.wkt?.centroid
|
val centerPoint = renderEntity.wkt?.centroid
|
||||||
// 根据heading方向自动生成新的Geometry
|
// 根据heading方向自动生成新的Geometry
|
||||||
|
var radian = 0.0
|
||||||
|
val pointStart = Coordinate(centerPoint!!.x, centerPoint.y)
|
||||||
|
var angle =
|
||||||
|
if (renderEntity?.properties?.get("heading") == null) 0.0 else renderEntity?.properties?.get(
|
||||||
|
"heading"
|
||||||
|
)?.toDouble()!!
|
||||||
|
// angle角度为与正北方向的顺时针夹角,将其转换为与X轴正方向的逆时针夹角,即为正东方向的夹角
|
||||||
|
angle = ((450 - angle) % 360)
|
||||||
|
radian = Math.toRadians(angle)
|
||||||
|
|
||||||
|
// 计算偏移距离
|
||||||
|
var dx: Double = GeometryTools.convertDistanceToDegree(
|
||||||
|
defaultTranslateDistance,
|
||||||
|
centerPoint.y
|
||||||
|
) * Math.cos(radian)
|
||||||
|
var dy: Double = GeometryTools.convertDistanceToDegree(
|
||||||
|
defaultTranslateDistance,
|
||||||
|
centerPoint.y
|
||||||
|
) * Math.sin(radian)
|
||||||
|
val listResult = mutableListOf<ReferenceEntity>()
|
||||||
|
|
||||||
|
val coorEnd = Coordinate(pointStart.getX() + dx, pointStart.getY() + dy, pointStart.z)
|
||||||
|
renderEntity.geometry =
|
||||||
|
WKTWriter(3).write(GeometryTools.createLineString(arrayOf(pointStart, coorEnd)))
|
||||||
|
|
||||||
|
val code = renderEntity.properties["signType"]
|
||||||
|
renderEntity.properties["src"] = "assets:omdb/appendix/1105_${code}_0.svg"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1566,12 +1566,10 @@
|
|||||||
</m>
|
</m>
|
||||||
|
|
||||||
<!-- 交通标牌 -->
|
<!-- 交通标牌 -->
|
||||||
<!-- <m v="OMDB_TRAFFIC_SIGN">-->
|
<m v="OMDB_TRAFFIC_SIGN">
|
||||||
<!-- <area use="sign-bg" repeat="false" stroke="#ff0000" stroke-width="2"></area>-->
|
<symbol repeat="false" repeat-gap="2000" repeat-start="0" rotate="true"
|
||||||
<!-- <m k="type" v="angle">-->
|
src="@src" symbol-height="24" symbol-width="24" degree="-90"></symbol>
|
||||||
<!-- <line stroke="#00ff00" width="0.1"></line>-->
|
</m>
|
||||||
<!-- </m>-->
|
|
||||||
<!-- </m>-->
|
|
||||||
|
|
||||||
<m v="OMDB_AREA">
|
<m v="OMDB_AREA">
|
||||||
<!-- <area use="sign-bg" repeat="false" src="assets:omdb/veer_side_walk.jpg" stroke="#ff0000" stroke-width="2"></area>
|
<!-- <area use="sign-bg" repeat="false" src="assets:omdb/veer_side_walk.jpg" stroke="#ff0000" stroke-width="2"></area>
|
||||||
|
|||||||
Reference in New Issue
Block a user