本发明涉及一种基于dwg文件快速生成二维电子地图的方法,特别是涉及一种适用于电子技术领域的基于dwg文件快速生成二维电子地图的方法。
背景技术:
随着计算机技术的发展,二维电子地图在各行各业的应用越来越广泛。针对于不同的应用场景,对二维电子地图的显示内容有着不同的要求。对于建筑区域,业界通用的二维电子地图生成方式一般是在实地测量的基础上,采用地图制作工具人工制作。这种方式的缺点有以下两个:一是耗时耗力,场地越复杂,所要的人力时间越多;二是对场地有要求,对于一些保密区域和单位而言在实地测量上存在诸多限制,导致无法用该方法进行实地测量。现在虽然有一些技术可以借助无人机航拍完成数据采集节省人力,但是对上述第二个缺点也没有改善,除此还带来一个新问题:无人机航拍无法避免车辆、行人等随机因素,为后续的数据提取增加了难度。
技术实现要素:
本发明要解决的技术问题是提供一种针对建筑区域解决电子地图数据采集难,制作周期长的问题的基于dwg文件的快速生成二维电子地图的方法。
本发明采用的技术方案如下:一种基于dwg文件快速生成二维电子地图的方法,具体方法为:将dwg文件转换为基于svg格式的通用文件;将转换后的svg文件加载进计算机内存中;根据加载进计算机内存中的svg文件绘制二维电子地图;所述dwg文件为建筑施工用图,在其中详细记载了建筑群的形状和方位信息。
针对于建筑区域解决电子地图数据采集难,制作周期长的问题,达到了快速、准确的完成电子地图显示的目的;二维电子地图的显示速度快、效率高;没有场地限制,没有随机因素干扰。
所述方法还包括,处理用户对所述二维电子地图的拖拽、缩放和旋转的操作。
采用Arc Gis软件将dwg文件转换为基于svg格式的通用文件,将dwg文件在Arc Gis软件中打开,另存为svg格式,其中path中详细记录了地图中每条路径的定位点。充分利用已有的数据资源,避免在数据采集和生成二维电子地图数据上的人力物力的浪费。
按照xml格式对svg文件进行读取, svg格式文件在内存中存储的数据结构如下:
struct SvgFile
{
size graphSize; //图纸长宽
int pathCount; //路径数
struct Path
{
long lineColor; //线色
bool isClose; //路径是否闭合
long fillColor; //填充色
int dotNum; //路径定位点个数
vector<position> dotSet; //路径定位点集合
};
vector<Path> pathSet; //路径集合
};
根据加载进计算机内存中的svg文件绘制二维电子地图的具体方法为:采用openGL对地图进行标绘,具体方法步骤为:
S101、获取svg格式文件中的每一条路径信息;
S102、判断路径是否闭合,如果路径闭合,则调用openGL绘制多边形方法对路径进行绘制,并按照路径描述中的填充色进行填充;如果路径不闭合,则按照路径描述中的线色调用openGL绘制线段的方法对路径进行绘制;
S103、重复S101和S102,直至处理完所有路径。
处理用户对所述二维电子地图的拖拽的操作方法为:根据用户的拖拽操作对地图进行位移,具体方法步骤为:
S201、用户拖拽地图之前获取拖拽点屏幕坐标m1;
S202、用户拖拽地图之后获取拖拽点屏幕坐标m2;
S203、使用m1-m2获取位移矢量v1;
S204、对于地图图层进行移动,位移矢量为v1。
处理用户对所述二维电子地图的缩放的操作方法为:根据用户的缩放操作对地图进行位移,具体方法步骤为:
S301、用户缩放地图前获取地图图层的显示比例s1;
S302、用户采用两触控点方式进行缩放操作,缩放前获取用户触控点屏幕坐标t1和t2,计算出两触控点之间的距离d1;
S303、用户在屏幕上滑动两触控点后,再次获取用户触控点屏幕坐标t3和t4,计算出两触控点之间的距离d2;
S304、计算新的地图图层的显示比例s2=d2/d1*s1,设置地图图层的显示比例为s2。
处理用户对所述二维电子地图的旋转的操作方法为:根据用户的旋转操作对地图进行位移,具体方法步骤为:
S401、用户旋转地图前获取地图图层相对于正北方向的转角a0;
S402、用户采用两触控点方式进行旋转操作,旋转前获取用户触控点屏幕坐标b1和b2,计算两触控点的中点c0,计算两触控点的连线相对于正北方向的夹角r0;
S403、用户在屏幕上滑动两触控点后,再次获取用户触控点屏幕坐标e1和e2,计算两触控点的中点c1,计算两触控点的连线相对于正北方向的夹角r1;
S404、计算两触控点中点c0到c1的位移矢量v2,对于地图图层进行移动,位移矢量为v2;
S405、计算地图新的转角a1=a0+(r1-r0),设置地图图层的旋转角为a1。
与现有技术相比,本发明的有益效果是:针对于建筑区域解决电子地图数据采集难,制作周期长的问题,达到了快速、准确的完成电子地图显示的目的;充分利用已有的数据资源,避免在数据采集和生成二维电子地图数据上的人力物力的浪费;二维电子地图的显示速度快、效率高;没有场地限制,没有随机因素干扰。
附图说明
图1为本发明其中一实施例的基于dwg文件快速生成二维电子地图流程图。
图2为本发明其中一实施例的svg文件格式图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本说明书(包括摘要和附图)中公开的任一特征,除非特别叙述,均可被其他等效或者具有类似目的的替代特征加以替换。即,除非特别叙述,每个特征只是一系列等效或类似特征中的一个例子而已。
具体实施例1
如图1所示,一种基于dwg文件快速生成二维电子地图的方法,具体方法为:将dwg文件转换为基于svg格式的通用文件;将转换后的svg文件加载进计算机内存中;根据加载进计算机内存中的svg文件绘制二维电子地图;所述dwg文件为建筑施工用图,在其中详细记载了建筑群的形状和方位信息。
具体实施例2
在具体实施例1的基础上,所述方法还包括,处理用户对所述二维电子地图的拖拽、缩放和旋转的操作。
具体实施例3
在具体实施例1或2的基础上,采用Arc Gis软件将dwg文件转换为基于svg格式的通用文件,将dwg文件在Arc Gis软件中打开,另存为svg格式,svg文件的格式如图2所示,其中path中详细记录了地图中每条路径的定位点。
具体实施例4
在具体实施例1到3之一的基础上,根据加载进计算机内存中的svg文件绘制二维电子地图的具体方法为:采用openGL对地图进行标绘,具体方法步骤为:
S101、获取svg格式文件中的每一条路径信息;
S102、判断路径是否闭合,如果路径闭合,则调用openGL绘制多边形方法对路径进行绘制,并按照路径描述中的填充色进行填充;如果路径不闭合,则按照路径描述中的线色调用openGL绘制线段的方法对路径进行绘制;
S103、重复S101和S102,直至处理完所有路径。
具体实施例5
在具体实施例1到4之一的基础上,处理用户对所述二维电子地图的拖拽的操作方法为:根据用户的拖拽操作对地图进行位移,具体方法步骤为:
S201、用户拖拽地图之前获取拖拽点屏幕坐标m1;
S202、用户拖拽地图之后获取拖拽点屏幕坐标m2;
S203、使用m1-m2获取位移矢量v1;
S204、对于地图图层进行移动,位移矢量为v1。
具体实施例6
在具体实施例1到5之一的基础上,处理用户对所述二维电子地图的缩放的操作方法为:根据用户的缩放操作对地图进行位移,具体方法步骤为:
S301、用户缩放地图前获取地图图层的显示比例s1;
S302、用户采用两触控点方式进行缩放操作,缩放前获取用户触控点屏幕坐标t1和t2,计算出两触控点之间的距离d1;
S303、用户在屏幕上滑动两触控点后,再次获取用户触控点屏幕坐标t3和t4,计算出两触控点之间的距离d2;
S304、计算新的地图图层的显示比例s2=d2/d1*s1,设置地图图层的显示比例为s2。
具体实施例7
在具体实施例1到6之一的基础上,处理用户对所述二维电子地图的旋转的操作方法为:根据用户的旋转操作对地图进行位移,具体方法步骤为:
S401、用户旋转地图前获取地图图层相对于正北方向的转角a0;
S402、用户采用两触控点方式进行旋转操作,旋转前获取用户触控点屏幕坐标b1和b2,计算两触控点的中点c0,计算两触控点的连线相对于正北方向的夹角r0;
S403、用户在屏幕上滑动两触控点后,再次获取用户触控点屏幕坐标e1和e2,计算两触控点的中点c1,计算两触控点的连线相对于正北方向的夹角r1;
S404、计算两触控点中点c0到c1的位移矢量v2,对于地图图层进行移动,位移矢量为v2;
S405、计算地图新的转角a1=a0+(r1-r0),设置地图图层的旋转角为a1。