BingMap的GeocodeService进行地理位置检索和反向检索--后台实现

一、添加GeocodeService的Web服务引用

地理编码服务(GeocodeService)是以WCF技术发布的一个Web服务,地图编码服务提供了以一个有效的物理地址在地图上匹配其对应的地图地址(既地理经度和纬度坐标)和以地理经度和纬度坐标进行反向匹配物理地址路径的功能。要使用该服务需添加该服务(http://dev.virtualearth.net/webservices/v1/geocodeservice/GeocodeService.svc)的Web服务引用,如下图

二、通过地址获得经纬度的code:

<span style="font-size:14px;">GeocodeServiceClient geocodeService = new GeocodeServiceClient();
GeocodeRequest geocodeRequest = new GeocodeRequest();
				geocodeRequest.Credentials = new Credentials();
				geocodeRequest.Credentials.ApplicationId = "Arn2694QD8zXQJGN_IgecLbotcSVT1gTyRFfNSdPsIOO - yWjkkZRbwKcNEpCfelq";
				geocodeRequest.Query = sAddress;

				ConfidenceFilter[] filters = new ConfidenceFilter[1];
				filters[0] = new ConfidenceFilter();
				filters[0].MinimumConfidence = Confidence.Low;

				GeocodeOptions geocodeOptions = new GeocodeOptions();
				geocodeOptions.Filters = filters;
				geocodeRequest.Options = geocodeOptions;

				GeocodeResponse geocodeResponse = new GeocodeResponse();
				geocodeResponse = geocodeService.Geocode(geocodeRequest);
				if (geocodeResponse.Results != null)
				{
					int iLength = geocodeResponse.Results.Length;
					if (iLength >= 1)
					{
						string sConfidence = geocodeResponse.Results[0].Confidence.ToString();
						if (sConfidence == "High")
						{
							string sState = geocodeResponse.Results[0].Address.AdminDistrict;
							string sCity = geocodeResponse.Results[0].Address.Locality;
							string sZip = geocodeResponse.Results[0].Address.PostalCode;
							string sLat = geocodeResponse.Results[0].Locations[0].Latitude.ToString();
							string sLon = geocodeResponse.Results[0].Locations[0].Longitude.ToString();
							string sqlExist = "select * from mapping_geodata_boundary where code='NJ0415' and boundary.STContains(geometry::STGeomFromText('POINT(" + sLon + " " + sLat + ")', 0))=1";
							DataTable dtExist = _dataAccess.GetTables(sqlExist);
							if (dtExist.Rows.Count > 0)
							{
								//Update
								string sqlUpdate = "update mapping_parcels set city_state_zip=owner_citystate where city is null and fid=" + id;
								_dataAccess.ExcuateSQL(sqlUpdate);
							}
						}
					}
				}
			}</span>

三、通过经纬度获得地址的Code:

<span style="font-size:14px;">ReverseGeocodeRequest reverseGeocodeRequest = new ReverseGeocodeRequest();
				reverseGeocodeRequest.Credentials = new Credentials();
				reverseGeocodeRequest.Credentials.ApplicationId = "Arn2694QD8zXQJGN_IgecLbotcSVT1gTyRFfNSdPsIOO - yWjkkZRbwKcNEpCfelq";

				Location point = new Location();
				point.Latitude = double.Parse(lat);
				point.Longitude = double.Parse(lon);
				reverseGeocodeRequest.Location = point;

				GeocodeServiceClient geocodeService = new GeocodeServiceClient("BasicHttpBinding_IGeocodeService");
				GeocodeResponse geocodeResponse = geocodeService.ReverseGeocode(reverseGeocodeRequest);

				if (geocodeResponse.Results != null)
				{
					int iLength = geocodeResponse.Results.Length;
					if (iLength >= 1)
					{
						string sConfidence = geocodeResponse.Results[0].Confidence.ToString();
						if (sConfidence == "Medium" || sConfidence == "High")
						{
							string sAddress = geocodeResponse.Results[0].DisplayName;
							if (sAddress.Contains("'"))
							{
								sAddress = sAddress.Replace("'", "''");
							}
							string sStreetName = geocodeResponse.Results[0].Address.AddressLine;
							//string sState = geocodeResponse.Results[0].Address.AdminDistrict;
							string sCity = geocodeResponse.Results[0].Address.Locality;
							string sZip = geocodeResponse.Results[0].Address.PostalCode;
							string sLat = geocodeResponse.Results[0].Locations[0].Latitude.ToString();
							string sLon = geocodeResponse.Results[0].Locations[0].Longitude.ToString();
							string sMatchCodes = geocodeResponse.Results[0].MatchCodes[geocodeResponse.Results[0].MatchCodes.Length - 1].ToString();
							string sqlExist = "select * from mapping_geodata_boundary where code='NJ0415' and boundary.STContains(geometry::STGeomFromText('POINT(" + sLon + " " + sLat + ")', 0))=1";
							DataTable dtExist = _dataAccess.GetTables(sqlExist);
							if (dtExist.Rows.Count > 0)
							{
								//Update
								string sqlUpdate = "update mapping_parcels set shape_street_name='" + sStreetName
									+ "',shape_city='" + sCity + "',shape_address='" + sAddress
									+ "',shape_zip='" + sZip + "',shape_matchcode='" + sMatchCodes + "' where fid=" + id;
								_dataAccess.ExcuateSQL(sqlUpdate);
							}
						}
					}
				}</span>
时间: 2024-10-01 04:39:09

BingMap的GeocodeService进行地理位置检索和反向检索--后台实现的相关文章

线性检索:顺序检索

顺序检索 当我们对所检索序列中元素的分布一无所知或元素本身就是随机分布的时候,顺序检索是常用的方法. 常用的返回值策略是,若用数组array,从下标0开始存储元素,检索成功则返回相应下标,失败则返回-1.另一种返回策略是:若从下标1开始存储元素,0号位置作为sentinel(哨兵),返回0则表示检索失败.使用这种返回策略会减少循环条件的判断,提高效率.直接看代码 #include<iostream> using namespace std; class Elem { private: int

Hibernate检索策略与检索方式

hibernate的Session在加载Java对象时,一般都会把鱼这个对象相关联的其他Java对象也都加载到缓存中,以方便程序的调用.但很多情况下,我们不需要加载太多无用的对象到缓存中,一来会占用大量的内存,二来会增加数据库的访问次数,使得程序的运行效率降低.为了合理的使用缓存,Hibernate提供了不同的检索策略来解决这些问题. 作用域 在说检索策略之前,先了解一下检索策略的作用域,它分为:类级别和关联级别.类级别的作用域在检索数据时,检索的数据只包含一个类对象,不涉及与该类关联的其他对象

[原创]java WEB学习笔记88:Hibernate学习之路-- -Hibernate检索策略(立即检索,延迟检索,迫切左外连接检索)

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

框架 day33 Hibernate,组件映射,继承映射,抓取(检索)策略-优化,检索方式总结

组件(组成)映射 例1: public class Person { private Integer pid; //OID 值 private String name; //第一种方案 private String homeAddr; private String homeTel; private String companyAddr; private String companyTel; ↑一般项目都都采用此方案() *通过面向对象角度,使用设计模式(组件|组合),将数据都抽取到一个对象中.将

数据库笔记6:检索,排序检索,过滤数据

insert into products(prod_id,prod_name,pro_price)values('avno1','.5 ton anvil',5.99);insert into products(prod_id,prod_name,pro_price)values('avno2','1 ton anvil',9.99);insert into products(prod_id,prod_name,pro_price)values('avno3','2 ton anvil',14.

音乐检索MIR &#187; 音乐检索研究中使用的工具

音乐检索MIR » 音乐检索研究中使用的工具 工欲善其事,必先利其器.最近在ISMIR邮件列表上大家把自己知道的MIR工具都列了一遍,我整理成这篇文章. jMIR是一个工具集.能够对音频.曲谱.歌词等进行特征提取,挖掘并分析元数据.并基于Weka添加了机器学习模块.这个倒是经常用,不过只是用来提取音频特征. Yaafe是有效的特征提取程序库. Aubio特征提取不多,主要做鼓点.音高.起始点(onset)检测. CLAM是一个无所不包的框架. Scikits-learn是基于python的工具.

【云图】自有数据的多边形检索(云检索)

原文:[云图]自有数据的多边形检索(云检索) 摘要:记录每天的生活轨迹,分享美食心得,哪里有免费停车,制作班级通讯录等等,都可以用到云图.无论你是开发者,还是app用户,都可以用云图制作一张属于你的专属地图. --------------------------------------------------------------------------------------------------------- 一.通过坐标拾取工具得到经纬度: http://zhaoziang.com/a

EI检索期刊JA检索与CA检索有什么区别?

1,CA(Conference article)检索通过国际会议宣读论文后收录入库. 2,JA( Journal article)检索没有开会宣读,也被EI入库收录了,发到期刊上 3,准确来说,CA检索和JA检索的区别,就在于文章是否被国际会议宣读过.如果被国际会议宣读了,就是CA检索:没有被宣读,就是JA检索.EI主要收录工程技术领域的重要文献,包括期刊以及会议文献,另外也收录一些科技报告.专著等.EI收录包括三种类型:被EI核心收录.非核心收录(Pageone收录).会议论文. 在职称评审和

Java实战之02Hibernate-05检索策略、检索方式

十一.Hibernate的检索策略 1.概述: 查询的时机:什么时候去查? 1 /** 2 * 一张表的检索策略我们称之为: 3 * 类级别的检索策略. 4 * 注意:只要是说类级别的检索策略,就一定不涉及关联对象. 5 * 6 * 类级别检索策略解决的问题: 7 * 1.查询的时机: 8 * 分为两种情况 9 * 立即加载:不管用不用,都马上查询出来 10 * 延迟加载:什么时候用,什么时候去查询.(懒加载,惰性加载) 11 12 * 13 *常用方法: 14 * get: 15 * 永远都是