基于经纬度定位行政区划的方法\n技术领域\n[0001] 本发明涉及导航技术领域,特别是涉及一种基于经纬度定位行政区划的方法。\n背景技术\n[0002] 随着计算机技术的快速发展和社会需求的快速推动,使得地理信息技术已经广泛地应用在城市智能交通系统、车辆导航系统、个人位置服务系统和数字化武器装备等等各种嵌入式系统中,其经济和社会效益显著。\n[0003] 随着移动终端软硬件技术的不断进步,越来越多的移动设备装配了用于定位的GPS(Globe Positioning System)芯片,使得基于位置信息的服务(Location Based Service,LBS)得到了迅猛的发展。根据用户的实时位置返回或者主动传送对用户比较有价值的数据,是当下十分流行的服务模式。\n[0004] 目前,越来越多的服务商与网络运营商,例如电信运营商(移动或者联通等等)合作开展了很多基于用户地理位置上报的相关服务,而这种合作一般是在省、市的层面上开展的。因此利用用户上报的经纬度快速定位其所在行政区划的需求也越来越多。\n[0005] 然而提供专利的地理位置定位服务需要详细的专业测绘数据,其一般只能高价购买专业的测绘数据或者调用商业公司(例如Google、Nokia、高德等商业公司)开放的API接口来完成。\n[0006] 专业的测绘数据信息比较丰富,其一般包括道路、河流等细节信息,但是这些专业的测绘数据通常十分地昂贵,而定位行政区划的定位服务是一种粗粒度的定位服务,因此采用专业的测绘数据只是用来定位行政区划,则其成本过高。而且,由于专业的测绘数据关于地理信息的各类细节信息十分地丰富,因此在使用这些专业的测绘数据时需要进行非常复杂的预处理,以将有用的信息剥离出来,则其响应时间比较慢,用于定位行政区划这种粗粒度的定位服务,则显得大材小用且得不偿失。\n[0007] 而调用商业公司开放的API接口,其业务系统的稳定性完全依赖于各个商业公司所提供的API接口,且定位服务商接口数据格式变更时其不一定会主动地通知调用方,因此其风险是不可控的。此外,各个商业公司所开放的API接口大部分是需要收费的,例如Google公司的API接口只在一定的调用量之内免费,超出部分需要按次收费,因此其成本也比较高,特别是对于调用次数较多的客户而言,其支出巨大。\n发明内容\n[0008] 本发明的目的在于,克服现有定位行政区划技术所存在的缺陷,而提供一种新的基于经纬度定位行政区划的方法,其成本较低,风险低,可扩展性和灵活性较强。\n[0009] 本发明的目的及解决其技术问题是采用以下技术方案来实现的。\n[0010] 本发明提供一种基于经纬度定位行政区划的方法,其利用获取的测绘数据而快速地定位所述经纬度所在的行政区划,在执行所述基于经纬度定位行政区划的方法之前,所述测绘数据进行预处理以使每一个第一级行政区划分别对应一个矩形边界,且每一个第一级行政区划分别由多个多边形所组成。其中所述基于经纬度定位行政区划的方法包括定位所述经纬度所在的第一级行政区划,其包括:步骤S11:逐个扫描每一个第一级行政区划所对应的矩形边界,判断所述经纬度在哪些第一级行政区划所对应的矩形边界内,从而挑选出候选的第一级行政区划;步骤S12:逐个扫描任一个选中的候选第一级行政区划所包含的多个多边形,并判断所述经纬度是否在所述选中的第一级行政区划的任一个多边形内;步骤S13:如上述步骤S12判断为是,则判定所述选中的候选第一级行政区划为所述经纬度所在的第一级行政区划;否则,则返回步骤S12,继续扫描其余的候选第一级行政区划。\n[0011] 优选地,所述步骤S11包括步骤S111:选中任一个第一级行政区划,并获取所述选中的第一级行政区划所对应的所述矩形边界的任一对角线的两个顶点的坐标;步骤S112:\n判断所述经纬度的X轴坐标是否位于所述两个顶点的X轴坐标之间,并判定所述经纬度的Y轴坐标是否位于所述两个顶点的Y轴坐标之间;步骤S113:如判定为是,则选中的第一级行政区划作为所述候选的第一级行政区划;否则,反之;步骤S114:返回继续执行上述步骤S111-S113,直至挑选出所有的所述候选的第一级行政区划。\n[0012] 优选地,所述步骤S12包括步骤S121:从所述经纬度作一条水平向左的射线;步骤S122:判断所述射线与所述选中的第一级行政区划中的任一选中的多边形是否有奇数个交点;步骤S123:如上述步骤S122判断为是,则判定所述经纬度位于所述选中的多边形内;否则,反之;步骤S124:更换所述选中的多边形,并返回继续执行上述步骤S122-S123,直至扫描完所述选中的第一级行政区划中的所有多边形。\n[0013] 优选地,所述步骤S122包括步骤S1221:判断所述选中的多边形中的任一选中的边是否与所述射线相交;步骤S1222:统计与所述射线相交的所述选中的多边形的边的数量,如所述数量为奇数,则所述选中的多边形与所述射线具有奇数个交点;否则,反之。\n[0014] 优选地,在所述步骤S1221中,所述选中的多边形的任一选中的边与所述射线相交的必要充分条件是通过快速排斥实验且相互跨立。\n[0015] 优选地,所述第一级行政区划为省级行政区划。\n[0016] 优选地,所述基于经纬度定位行政区划的方法在步骤S12与S13之间进一步包括步骤S14:判断所述经纬度所在的多边形是否属于直辖市的境界,如果判断为是,则以所述直辖市为所述经纬度所在的第一级行政区划。\n[0017] 优选地,所述测绘数据在进行预处理时还进一步使每一个第一级行政区划下属的每一个第二级行政区划分别对应于一个正方形边界,其中所述基于经纬度定位行政区划的方法进一步包括定位所述经纬度所在的第二级行政区划,其包括步骤S21:逐个扫描所述经纬度所在的第一级行政区划下属的任一选中的第二级行政区划所对应的正方形边界;步骤S22:判断所述经纬度是否在所述选中的第二级行政区划所对应的正方形边界内;步骤S23:\n如上述步骤S22为是,则判定所述选中的第二级行政区划为所述经纬度所在的第二级行政区划;否则,更换所述选中的第二级行政区划,并返回继续执行上述步骤S22。\n[0018] 优选地,所述测绘数据在进行预处理时对每一个第二级行政区划的预处理与对每一个第一级行政区划的预处理相同,其中所述基于经纬度定位行政区划的方法进一步包括定位所述经纬度所在的第二级行政区划,且其与定位所述经纬度所在的第一级行政区划的方法相同。\n[0019] 优选地,所述第二级行政区划为地市级行政区划。\n[0020] 综上所述,本发明所述的基于经纬度定位行政区划的方法,无需重金购买专业的测绘数据,其使用免费提供的测绘数据即可快速地定位出所述经纬度所在的行政区划,从而降低了成本,节省了大笔的开支。另,本发明所述的基于经纬度定位行政区划的方法无需依赖外部接口,数据可以完全保存在内存中,因此不用承担任何接口调用方式所带来的风险。且由于行政区划本身的稳定性,因此数据本身可以长时间无需更新。此外,本发明的可扩展性和灵活性很强,例如想要定位粒度更细的行政区划(如市区、乡镇等),用户可以下载国家基础地理信息系统提供的免费测绘数据,直接用本发明提出的方法进行处理即可,代码仅需做少量更改且不会影响之前的功能。\n[0021] 上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。\n附图说明\n[0022] 图1为省级行政区划的映射表的示意图。\n[0023] 图2a为一种省级行政区划所对应的矩形边界之间相互关系的示意图。\n[0024] 图2b为另一种省级行政区划所对应的矩形边界之间相互关系的示意图。\n[0025] 图3为地市级行政区划所对应的正方形边界的示意图。\n[0026] 图4为省级与地市级行政区划之间关系的映射表的示意图。\n[0027] 图5为本发明实施例所示之基于经纬度定位行政区划的方法的流程示意图。\n具体实施方式\n[0028] 为更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的基于经纬度快速定位其行政区划的方法其具体实施方式、方法、步骤、结构、特征及其功效,详细说明如下。\n[0029] 有关本发明的前述及其他技术内容、特点及功效,在以下配合参考图式的较佳实施例的详细说明中将可清楚呈现。通过具体实施方式的说明,当可对本发明为达成预定目的所采取的技术手段及功效得以更加深入且具体的了解,然而所附图式仅是提供参考与说明之用,并非用来对本发明加以限制。\n[0030] 其中,本发明是利用免费的测绘数据,例如国家基础地理信息系统(http://nfgis.nsdi.gov.cn)所提供的免费的测绘数据,而实现快速定位行政区划。其中,国家基础地理信息系统所提供的免费的测绘数据提供了权威的国级境界、省级境界、地市级境界、县级境界以及其它常用的河流、公路和铁路等地理信息测绘数据,其可以供用户免费下载使用。本发明所揭示的基于经纬度快速定位行政区划的方法主要是采用上述免费的测绘数据中的省级、地市级和县级境界作为基础数据,从而利用经纬度而定位到相应的行政区划。虽然,本发明实施例是以国家基础地理信息系统所提供的免费的测绘数据来实现应用,但是,本领域技术人员可以理解的是,本发明也可以利用其它免费的测绘数据来实现。\n[0031] 在获得免费的测绘数据后,首先会对获得的测绘数据进行预处理,以方便后续需要执行的基于经纬度定位行政区划的方法。在对测绘数据进行预处理时,受限于免费获得的测绘数据的精确程度的影响,因此对各个级别的行政区划的测绘数据的预处理可以相应进行调整。以下以一种精确程度较低的测绘数据为例简要地介绍相关的测绘数据预处理过程。\n[0032] 如果测绘数据的精确程度只到地市级境界,也就是说,获得的测绘数据的最细粒度的行政区划只到地市级境界,则在本发明中,只需要对省级和地市级境界的测绘数据进行预处理即可,即省级行政区划作为第一级的行政区划,而地市级行政区划作为第二级的行政区划,在此对测绘数据的预处理包括:\n[0033] (1)对省级行政区划的测绘数据的预处理:\n[0034] 从地图上直观来看,每一个省都是可以由多个多边形所组成的,而每个多边形的各个顶点所在的经纬度包含在上述国家基础地理信息系统所提供的测绘数据中,如果利用这些数据来进行定位,则需要将每个多边形抽象成数据结构并进行保存。其中,绝大部分的省级行政区划只是由少数几个多边形所组成,而极少数的省级行政区划由于其地理边界复杂,由较多的多边形所组成。一般组成省级行政区划的多边形的数量不会超过200个。\n[0035] 图1为省级行政区划的映射表的示意图。如图1所示,栏位-行政区划代码下的key值代表着省级行政区划的代码,例如黑龙江省的代码为230000;而栏位-多边形下的value值代表着组成此省级行政区划的各个多边形的相关数据。\n[0036] 此外,为了方便后续的处理,在本发明中,还在对省级行政区划的测绘数据进行预处理时,还进一步将每一个省级行政区划分别对应于一个矩形边界,并将其添加至图1的映射表中的栏位-矩形边界处。\n[0037] 需要注意的是,省级行政区划所对应的矩形边界相互之间可能会有部分的重叠,例如,如图2a所示,黑龙江省所对应的矩形边界和吉林省所对应的矩形边界具有部分的重叠,比如黑龙江省下属的哈尔滨市的市中心坐标就既在黑龙江省所对应的矩形边界内,也在吉林省所在的矩形边界内。\n[0038] 另,省级行政区划所对应的矩形边界相互之间也可能会出现包含关系,当然,此种情况一般只会出现在直辖市和其附近的省级行政区划之间。例如,如图2b所示,北京市所对应的矩形边界就在河北省所对应的矩形边界内。\n[0039] 此外,对于具有较多的多边形的省级行政区划,其主要区域所对应的多边形面积较大,而其余的多边形面积较小,而用户一般都集中在面积较大的多边形里面,因此为了方便后续的处理,可以在建立如图1所示的省级行政区划的映射表时,将组成省级行政区划的这些多边形按照其矩形面积从大到小的顺序进行排列。\n[0040] (2)对地市级行政区划的测绘数据的预处理\n[0041] 众所周知,每一个省级行政区划下都包含若干个地市级行政区划,而每一个地市级行政区划的面积相对于省级行政区划而言是非常下的。因此,受限于免费获得的测绘数据的精确程度的影响,在本发明中,如图3所示,可以将每一个地市级行政区划分别对应于一个正方形边界。根据相关数据分析,绝大多数的地市级行政区划的面积都在10000km2以下,因此为了方便进行分析,在本发明中,可以近视地认为每一个地市级行政区划所对应的正方形边界的边长都是100km。\n[0042] 然后,可以将每一个地市级行政区划的数据保存在一个类似于图1所示的地市级行政区划的映射表中。其中,栏位-地市级行政区划代码下的key值代表着地市区划代码,例如哈尔滨市的代码为230100,而栏位-正方形下的value值代表着其对应的正方形边界的相关数据。\n[0043] (3)确定省级与地市级行政区划之间的关系\n[0044] 在此,可以建立一个省级与地市级行政区划之间关系的映射表,其如图4所示。在图4中,栏位-省级行政区划代码下的key值代表着省级行政区划的代码;而栏位-地市级行政区划代码下的key值分别代表着相应的省级行政区划下属的各个地市级行政区划的代码。\n[0045] 在本发明的上述说明中,只是以测绘数据的精确程度只到地市级境界为例来进行说明,但是,本领域技术人员可以理解的是,如果获得的测绘数据的最细粒度的行政区划到县级境界,则对地市级行政区划的测绘数据的预处理也可以按照上述对省级行政区划的测绘数据的处理方式来进行预处理,而对县级行政区划的测绘数据按照上述对地市级行政区划的测绘数据的处理方式来进行预处理。\n[0046] 在对获得的免费测绘数据进行预处理后,然后可利用获得的测绘数据而执行本发明所述的基于经纬度定位行政区划的方法。具体地,图5为本发明的基于经纬度定位行政区划的方法的流程示意图。在本发明实施例中以获得的免费测绘数据的精确程度只到地市级境界为例来介绍本发明,以对应上述对测绘数据的预处理方式,即以第一级行政区划为省级行政区划,第二级行政区划为地市级行政区划为例来介绍本发明。如图5所示,本发明的基于经纬度定位行政区划的方法包括:\n[0047] 步骤S1:定位所述经纬度所在的省级行政区划。\n[0048] 众所周知,在地图上,各个经纬度分别对应X-Y坐标系中的一个坐标,如需要进行定位的经纬度的坐标为(P,Q),其中P对应经度,而Q对应于纬度。\n[0049] 其中,步骤S1包括:\n[0050] 步骤S11:逐个扫描每一个省级行政区划所对应的矩形边界,判断需要进行定位的经纬度(P,Q)在哪些省级行政区划所在的矩形边界内,以挑选出候选的省级行政区划。\n[0051] 在执行步骤S11时,可选中任一省级行政区划,并获取选中的省级行政区划所对应的矩形边界的任一对角线的两个顶点的坐标,例如坐标(Mx,My)和(Nx,Ny)。\n[0052] 然后,判断所述经纬度(P,Q)的X轴坐标P是否位于所述两个顶点的X轴坐标Mx与Nx之间,并判定所述经纬度(P,Q)的Y轴坐标Q是否位于所述两个顶点的Y轴坐标My与Ny之间;\n[0053] 如判定为是,则选中的省级行政区划作为候选的省级行政区划;否则,则反之,然后返回继续执行上述步骤,直至挑选出所有的所述候选的省级行政区划。\n[0054] 也就是说,本发明在执行步骤S11时只需要判断是否满足条件Mx≤P≤Nx且My≤Q≤N就可以判断出任一选中的省级行政区划所对应的矩形边界是否包含所述需要进行定位的经纬度(P,Q),从而挑选出所有的候选省级行政区划。\n[0055] 一般来说,需要进行定位的经纬度(P,Q)最多只会落在2-3个省级行政区划所对应的矩形边界内,因此,利用上述步骤S11所挑选出来的候选的省级行政区划的数量不会很多。\n[0056] 步骤S12:逐个扫描任一个选中的候选省级行政区划所包含的多个多边形,并判断需要进行定位的经纬度(P,Q)是否在选中的省级行政区划的任一个多边形内。\n[0057] 具体地,在执行步骤S12时,可首先从所述经纬度作一条水平向左的射线,其与Y轴相交于顶点(0,Q),因此所述射线可由两个顶点(0,Q)和(P,Q)所确定。\n[0058] 然后,判断所述射线与选中的省级行政区划中的任一个选中的多边形是否有奇数个交点。具体地,可判断所述选中的多边形中的任一个选中的边是否与所述射线相交,然后统计与所述射线相交的所述选中的多边形的边的数量,如所述数量为奇数,则所述选中的多边形与所述射线具有奇数个交点;否则,反之。\n[0059] 其中,本领域技术人员可以理解的是,所述射线就是由两个顶点(0,Q)和(P,Q)所确定的线段。而选中的多边形的任一个选中的边可以由其两个顶点(Ax,Ay)和(Bx,By)而确定,即任一个选中的边是由两个顶点(Ax,Ay)和(Bx,By)所确定的线段。因此可通过判断两个顶点(Ax,Ay)和(Bx,By)所确定的线段与由两个顶点(0,Q)和(P,Q)所确定的线段是否相交,来判断任一个选中的边是否与所述射线相交。\n[0060] 两个顶点(Ax,Ay)和(Bx,By)所确定的线段与由两个顶点(0,Q)和(P,Q)所确定的线段相交的必要充分条件是通过快速排斥实验且相互跨立。\n[0061] 其中,快速排斥实验是指判断以顶点(Ax,Ay)和(Bx,By)所确定的线段作为对角线的矩形区域和由顶点(0,Q)和(P,Q)所确定的线段作为对角线的矩形区域是否相交,其可以用上述两条线段中的任一条线段的任一顶点是否在另一条线段作为对角线的矩形区域来进行快速判断,如果在,则通过快速排斥实验,否则,不通过快速排斥实验。\n[0062] 相互跨立是判断上述两条线段的任一条线段的两个顶点是否在另一条线段的两侧。假设P1=(Ax,Ay),P2=(Bx,By),Q1=(0,Q),Q2=(P,Q),则如果满足下述公式:\n[0063] [(P1-Q1)*(Q2-Q1)]*[(P2-Q1)*(Q2-Q1)]≤0且\n[0064] [(Q1-P1)*(P2-P1)]*[(Q2-P1)*(P2-P1)]≤0\n[0065] 则可以判定上述两条线段是相互跨立的,否则,则判定上述两条线段是不相互跨立的。\n[0066] 然后,当判断出所述射线与选中的省级行政区划中的任一选中的多边形具有奇数个交点时,则可以判定所述经纬度(P,Q)位于选中的多边形内;否则,反之,并再更换所述选中的多边形,并返回继续执行上述步骤,直至扫描完选中的省级行政区划中的所有多边形。\n[0067] 每一个多边形的边数可能会比较多,为了加速扫描的速度,可以将多边形的各个边按照纬度进行排序,由于国家基础地理信息系统所提供的数据中各个多边形的所有边的最大长度不会超过某一个预定的长度LEN,因此在扫描时,可只扫描满足下述公式的边:\n[0068] 0≤Ay-Q≤LEN或者\n[0069] 0≤By-Q≤LEN\n[0070] 这样的边一般比较少,只有几个,而且由于多边形各个边已经按照纬度进行了排序,因此查找起来非常快,从而很快地判定所述射线是否与选中的多边形是否有奇数个交点。\n[0071] 步骤S13:如上述步骤S12判断为是,则判定选中的候选省级行政区划为所述经纬度(P,Q)所在的省级行政区划;否则,则返回步骤S12,继续扫描其余的候选省级行政区划。\n[0072] 由于直辖市一般也归属于省级行政区划,因此,在本发明的基于经纬度快速定位行政区划的方法,在上述步骤S12与S13之间,可还进一步包括:\n[0073] 步骤S14:判断所述经纬度所在的多边形是否属于直辖市的境界,如果判断为是,则以所述直辖市为所述经纬度所在的省级行政区划。\n[0074] 然后,本发明的基于经纬度定位行政区划的方法还进一步包括:\n[0075] 步骤S2:定位所述经纬度所在的地市级行政区划。\n[0076] 具体地,步骤S2包括:\n[0077] 步骤S21:逐个扫描所述经纬度所在的省级行政区划下属的任一选中的地市级级行政区划所对应的正方形边界;\n[0078] 步骤S22:判断所述经纬度是否在选中的地市级行政区划所对应的正方形边界内;\n[0079] 步骤S23:如判断为是,则判定选中的地市级行政区划为所述经纬度所在的地市级行政区划;否则,更换选中的地市级行政区划,并返回继续执行上述步骤S22。\n[0080] 需要注意的是,本发明上述定位经纬度所在地市级行政区划的方法是由于获得的免费测绘数据的精确程度只到地市级境界,但是,本领域技术人员可以理解的是,如果获得的免费测绘数据比较精确,例如其精确程度可以到县级境界,则定位所述经纬度所在地市级行政区划的方式也可以使用按照上述定位所述经纬度所在省级行政区划的方式来进行,且本发明也可以进一步定位所述经纬度所在的县级行政区划,其定位方式如上述对地市级行政区划的定位方式相同,从而自上而下逐级定位到所需要的行政区划。\n[0081] 综上所述,本发明所述的基于经纬度定位行政区划的方法,无需重金购买专业的测绘数据,其使用免费提供的测绘数据即可快速地定位出所述经纬度所在的行政区划,从而降低了成本,节省了大笔的开支。另,本发明所述的基于经纬度定位行政区划的方法无需依赖外部接口,数据可以完全保存在内存中,因此不用承担任何接口调用方式所带来的风险。且由于行政区划本身的稳定性,因此数据本身可以长时间无需更新。此外,本发明的可扩展性和灵活性很强,例如想要定位粒度更细的行政区划(如市区、乡镇等),用户可以下载国家基础地理信息系统提供的免费测绘数据,直接用本发明提出的方法进行处理即可,代码仅需做少量更改且不会影响之前的功能。\n[0082] 以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容作出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。