• 百度地图地址解析(百度Geocoding API)


    1.什么是Geocoding?

    Geocoding API 是一类简单的HTTP接口,用于提供从地址到经纬度坐标或者从经纬度坐标到地址的转换服务,用户可以使用C# 、C++、Java等开发语言发送HTTP请求且接收JSON、XML的返回数据。

    2.功能介绍

    Geocoding API包括地址解析和逆地址解析功能。

    • 地理编码:即地址解析,由详细到街道的结构化地址得到百度经纬度信息,且支持名胜古迹、标志性建筑名称直接解析返回百度经纬度。例如:“北京市海淀区中关村南大街27号”地址解析的结果是“lng:116.31985,lat:39.959836”,“百度大厦”地址解析的结果是“lng:116.30815,lat:40.056885”
    • 逆地理编码,即逆地址解析,由百度经纬度信息得到结构化地址信息。例如:“lat:31.325152,lng:120.558957”逆地址解析的结果是“江苏省苏州市虎丘区塔园路318号”。
    3.如何使用

    百度地图Geocoding API是一套免费对外开放的API,无使用次数限制。使用方法:

    第一步:申请ak(即获取密钥),若无百度账号则首先需要注册百度账号

    第二步,拼写发送http请求的url,注意需使用第一步申请的ak。

    第三步,接收http请求返回的数据(支持json和xml格式)。

    以下是一个关于地理编码的简单示例。发送一个地址是“百度大厦”的请求,返回该地址对应的地理坐标。发送请求的url如下:

    http://api.map.baidu.com/geocoder/v2/?address=百度大厦&output=json&ak=E4805d16520de693a3fe707cdc962045&callback=showLocation 
    4.java调用测试
     View Code

    运行结果:

    5.简单应用

    期望实现功能:

    input.txt存放中文地址
    从input.txt中读取中文地址,获得经纬度
    将中文地址以及经纬度输出到output.txt中
     View Code

    运行测试结果:

     

    6.改进

    上面的解决方案使用单线程,数据量小的情况下还可以勉强使用。但是当数据量巨大时,耗时就非常的长(测试使用15000条地址数据差不多用了1小时)。考虑到耗费的时间主要花费在获取经纬度时服务器的响应上,因此考虑使用多线程。

    从input.txt读入,然后将地址信息切分为多个数组,为每一个数组开一个线程,转换后统一输出到output.txt

    实现代码:

     View Code
     View Code
    7.不足

    1,网速不好的情况下,开100个线程会出现 java.net.SocketTimeoutException: connect timed out错误。

    虽然使用了uc.setConnectTimeout(10000);   uc.setReadTimeout(10000); 但是没有起到效果。(求改进)

    2,所有的数据都会放在内存上,当数据量到达千万级别时候,会内存不足。(求改进)

    8.引用

    http://developer.baidu.com/map/webservice-geocoding.htm  

    http://www.cnblogs.com/gzggyy/archive/2013/06/21/3148610.html

    http://lavasoft.blog.51cto.com/62575/99150

    http://www.360doc.com/content/13/0422/09/3776353_280044198.shtml

  • 相关阅读:
    github常见操作和常见错误!错误提示:fatal: remote origin already exists.
    [vim]vim 在win下乱码解决
    [git]图解git常用命令
    [vim配置]windows下在vim中使用gcc/g++编译调试c/cpp文件
    windows live writer 尝试登陆时发生意外错误,导致无法发表博客解决方案
    win7系统cmd命令切换到指定文件夹目录
    qt中文乱码问题
    免费Flash图表工具FusionChart
    将matlab中数据输出保存为txt或dat格式
    对接支付宝的城市服务(水费)
  • 原文地址:https://www.cnblogs.com/shamo89/p/9901933.html
Copyright © 2020-2023  润新知