`
accpxudajian
  • 浏览: 459947 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

获取行政区划地名地址的简称

阅读更多

 

 

做地图相关的项目就会涉及到地名地址的查询,那么查询的结果就是行政区划数据,
这个方法是为了更好的展示,  而对地名地址数据进行自动划分和截取的功能。 
 

#方法体

 

 

/**
*获取字符串简称的方法
*@param fullString 原字符串(必填)
*@param key 截取的关键字(选填) 如果为空,则从头开始截取
*@param type 截取类型(next 下一个行政区划,last 最后一个行政区划,self 当前行政区划)
*@param maxLen 最大长度(选填 默认为100)
*@return 截取后的字符串的简称
*****/
function getShortName(fullString,key,type,maxLen){
	if(!fullString){return "";}
	var defMaxLen = 10;//默认最大长度

	//混合参数处理
	if(typeof(key)=='undefined'){//没有第二个参数,则截取最大长度,然后立即返回。
		return fullString.substr(0,defMaxLen);
	}else if(typeof(key)=='number'){//第二个参数是最大长度,则截取指定长度立即返回
		maxLen = key-0||defMaxLen;
		return fullString.substr(0,maxLen);
	}else if(typeof(type)=='number'){//第三个参数是最大长度,那么第四个表示type类型
		var temp = maxLen;//临时中间变量
		maxLen = type-0||defMaxLen;
		type = temp||"last";
	}else{//按照正常顺序传递参数
		maxLen = maxLen-0 || defMaxLen;
		key = key||fullString;
		type = type||"last";	
	}
	if(fullString.indexOf(key)==-1){//查询关键字不在字符串中,则截取最大长度,然后立即返回。
		return fullString.substr(0,maxLen);
	}
	//混合参数处理结束
	//log("fullString ="+fullString+",key="+key+",type="+type+",maxLen = "+maxLen);
	var index = fullString.indexOf(key);
	var len = fullString.length;
	
	var unitArr = "国,省,市,区,县,乡,镇,村,州,组,委,盟,旗,号,胡同".split(",");//发现缺少则补充 街,路,
	var reg = new RegExp(unitArr.join("|"));//行政区划单位的正则
	var wordArr = fullString.split(reg);//去掉了行政区划的地名地址的数组
	var wordLen = wordArr.length;//所有地名地址的长度
	//log(wordArr);
	//默认是获取最后一个也是最小范围的一个行政区划级别
	//IE9,FF,Chrome下,fullString如果最后一个单词匹配正则,则wordArr最后一个是""字符串,所以得向前去一个
	var name =  wordArr[wordLen-1]||wordArr[wordLen-2];//默认type='last' 
	
	//log("name = "+name);
	if("self"==type){//当前关键字所在的地名地址级别		
		name =  key.replace(reg,"");//去掉了行政区划的当前的地名		
	}else if("next"==type){//下一个行政区划级别的地名地址		
		name =  key.replace(reg,"");//去掉了行政区划的当前的地名
		var nextIndex = 0;//通过循环,找到下一个地名地址所在的索引(没想到更好的办法)
		for(var i=0;i<wordLen;i++){
			if(wordArr[i].indexOf(name)>=0 ){//使用模糊匹配 这个就是当前的地名地址所在的位置
				if((i+1)<wordLen){//判断是否还有下一个
					nextIndex = i+1;
				}else{//没有下一个了
					nextIndex = i;
				}
				break;
			}
		}
		name = wordArr[nextIndex];
	}
	var newName = name;//添加行政区划单位
//	log("newName = "+newName);
	var matchCount = 0;//匹配次数
	//由于数据可能不是按照正则里边的行政区划顺序,所以只能通过循环并比对的方法
	for(var j=0;j<unitArr.length;j++){	
		//添加完行政区划后,可在字符串中找到。
		if(fullString.indexOf(name+unitArr[j])>=0 ){
			//log("中啦-----------newName="+newName);
			newName = name+unitArr[j];
			matchCount++;//匹配次数自增
			if("self"==type){//本身模式 找到第一个就break
				break;
			}else if("next"==type){
				if(matchCount>=2){//next模式 只进行2次,使用matchCount区分次数
					break;
				}
			}else{/*不可break,因为后边可能有重名的更小级别的行政区划 例如吉林省吉林市*/}
		}
		//log("matchCount="+matchCount);
	}

	newName =  newName.substr(0,maxLen);
	//log("key = "+key+",newName = "+newName);	
	//log("<br/>");
	return newName;
}

 

#测试

 

 

//测试数据
var value ="中国吉林省吉林市长春区延庆县合隆镇华西沟村";
log(getShortName(value,"吉林",4,"self"));
log(getShortName(value,"吉林","next",4));
log(getShortName(value,"广顺南大街"));
log(getShortName(value,"长春"));
log(getShortName(value,"延庆县"));
log(getShortName(value,"合隆镇"));
log(getShortName(value,"ABC",5));
log(getShortName(value,"华西"));

log(getShortName("中国北京市","北京"));
log(getShortName(value,5));
log(getShortName(value,"长春",2));

log(getShortName("中国北京市","北京",4));
log(getShortName(value));
/*
返回结果:
吉林省
吉林市
中国吉林省吉林市长春
华西沟村
华西沟村
华西沟村
中国吉林省
华西沟村
北京市
中国吉林省
华西
北京市
*/
 

 

 

 

愤怒的coder 

 

 

  • 大小: 29.7 KB
分享到:
评论

相关推荐

    全国省级、地市级、县市级行政区划矢量数据+GE地名.rar

    全国省级、地市级、县市级行政区划矢量数据与GE地名数据集是地理信息系统(GIS)中的重要资源,它们提供了中国境内详细的空间位置信息。这些数据通常包括行政区域边界、水系网络以及地名信息,是进行地理分析、规划...

    全国行政区划GIS数据.rar

    全国行政区划GIS数据是关于中国行政区域划分的地理信息系统(GIS)资料集合,它涵盖了全国各地的行政区域信息。GIS是一种强大的工具,用于收集、存储、分析和管理地理空间信息,而行政区划数据则是GIS中的重要组成...

    基于GIS的区划地名管理信息系统数据结构设计.pdf

    基于GIS的区划地名管理信息系统是利用地理信息系统对行政区域界线信息进行管理的数字化系统。该系统的建立对于提升区划地名和勘界管理工作的效率和质量具有重要意义。 在选择适合的数据库平台方面,GIS数据可以分为...

    世界行政区划数据json格式

    世界行政区划数据json格式

    马来西亚行政区划边界数据

    这些文件是关于马来西亚的行政区划边界数据,它们提供了一个详细的空间参考框架,用于地理信息系统(GIS)中的分析和可视化。这些数据集通常由几何形状(如多边形)组成,代表了马来西亚各个行政区域的边界,包括州...

    全国省市区三级行政区划excel文件

    全国省市区三级行政区划excel文件下载,全国行政区划表下载Excel,全国省市区 行政区划 一览表.xls,全国行政区划表.xls,省市县三级行政区域名单.xls,中华人民共和国县以上行政区划代码,中华人民共和国省市区行政...

    基于云GIS与大数据的区划地名云服务平台设计.pdf

    这个平台设计了一个全新的区划地名云计算环境,实现了区划地名信息资源随时获取的目标。这样的平台能够满足政府、企业和公众不同层面的应用需求,实现区划业务、地名业务、地名普查与公众服务的一体化和常态化。 3....

    2019年全国行政区划代码,含拼音全拼、首字母.xls

    2019年全国行政区划代码,含拼音全拼、首字母,excel版本,拿过来就能用,直接导入数据库,最新最全

    DB3201_南京市地方技术规范_地名地址数据规范2017.pdf

    - **GB/T10114-2003**:县级以下行政区划代码编制规则,用于规范地名地址数据中的行政区划代码编制。 - **GB/T18521-2001**:地名分类与类别代码编制规则,用于规范地名的分类和代码编制。 - **GB/T23705-2009**:...

    完整全国四级行政区划数据.sql

    完整全国四级行政区划数据,包含建表语句,各城市汉语拼音全拼、首字母

    地名地址匹配工具,联网运行

    地名地址匹配是GIS(地理信息系统)领域中的一个重要技术,它涉及到将地名或地址转换为精确的地理位置坐标。在标题“地名地址匹配工具,联网运行”中,我们可以理解到这是一个可以在线运行的工具,专门用于进行地名...

    全国行政区划代码,含查询。

    全国行政区划代码,也被称为“地名代码”或“国标行政区划代码”,是由中国国家质量监督检验检疫总局和国家标准化管理委员会共同制定的国家标准GB/T 2260。这个标准定义了一套完整的编码体系,用来唯一识别我国的省...

    全国“省地县乡村”五级行政区划地标

    行政区划是国家管理和组织社会事务的基础,我国的五级行政区划包括:省级行政区(省、自治区、直辖市、特别行政区)、地级行政区(地区、自治州、盟、市)、县级行政区(县、自治县、市辖区、旗)、乡级行政区(乡、...

    开封各区县行政区划shp文件

    在GIS(地理信息系统)领域,"开封各区县行政区划shp文件"是至关重要的数据资源,它提供了开封市下辖各区县的精确边界信息。SHP文件是Esri公司开发的Shapefile格式,是一种广泛用于存储地理空间矢量数据的标准格式。...

    上海市行政区划图制作.zip

    例如,不同行政级别的区域可能用不同的颜色或图案区分,地名和边界线的粗细要适中,比例尺和图例要准确反映实际空间关系。 此外,行政区划图的更新维护也很重要。随着城市的发展,行政区划可能会发生变化,如新的...

    黑龙江省县级以下行政区划代码

    此外,在地名标准化、邮政编码、公安户籍管理等领域,行政区划代码也发挥着不可替代的作用。 黑龙江省县级以下的行政区划代码体系是建立在细致划分和精确管理基础之上的。从城市街道到农村乡镇,每一个区域都对应着...

    全国县及县以上行政区划地名.scel

    输入法词汇表

    全国行政省、区、县市、乡、村GE地标(地名)

    在压缩包内的"全国行政省、区、县市、乡、村GE地标(地名)"文件中,可能包含以下内容: 1. 省级行政区划:中国的34个省级行政区,包括23个省、5个自治区、4个直辖市和2个特别行政区,如北京市、上海市、广东省等。...

    最新最完整的中英法文ISO3166世界行政区划MySQL级联表------18

    最新最完整的中英法文ISO3166世界行政区划MySQL级联表,包含中国

    2023年5月中国行政区划数据(国界、九段线、省级、地市级、区县级)

    2023年5月中国行政区划数据(国界、九段线、省级、地市级、区县级)。 截止2023年1月1日,我国共有34个省级单位,分别是4个直辖市、23个省、5个自治区和2个特别行政区。截止2023年1月1日,我国共有333个地级单位,...

Global site tag (gtag.js) - Google Analytics