Android环境下地形图编号可视化查询与算法研究
2014-08-05乔俊军胡冯伟万丛丛
乔俊军,胡冯伟,万丛丛,2
(1.武汉大学测绘学院,湖北武汉 430079;2.深圳市勘察研究院有限公司,广东深圳 518026)
Android环境下地形图编号可视化查询与算法研究
乔俊军1,胡冯伟1,万丛丛1,2
(1.武汉大学测绘学院,湖北武汉 430079;2.深圳市勘察研究院有限公司,广东深圳 518026)
一、引 言
国家基本比例尺地形图是根据国家颁布的地形图测量规范、编绘规范和地形图图式,用指定的方法测制或根据可靠的资料编制的详细表达普通地理要素的全要素地图,它既是经济建设、国防建设和科研文教的重要图件,又是编绘各种地理图的基础资料,其测绘精度、成图数量和速度等是衡量国家测绘技术水平的重要标志[1]。
由于国家基本比例尺地形图的管理和使用都是依据其编号来进行的,因此如何快速、方便、实时、可视化地查询和获取地形图编号,已成为地形图管理者和使用者普遍关心的问题。国内在地形图管理和编号查询方面取得了一些研究成果[2-5],并开发了相应的地形图管理和编号查询软件,但查询功能不全,没有实现点、线、面所在地形图编号的全面查询;便捷性也不够,不能随时随地地查询地形图编号;而且可视化不强,没有电子地图作为可视化支撑。
针对上述问题,本文提出了用于解算点、线、面所在地图编号的坐标增量法、交点均值法和纬线扫描法,并基于Android移动设备,通过调用百度地图API接口,直接访问百度地图服务和数据,然后运用Java语言,设计开发了地形图编号的可视化查询软件,方便了用户对地形图编号的可视化查询。
二、我国基本比例尺地形图编号
我国基本比例尺地形图不仅具有完整的比例尺系列,而且还具有统一的分幅编号系统。它的分幅与编号均采用国际上统一的“经纬线分幅,行列式编号”的方法,即在1∶100万地形图的基础上,按照我国规定的基本比例尺系列进行分幅编号[6]。
1.1∶100万地形图编号
行:从赤道算起,纬度每4°为一行,至南、北纬88°,各22行,用大写英文字母A、B、C、…、V表示,南半球加S,我国地处北半球,N可以省略。
列:从180°经线算起,自西向东每6°为一列,全球分为60列,用阿拉伯数字1、2、3、…、60表示,列必须是两位数,不足两位的前面补“0”。
由经线和纬线所围成的每一个梯形小格为一幅1∶100万地形图,它们的编号由该图所在的行号与列号组合而成,如北京所在的1∶100万地形图的图号为J50,如图1所示。
图1 1∶100万地形图编号
2.1∶50万~1∶5000地形图编号
1∶50万~1∶5000地形图的编号是在1∶100万地形图的基础上进行的。它们的编号都由10个代码组成,其中前3位是所在的1∶100万地图的行号(1位)和列号(2位),第4位是比例尺代码,后面6位分为两段,前3位是图幅的行号数字码,后3位是图幅的列号数字码。行号和列号的数字码编码方法是一致的,行号从上而下,列号从左到右顺序编排(如图2所示),不足3位时前面补“0”,如图3所示。
图2 1∶50万~1∶5000地形图行列号
图3 1∶50万~1∶5000地形图编号构成
3.地形图编号的计算公式
1∶100万图幅编号计算公式如下
1∶50万~1∶5000图幅在1∶100万图幅中行、列号计算公式如下
图幅西南角经纬度计算公式如下
式中,[]为取整符号;H、L分别为1∶100万图幅的行号和列号;h、l分别为1∶50万~1∶5000地形图在1∶100万地形图中的行号和列号;λ、φ分别为某点的经度和纬度;λ1、φ1分别为图幅西南角的经度和纬度;Δλ、Δφ分别为基本比例尺地形图的经差和纬差。
三、解算思路与功能设计
1.解算思路
针对点、线、面所在图幅编号的解算,本文运用系统论的方法,把“面”的解算问题转换为“线”的解算问题,把“线”的解算问题转换为“点”的解算问题,最后以“点”为基础,全面而系统地实现了点、线、面所在图幅编号的解算。
1)当查询对象为“点”时,本文提出了坐标增量法。该方法是利用坐标增量使处在图廓线上或图廓角上的点生成内点,再利用内点直接解算图幅编号;当点处在图廓内部时,直接解算图幅编号。
2)当查询对象为“线”时,本文提出了交点均值法。该方法是利用线与图廓经纬线相交得到一系列相邻交点的中点,把“线”的解算问题转换为“点”的解算问题;然后再利用坐标增量法解算这些中点所在的图幅编号。
3)当查询对象为“面”时,本文提出了纬线扫描法。该方法是利用一组图廓纬线与面相交生成的线段,把“面”的解算问题转换为“线”的解算问题;然后再利用交点均值法,把“线”的解算问题转换为“中点”的解算问题;最后利用坐标增量法解算这些中点所在的图幅编号。图幅编号解算与可视化查询流程如图4所示。
2.功能设计
该软件设计有点、线、面所在图幅编号的可视化查询功能。
(1)点所在图幅编号的查询功能
点可分为:当前位置、地名、地理坐标、指定点。
1)当前位置:即软件通过移动网络、WiFi、内置GPS获得移动设备的瞬时地理坐标来解算图幅编号。GPS定位精度为30 m左右;WiFi定位精度为30~200 m;移动网络定位精度为100~300 m[7]。
2)地名:即直接输入地名得到地理坐标后,再进行图幅编号的解算。
3)地理坐标:该功能有两种输入方式,一种是输入浮点型的地理坐标,直接进行图幅编号的解算;另一种是输入度分秒(ddmmss)型的地理坐标,转换为浮点型地理坐标后再进行图幅编号的解算。
4)指定点:即在移动设备屏幕上点击任意位置获得屏幕坐标,转换为地理坐标后,再进行图幅编号的解算。
图4 图幅编号解算与可视化查询流程
(2)线所在图幅编号的查询功能
用户在移动设备屏幕上绘制感兴趣折线,将转折点的屏幕坐标转换为地理坐标后,再进行图幅编号的解算。
(3)面所在图幅编号的查询功能
该功能有两种输入方式:一种是用户在移动设备屏幕上逆时针绘制出感兴趣区域,获得区域边界点的屏幕坐标,转换为地理坐标后再进行图幅编号的解算;另一种是用户直接输入区域边界点的地理坐标(ddmmss型)转换为浮点型地理坐标后,再进行图幅编号的解算。
四、解算方法与程序实现
1.点所在图幅编号的解算
(1)解算方法
根据点与矩形的拓扑关系,当点位于矩形内部时,点与矩形的包含关系明确,可直接解算图幅编号;当点位于矩形边线或角点时,点与矩形的包含关系就会出现歧义。因此,本文提出了坐标增量法。该方法首先判断点是否位于图廓内部,若是,则利用该点直接解算图幅编号;若否,则利用坐标增量(增量Δd小于1∶5000地形图的纬差),使处在图廓线上或图廓角上的点分解为内点,再利用内点解算图幅编号。
1)当点位于图廓内部时,如图5中的B点,B点即为T2图幅的内点。
图5 点所在图幅编号的解算
2)当点位于图廓纬线上时,如图5中的D点,通过纬度坐标增量(φ±Δd,λ),使D点分解为T2、T4两幅图的内点。
3)当点位于图廓经线上时,如图5中的A点,通过经度坐标增量(φ,λ±Δd ),使A点分解为T1、T2两幅图的内点。
4)当点位于图廓角点上时,如图5中的C点,通过坐标增量(φ±Δd,λ±Δd ),使C点分解为T1、 T2、T3、T4四幅图的内点。
得到图幅的内点后,首先利用式(1)、式(2)直接解算内点所在的图幅编号;再利用式(3)计算西南图廓点坐标;最后根据不同比例尺图幅的经纬差,在百度地图上绘制出图廓线。点所在图幅编号的可视化查询如图6所示。
图6 点所在图幅编号的可视化查询
(2)程序实现
部分代码如下
2.线所在图幅编号的解算
(1)解算方法
根据线与矩形的拓扑关系,当线与矩形相交时,两交点的中点必然会落在矩形内部或边线上。因此,本文提出了交点均值法。该方法是利用线与图廓经纬线的交点,通过排序计算得到一系列相邻交点的中点,把线的解算问题转换为点的解算问题,然后再利用坐标增量法解算图幅编号。
如图7所示,在折线ABCD上,首先选取线段AB,根据不同比例尺地形图的经纬差,计算线段AB的外接矩形SWUV,以此来确定参与计算的图廓经纬线数量和起算经纬度。然后计算线段AB与图廓经纬线的交点P1,P2,…,P9(若线段AB水平时,则计算线段AB与图廓经线的交点;若线段AB垂直时,则计算线段AB与图廓纬线的交点),并按经度或纬度对交点P1,P2,…,P9和端点A、B进行排序,依次计算相邻两点的中点。最后利用坐标增量法解算图幅编号。
图7 线所在图幅编号的解算
按照同样方法,也可以解算线段BC和CD所在的图幅编号。最后剔出重复编号。线所在图幅编号的可视化查询如图8所示。
图8 线所在图幅编号的可视化查询
(2)程序实现
部分代码如下
3.面所在图幅编号的解算
(1)解算方法
根据线与面的拓扑关系,直线与面相交形成的线段必然会落在面内。因此,本文提出了纬线扫描法。该方法是利用一组图廓纬线与面相交生成的线段,把面的解算问题转换为线的解算问题,然后再利用交点均值法,把线的解算问题转换为点的解算问题,最后利用坐标增量法解算图幅编号。
如图9所示,在面ABCDEF上,首先根据不同比例尺地形图的经纬差,计算该面的外接矩形SWUV,以此来确定扫描纬线的数量和起算纬度,然后通过扫描纬线与面ABCDEF的相交,形成一组纬线段。以38.66°纬线段MN为例,将该线段向下平移一微小量Δ(Δ小于1∶5000地形图的纬差),生成T1T2线段,利用交点均值法,计算线段T1T2与图廓经线的交点P1,P2,…,P6,并按经度或纬度对交点(不包括线段端点)进行排序,依次计算相邻两点的中点(若交点的个数为1或0,则终止该子过程的计算),最后再利用坐标增量法解算图幅编号。
图9 面所在图幅编号的解算
按照同样方法,可以解算其他线段所在图幅的编号,需注意的是:一条扫描纬线只能解算该纬线下一行的图幅编号,当扫描到倒数第2条图廓纬线时,如图9中的39.33°纬线段PQ,还需要将PQ上移一个微小量Δ,解算上一行的图幅编号。另外,还需要利用交点均值法解算边线所在的图幅编号。最后剔出重复编号。面所在图幅编号的可视化查询如图10所示。
图10 面所在图幅编号的可视化查询
(2)程序实现
部分代码如下
五、结束语
本文运用系统论的方法,首次提出了用于解算点、线、面所在编号的坐标增量法、交点均值法和纬线扫描法;同时,基于Android移动设备,设计开发了地形图编号的可视化查询软件。测试结果表明,该软件可减轻人力、节约时间、提高效率,能够满足用户随时随地可视化查询地形图编号的需求。
[1]百度百科.国家基本地图[EB/OL].2012-03-05[2013-11-14].http:∥baike.baidu.com/view/1490512.htm.
[2]张鹏程.基于点与多边形关系的地形图图幅查询系统实现[J].测绘通报,2008(10):68-69.
[3]胡华科,林远清.基于斜率内插算法的地形图图幅查询系统设计[J].测绘通报,2008(1):66-68.
[4]胡华科,郑春燕.基于Web的地形图查询信息系统设计与开发[J].测绘通报,2009(2):60-62.
[5]TIAN Z K,LIU S H,FU F F,et al.Algorithm and Visual Realization of Auto-retrieving the New and Old Sheet Numbers of Topographic Map[EB/OL].2004-01-01 [2013-11-13].http:∥ieeexplore.ieee.org/xpl/article-Details.jsp?tp=&arnumber=1370301&queryText% 3DAlgorithm+and+visual+realization+of+auto-retrieving+the+new+and+old+sheet+numbers+of+topographic+map.
[6]祝国瑞,郭礼珍,尹贡白,等.地图设计与编绘[M].武汉:武汉大学出版社,2001:15-27.
[7]百度地图LBS开发平台.Android定位SDKv4.0[EB/ OL].[2013-11-14].http:∥developer.baidu.com/map/ geosdk-android.htm.
Visual Query and Algorithm Research of Sheet Numbers of Topographic Map in Android Environment
QIAO Junjun,HU Fengwei,WAN Congcong
在分析和研究地形图分幅编号的基础上,提出用于编号解算的坐标增量法、交点均值法和纬线扫描法,把“线、面”问题都归结为“点”的问题,全面而系统地实现了点、线、面所在图幅编号的解算;同时,基于Android智能手机和平板电脑等移动设备,借助于百度地图平台和API应用程序接口,开发了国家基本比例尺地形图编号的可视化查询软件,方便了用户对地形图编号的可视化查询。
Android;地形图编号;可视化查询;算法研究
P284
B
0494-0911(2014)10-0041-05
2014-01-03
乔俊军(1961―),男,黑龙江宾县人,高级工程师,主要从事地图学与地理信息工程教学及研究工作。
乔俊军,胡冯伟,万丛丛.Android环境下地形图编号可视化查询与算法研究[J].测绘通报,2014(10):41-45.
10.13474/j.cnki. 11-2246.2014.0324