mysql geocode_百度地图Geocoding API获取特定地区或地址的经纬度信息,然后在MySql数据库多表循环遍历更新...
1、数据库多表循环更新的思想在这个链接上,标题是“MySql多表循环遍历更新”,
链接地址http://www.cnblogs.com/litao4047/archive/2013/05/31/3108753.html先看看这个思想,如果你需要这样的思路... ...
2、“利用百度地图Geocoding API获取特定地区或地址的经纬度信息”,这个链接讲的是从百度地图API获取地址解析数据,为数据库表更新提供数据基础。http://www.cnblogs.com/litao4047/archive/2013/05/30/3107565.html
以上两个链接就是为下面的思路做铺垫的,方便我的讲述。。。
首先,要借用别人的服务,通过别人的服务接口获取自己想要的数据。Geocoding API 是百度提供的服务接口,主要是用于提供从地址解析到经纬度坐标或者从经纬度坐标解析到地址的转换服务。我们今天要说的就是地址解析,通过现有的地址数据解析服务,获取经纬度数据。代码示例如下:
public bool getLatitudeAndLongitude(string city, stringaddress)
{bool flag = true;
WebClient client= new WebClient();//webclient客户端对象
string url = "http://api.map.baidu.com/geocoder/v2/?ak=2ae1130ce176b453fb29e59a69b18407&callback=renderOption&output=xml&address=" + address + "&city=" +city;
client.Encoding= Encoding.UTF8;//编码格式
string responseTest = client.DownloadString(url);//下载xml响应数据
try{
XmlDocument doc= new XmlDocument();//创建XML文档对象
if (!string.IsNullOrEmpty(responseTest))
{
doc.LoadXml(responseTest);//加载xml字符串
doc.Save(@"F:\更新数据库\UpdataDataBase\UpdataDataBase\Location.xml");
flag= true;
}
}catch(Exception e)
{
flag= false;
}returnflag;
}
上面的代码我就不做具体是介绍了,基本上是从API上获取数据,然后呢,以xml文件格式存储在本地,方便更新的时候从本地读取数据。。
第二,就是读取上面存储的xml文件格式的数据,写个方法(传的参数是xml文件路径),将经纬度这两个数据存储在数组里面,返回数组。
//获取默认主页的数据
internal static string[] getDBInfo(stringpath)
{try{string[] _data = new string[2];
XmlDocument xmldoc= newXmlDocument();
xmldoc.Load(path);
XmlNodeList xnRoot= xmldoc.SelectNodes("/GeocoderSearchResponse/result/location");foreach (XmlNode node inxnRoot)
{
_data[0] = node.SelectSingleNode("lat").InnerXml.ToString();
_data[1] = node.SelectSingleNode("lng").InnerXml.ToString();
}return_data;
}catch(Exception settingEx)
{return null;
}
}
第三,获取到数据之后,建一个Model类
usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceUpdataDataBase
{//数据模型,存放数据
public classDataModel
{private stringid;public stringId
{get { returnid; }set { id =value; }
}private stringcity;private stringaddress;private decimallatitude;private decimallongitude;public stringCity
{get { returncity; }set { city =value; }
}public stringAddress
{get { returnaddress; }set { address =value; }
}public decimalLatitude
{get { returnlatitude; }set { latitude =value; }
}public decimalLongitude
{get { returnlongitude; }set { longitude =value; }
}
}
}
Data Model类
第四,连接数据库,以city,adress来查询数据(传参表名)
private static List GetDataConn(stringdataTable)
{
List dataSource = new List();using (MySqlConnection conn = newMySqlConnection(MySqlString))
{string MySqlSelect = "select id,city,address,latitude,longitude from" +dataTable;
MySqlCommand Command= newMySqlCommand(MySqlSelect, conn);
conn.Open();using (MySqlDataReader dataReader =Command.ExecuteReader())
{while(dataReader.Read())
{
DataModel dataModel= newDataModel();
dataModel.Id= dataReader["id"].ToString();
dataModel.City= (string)dataReader["city"];
dataModel.Address= (string)dataReader["address"];if (dataReader["latitude"] !=DBNull.Value)
{
dataModel.Latitude= (decimal)dataReader["latitude"];
}elsedataModel.Latitude= 0.0M;if (dataReader["longitude"] !=DBNull.Value)
{
dataModel.Latitude= (decimal)dataReader["longitude"];
}elsedataModel.Latitude= 0.0M;
dataSource.Add(dataModel);
}
dataReader.Close();
dataReader.Dispose();
}
conn.Close();
conn.Dispose();
}returndataSource;
}
连接数据库,查找数据
第五,更新方法(传四个参数) ,如下:
private static void UpdataDataBase(string id, string dataTable, decimal lat, decimallng)
{using (MySqlConnection conn = newMySqlConnection(MySqlString))
{string MySqlUpdata = "update" + dataTable + "set latitude=" + lat + ",longitude=" + lng + "where id=" +id;
MySqlCommand Command= newMySqlCommand(MySqlUpdata, conn);
conn.Open();
Command.ExecuteNonQuery();
conn.Close();
conn.Dispose();
}
}
最后,就是在Main()方法中调用,这个非常关键,提醒一点就是必须要做异常处理,否则将出现很多问题....
static void Main(string[] args)
{string[] tableName = new string[19];
tableName[0] = "data_abroadstudy_agency_info";
tableName[1] = "data_bank_atm";
tableName[2] = "data_car_repair";
tableName[3] = "data_childrenschool_info";
tableName[4] = "data_college_info";
tableName[5] = "data_daijia";
tableName[6] = "data_gasstation";
tableName[7] = "data_government_service_point";
tableName[8] = "data_highschool_info";
tableName[9] = "data_highway_service_station";
tableName[10] = "data_housecare_service_info";
tableName[11] = "data_juniorschool_info";
tableName[12] = "data_lawyer_service_info";
tableName[13] = "data_parkyard";
tableName[14] = "data_pet_hostpital";
tableName[15] = "data_pharmacy_info";
tableName[16] = "data_secondhand_car";
tableName[17] = "data_shopingmall_info";
tableName[18] = "data_train_plane_tickets_daishou";
GetLatitudeAndLongitude getLatLng= newGetLatitudeAndLongitude();int i = 0;for (i = 0; i < tableName.Length; i++)
{
List DataSource = new List();int h = 0;
DataSource=GetDataConn(tableName[i]);foreach (DataModel dm inDataSource)
{bool flag = false;string[] info = new string[2];
flag=getLatLng.getLatitudeAndLongitude(dm.City, dm.Address);try{if(flag)
{
info= XMLSettings.getDBInfo(@"F:\更新数据库\UpdataDataBase\UpdataDataBase\Location.xml");if (info[0].Length > 10)
dm.Latitude= Convert.ToDecimal(info[0].Substring(0, 10));else if (info[0].Length == 0)continue;elsedm.Latitude= decimal.Parse(info[0]);if (info[1].Length > 10)
dm.Longitude= Convert.ToDecimal(info[1].Substring(0, 10));elsedm.Longitude= Convert.ToDecimal(info[1]);
UpdataDataBase(dm.Id, tableName[i], dm.Latitude, dm.Longitude);
Console.WriteLine("第" + h + "条记录以更新");
h++;
}
}catch(Exception ex)
{continue;
}
}
Console.WriteLine(tableName[i]+ "此表已更新完毕!!!");
}
}
写到这,也算是结束了。毕竟也有很多不足之处,如果大家能够用到,就好好改善改善...
mysql geocode_百度地图Geocoding API获取特定地区或地址的经纬度信息,然后在MySql数据库多表循环遍历更新...相关推荐
- 百度地图JavaScript API获取用户当前经纬度和详细地理位置,反之通过详细地理位置获取当前经纬度...
前言: 前段时间刚好使用了百度地图的js api定位获取用户当前经纬度并获取当前详细位置和通过当前用户详细地理位置换取用户当前经纬度坐标的功能,为了方便下次找起来方便一些自己在这里记录一下,希望也能够 ...
- vue引入百度地图BMapGL,获取天地图根据名称显示坐标定位信息
1. 解决提示:解决调用百度地图API弹出提示 "百度未授权使用地图API,可能是因为您提供的密钥不是有效的百度LBS开放平台密钥"的方法 百度官网生成ak: https://lb ...
- mysql循环遍历获取_MySql多表循环遍历更新
先给大家解释解释发表这篇博文的主要思想是: MySql数据库中存在大量的表结构,而且这些表都存在一个共同点,就是表中都有相同字段,比如id,name,city,adress,lat,lng.表中字段i ...
- mysql循环更新_MySql多表循环遍历更新
先给大家解释解释发表这篇博文的主要思想是: MySql数据库中存在大量的表结构,而且这些表都存在一个共同点,就是表中都有相同字段,比如id,name,city,adress,lat,lng.表中字段i ...
- 百度地图web API定位不准,定位偏移问题处理
百度地图浏览器API 获取GPS定位是根据调用浏览器核心获取GPS,部分手机型号定位不准,主要是因为部分手机采用的是GOOGLE GPS坐标格式.部分手机用的是原生坐标格式 这两种格式百度地图无法 ...
- 百度地图js 定位并获得精确的地址信息
使用百度地图js api定位并获得精确地址: var map = new BMap.Map("map"); var geolocation = new BMap.Geolocati ...
- 根据百度地图的api自动获取地理位置
功能:根据百度地图的api 版本:php版本 步骤1:百度地图api使用方式,获取地理位置信息 function get_address($ip){$url = "http://api.ma ...
- 百度地图 mysql数据库_如何结合自己本地数据库,使用【百度地图】API
如何结合自己本地数据库,使用[百度地图]API 百度地图使用越来越多,官网上的示例数据都是写死的,实际上我们的开发中的数据都是从数据库中取出来的,最近看了很多大神的文章,结合自己本地数据库使用百度地图 ...
- 通过腾讯地图、高德地图、百度地图开发接口获取坐标对应的周边相关信息
通过腾讯地图.高德地图.百度地图开发接口获取坐标对应的周边相关信息 更新: 以前出于好意暴露了个人的KEY,现已被烂用.为不影响您的业务,请使用我的KEY的朋友去申请自己的KEY,我的KEY将在不久后 ...
最新文章
- photoshop基础教程视频-贺叶铭-传智播客-笔记
- Linux下备份cisco路由配置
- perl学习笔记——目录操作
- 我的世界怎么设置服务器维护中,我的世界服务器
- 维护建议--数据库备份
- Axure rp 8 基本用法图解之一
- 挥泪告别鼠标,我终究还是学会了Windows快捷键
- 这个开源好用的数据库建模工具,让我眼前一亮
- opencv安装路径以及使用
- 笔记本计算机(Legion)快捷键(加快编辑速度)
- [OfficeExcel] OfficeExcel2010 第23讲 Excel饼图美化与PPT图表
- 腾讯视频获取 MP4格式源并下载
- 用html5做心,HTML5 Canvas实现玫瑰曲线和心形图案的代码实例
- 计算机游戏155,MAME0.155经典1430款游戏合集
- Windows安全检查脚本 bat 批处理
- Stanford Algorithms 斯坦福算法课
- 不看公式自己复原魔方
- 在群晖中批量删除重复文件
- 使用word2vec分析红楼梦中的人物
- 三味眼中的十二“最”……