java中从高德地图爬取数据

高德POI数据采集笔记 高德POI数据采集 阅读详情

    最近一个人负责公司的一个app项目开发,需要从高德地图爬取杭州市全部的超市信息,放入mongodb的数据库中。做地理位置查询。(mongodb这部分有时间补上)


   首先去高德地图创建一个开发者账号,获取一个开发web服务的高德key.这个是必须要有的,可以用我这个从百度到的key试一下。


 废话不说了直接上代码

package com.pingogo.visit.service;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.pingogo.api.common.HttpUtils;
import com.pingogo.visit.domain.Shop;
import jxl.Cell;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
//import org.apache.poi.ss.usermodel.Workbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.*;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * Created by cw on 2017/8/29.
 *
 */
public class AddressLngLatExchange {
    private static final String KEY = "389880a06e3f893ea46036f030c94700";
    private static final String OUTPUT = "JSON";
    private static final String GET_LNG_LAT_URL = "http://restapi.amap.com/v3/geocode/geo";

    private static final String GET_LNG_PIO_URL = "http://restapi.amap.com/v3/place/polygon";

    private static final Logger LOGGER = LoggerFactory.getLogger(AddressLngLatExchange.class);


    //获取指定地点经纬度
    public static String[] getLngLatFromOneAddr(String address){
        if(StringUtils.isBlank(address)) {
            LOGGER.error("地址(" + address + ")为null或者空");
            return null;
        }
        Map<String, String> params = new HashMap<String, String>();
        params.put("address", address);
        params.put("output", OUTPUT);
        params.put("key", KEY);
        String result = HttpUtils.URLPost(GET_LNG_LAT_URL,params,"");
        JSONObject jsonObject = JSONObject.parseObject(result);
        String[] lngLatArr = new String[2];
        //拿到返回报文的status值,高德的该接口返回值有两个:0-请求失败,1-请求成功;
        int status = Integer.valueOf(jsonObject.getString("status"));
        if(status == 1) {
            JSONArray jsonArray = jsonObject.getJSONArray("geocodes");
            for(int i = 0; i < jsonArray.size(); i++) {
                JSONObject json = jsonArray.getJSONObject(i);
                String lngLat = json.getString("location");
                 lngLatArr = lngLat.split(",");
            }
        } else {
            String errorMsg = jsonObject.getString("info");
            LOGGER.error("地址(" + address + ")" + errorMsg);
        }
        return lngLatArr;
    }

    public static List<Shop> initialData(String lonLat, String keyword, List<Shop> shopListSon){
        if(StringUtils.isBlank(keyword)) {
            LOGGER.error("地址(" + keyword + ")为null或者空");
        }
        Map<String, String> params = new HashMap<String, String>();
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e1) {
            e1.printStackTrace();
        }
        params.put("polygon", lonLat);//"118.21,29.11;120.30,30.33"
        params.put("output", OUTPUT);
        params.put("keywords", keyword);
        params.put("offset", "20");
        params.put("page", "1");
        params.put("key", KEY);
        String result = HttpUtils.URLGet(GET_LNG_PIO_URL,params,"UTF-8");
        JSONObject jsonObject = JSONObject.parseObject(result);
        int statusOne = Integer.valueOf(jsonObject.getString("status"));
        //第一次获取数据时做的判断
        if(statusOne==1){
            int count=Integer.valueOf(jsonObject.getString("count"));
            int pageNumber=count/20;
            int remainder=count%20;
            if(remainder>0)pageNumber=pageNumber+1;
            for(int i=1;i<=pageNumber;i++){
                params.put("page", String.valueOf(i));
                result = HttpUtils.URLGet(GET_LNG_PIO_URL,params,"UTF-8");
                JSONObject jsonObject2 = JSONObject.parseObject(result);
                System.out.println("+++++++++"+result);
                //拿到返回报文的status值,高德的该接口返回值有两个:0-请求失败,1-请求成功;
                int status = Integer.valueOf(jsonObject2.getString("status"));
                if(status == 1) {
                    JSONArray jsonArray = jsonObject2.getJSONArray("pois");
                    if(jsonArray.size()>0){
                        for(int j =0;j<jsonArray.size();j++){
                            Shop shop =new Shop();
                            JSONObject jsonObject1 =jsonArray.getJSONObject(j);
                            shop.setShopName(jsonObject1.getString("name"));
                            shop.setSpecificAddress(jsonObject1.getString("address"));
                            shop.setId(jsonObject1.getString("id"));
                            String [] initLonLat =jsonObject1.getString("location").split(",");
                            shop.setLongitude(initLonLat[0]);
                            shop.setLatitude(initLonLat[1]);
                            shopListSon.add(shop);
                            //DBObject  doci = new BasicDBObject("shopId", "300"+i).append("shopName", "人生得意"+i).append("shopStatus",0).append("specificAddress","天堂"+i).append("gps", new Point(new Position(lon, lat)));

                        }
                    }

                } else {
                        String errorMsg = jsonObject.getString("info");
                        LOGGER.error("地址(" + keyword + ")" + errorMsg);
                }
            }

        }
        return shopListSon;

    }

    //从高德地图上取数据
//    public static void main(String[] args) {
//        List<Shop> listShop =new ArrayList<>();
//        //东经118°21′-120°30′,北纬29°11′-30°33′。杭州位置
//        for(double i=118.20;i<=120.31;i=i+0.1){
//            for(double j=29.10;j<=30.33;j=j+0.1){
//                List<Shop> listShopSon =new ArrayList<>();
//                double lonHead=i;
//                double latHead=j;
//                double lonTail=i+0.1;
//                double latTail=j+0.1;
//                String LonLat=lonHead+","+latHead+";"+lonTail+","+latTail;
//                listShopSon =initialData(LonLat,"便利店",listShopSon);
//                for(int n=0;n<listShopSon.size();n++){
//                    System.out.println("店铺地址:"+listShopSon.get(n).getSpecificAddress());
//                }
//                if(listShopSon.size()>0){
//                    listShop.addAll(listShopSon);
//                }
//                System.out.println("ListShop的大小:"+listShop.size());
//                double d =Distance(lonHead,latHead,lonTail,latTail);
//                System.out.println("两点距离"+d);
//
//            }
//
//        }
//
//        System.out.println("ListShop的大小:"+listShop.size());
//        creatExcel(listShop);
//    }

    public static void main(String[] args) {
        readFile("D:\\geode\\222.xls");
    }


    //写入excel中
    public static void creatExcel(List<Shop> shopList){
        HSSFWorkbook workbook = new HSSFWorkbook();
        //第二部,在workbook中创建一个sheet对应excel中的sheet
        HSSFSheet sheet = workbook.createSheet("高德地图数据");
        //第三部,在sheet表中添加表头第0行,老版本的poi对sheet的行列有限制
        HSSFRow row = sheet.createRow(0);
        //第四步,创建单元格,设置表头
        HSSFCell cell = row.createCell(0);
        cell.setCellValue("店铺id");
        cell = row.createCell(1);
        cell.setCellValue("店铺名称");
        cell = row.createCell(2);
        cell.setCellValue("店铺地址");
        cell = row.createCell(3);
        cell.setCellValue("经度");
        cell = row.createCell(4);
        cell.setCellValue("纬度");

        //第五步,写入实体数据,实际应用中这些数据从数据库得到,对象封装数据,集合包对象。对象的属性值对应表的每行的值
        for (int i = 0; i < shopList.size(); i++) {
            HSSFRow row1 = sheet.createRow(i + 1);
            Shop shop = shopList.get(i);
            //创建单元格设值
            row1.createCell(0).setCellValue(shop.getId());
            row1.createCell(1).setCellValue(shop.getShopName());
            row1.createCell(2).setCellValue(shop.getSpecificAddress());
            row1.createCell(3).setCellValue(shop.getLongitude());
            row1.createCell(4).setCellValue(shop.getLatitude());
        }

        //将文件保存到指定的位置
        try {
            FileOutputStream fos = new FileOutputStream("D:\\geode\\高德便利店地图数据.xls");
            workbook.write(fos);
            System.out.println("写入成功");
            fos.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static double Distance(double long1, double lat1, double long2, double lat2) {
        double a, b, R;
        R =6371; // 地球半径 6371km
        lat1 = lat1 * Math.PI / 180.0;
        lat2 = lat2 * Math.PI / 180.0;
        a = lat1 - lat2;
        b = (long1 - long2) * Math.PI / 180.0;
        double d;
        double sa2, sb2;
        sa2 = Math.sin(a / 2.0);
        sb2 = Math.sin(b / 2.0);
        d = 2
                * R
                * Math.asin(Math.sqrt(sa2 * sa2 + Math.cos(lat1)
                * Math.cos(lat2) * sb2 * sb2));
        BigDecimal bigDecimal = new BigDecimal(d*1000);
        Double din = bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
        return din ;
    }

    public static List<Shop> readFile(String filename){
        List<Shop> shopList =new ArrayList<>();
        Workbook wb=null;
        Cell cell=null;
        try {
            File f=new File(filename);
            InputStream in=new FileInputStream(f);             //创建输入流
            wb= Workbook.getWorkbook(in);               //获取Excel文件对象
            jxl.Sheet s=wb.getSheet(0);                        //获取文件的指定工作表,默认为第一个
            String value=null;
            for(int i=1;i<s.getRows();i++){//表头目录不需要,从第一行开始
                Shop shop =new Shop();
                for(int j=0;j<s.getColumns();j++){
                    cell=s.getCell(j, i);
                    value=cell.getContents();
                    if(j==0){
                        shop.setId(value);
                    }else if(j==1){
                        shop.setShopName(value);
                    }else if(j==2){
                        shop.setSpecificAddress(value);
                    }else if(j==3){
                    shop.setLongitude(value);
                    }else if(j==4){
                    shop.setLatitude(value);
                    }
                  //  System.out.println("value:"+value);
                }
                shopList.add(shop);
            }

        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (BiffException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return shopList;
    }
}

由于高德地图对他的数据做了保护,我这边采用的是矩形搜索。 百度到杭州的经纬度划分成多个小矩形,然后调用高德地图的API服务。我这边将爬取的数据写入excel表格中,一是为了展示验证数据是否准确,二是怕直接写入会不会有内存泄漏问题。我上面的代码有写入excel和读取excel的代码。不过要注意一下 我用得jar包不同。写入用的poi,读取用的是jxl.


这边调用http请求是客户端,代码如下。是在网上找到的,首先谢谢分享的人。因为有段时间,原文地址忘记了。一开始用的是

URL myURL = null;
URLConnection httpsConn = null;
try {
    myURL = new URL(url);
} catch (MalformedURLException e) {
    e.printStackTrace();
}
InputStreamReader insr = null;
BufferedReader br = null;
httpsConn = (URLConnection) myURL.openConnection();// 不使用代理
然后在tomcat项目中调用时,报错了,原因现在还没有弄清楚,知道原因的告诉我一二。

package com.pingogo.api.common;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 * HTTP工具类
 *
 * @author lixiangyang
 *
 */
public class HttpUtils {

    private static Log log = LogFactory.getLog(HttpUtils.class);

    /**
     * 定义编码格式 UTF-8
     */
    public static final String URL_PARAM_DECODECHARSET_UTF8 = "UTF-8";

    /**
     * 定义编码格式 GBK
     */
    public static final String URL_PARAM_DECODECHARSET_GBK = "GBK";

    private static final String URL_PARAM_CONNECT_FLAG = "&";

    private static final String EMPTY = "";

    private static MultiThreadedHttpConnectionManager connectionManager = null;

    private static int connectionTimeOut = 25000;

    private static int socketTimeOut = 25000;

    private static int maxConnectionPerHost = 20;

    private static int maxTotalConnections = 20;

    private static HttpClient client;

    static{
        connectionManager = new MultiThreadedHttpConnectionManager();
        connectionManager.getParams().setConnectionTimeout(connectionTimeOut);
        connectionManager.getParams().setSoTimeout(socketTimeOut);
        connectionManager.getParams().setDefaultMaxConnectionsPerHost(maxConnectionPerHost);
        connectionManager.getParams().setMaxTotalConnections(maxTotalConnections);
        client = new HttpClient(connectionManager);
    }

    /**
     * POST方式提交数据
     * @param url
     *          待请求的URL
     * @param params
     *          要提交的数据
     * @param enc
     *          编码
     * @return
     *          响应结果
     * @throws IOException
     *          IO异常
     */
    public static String URLPost(String url, Map<String, String> params, String enc){
        enc=URL_PARAM_DECODECHARSET_UTF8;
        String response = EMPTY;
        PostMethod postMethod = null;
        try {
            postMethod = new PostMethod(url);
            postMethod.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=" + enc);
            //将表单的值放入postMethod中
            Set<String> keySet = params.keySet();
            for(String key : keySet){
                String value = params.get(key);
                postMethod.addParameter(key, value);
            }
            //执行postMethod
            int statusCode = client.executeMethod(postMethod);
            if(statusCode == HttpStatus.SC_OK) {
                response = postMethod.getResponseBodyAsString();
            }else{
                log.error("响应状态码 = " + postMethod.getStatusCode());
            }
        }catch(HttpException e){
            log.error("发生致命的异常,可能是协议不对或者返回的内容有问题", e);
            e.printStackTrace();
        }catch(IOException e){
            log.error("发生网络异常", e);
            e.printStackTrace();
        }finally{
            if(postMethod != null){
                postMethod.releaseConnection();
                postMethod = null;
            }
        }

        return response;
    }

    /**
     * GET方式提交数据
     * @param url
     *          待请求的URL
     * @param params
     *          要提交的数据
     * @param enc
     *          编码
     * @return
     *          响应结果
     * @throws IOException
     *          IO异常
     */
    public static String URLGet(String url, Map<String, String> params, String enc){

        String response = EMPTY;
        GetMethod getMethod = null;
        StringBuffer strtTotalURL = new StringBuffer(EMPTY);

        if(strtTotalURL.indexOf("?") == -1) {
            strtTotalURL.append(url).append("?").append(getUrl(params, enc));
        } else {
            strtTotalURL.append(url).append("&").append(getUrl(params, enc));
        }
        log.debug("GET请求URL = \n" + strtTotalURL.toString());

        try {
            getMethod = new GetMethod(strtTotalURL.toString());
            getMethod.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=" + enc);
            //执行getMethod
            int statusCode = client.executeMethod(getMethod);
            if(statusCode == HttpStatus.SC_OK) {
                response = getMethod.getResponseBodyAsString();
            }else{
                log.debug("响应状态码 = " + getMethod.getStatusCode());
            }
        }catch(HttpException e){
            log.error("发生致命的异常,可能是协议不对或者返回的内容有问题", e);
            e.printStackTrace();
        }catch(IOException e){
            log.error("发生网络异常", e);
            e.printStackTrace();
        }finally{
            if(getMethod != null){
                getMethod.releaseConnection();
                getMethod = null;
            }
        }

        return response;
    }

    /**
     * 据Map生成URL字符串
     * @param map
     *          Map
     * @param valueEnc
     *          URL编码
     * @return
     *          URL
     */
    private static String getUrl(Map<String, String> map, String valueEnc) {

        if (null == map || map.keySet().size() == 0) {
            return (EMPTY);
        }
        StringBuffer url = new StringBuffer();
        Set<String> keys = map.keySet();
        for (Iterator<String> it = keys.iterator(); it.hasNext();) {
            String key = it.next();
            if (map.containsKey(key)) {
                String val = map.get(key);
                String str = val != null ? val : EMPTY;
                try {
                    str = URLEncoder.encode(str, valueEnc);
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }
                url.append(key).append("=").append(str).append(URL_PARAM_CONNECT_FLAG);
            }
        }
        String strURL = EMPTY;
        strURL = url.toString();
        if (URL_PARAM_CONNECT_FLAG.equals(EMPTY + strURL.charAt(strURL.length() - 1))) {
            strURL = strURL.substring(0, strURL.length() - 1);
        }

        return (strURL);
    }
}

maven里的配置

<dependency>
    <groupId>commons-httpclient</groupId>
    <artifactId>commons-httpclient</artifactId>
    <version>3.1</version>
</dependency

最后给大家看一下我爬取出来的数据



如果有什么不对的地方,希望大家指点。


试一下付款二维码



高德地图、google、openstreenmap地图瓦片数据爬取--java代码(地图数据篇.3) 注:相关文件下载地址,在文章末尾处 爬取结果图如下,爬取后的瓦片数据可通过nginx,tomcat进行发布即可。 爬取类 package cbc.boot.myboot.tools.map.gcj02; import cbc.boot.myboot.tools.map.gcj02.LatLngToTileUtil; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java 阅读详情

相关推荐

手把手教你一键获取POI数据

POI数据具有样本量大、涵盖信息细致等优势,在大尺度的规划项目中,通过对该数据进行处理、分析,定量划分城市单一功能区和混合功能区,研究结果可以更好地理解城市空间结构,给城市规划提供借鉴及参考。:在系统变量栏中找到“Path”变量并点击“编辑”,并选择新窗口中的“编辑文本”。”即可完成环境配置。:之后我们需要在电脑属性中找到“高级系统设置”,并打开窗口中的“环境变量”按钮。在信息列表中可以看到所有静安区的便民商店POI的信息都在GIS中显示,我们可以按照以上方式根据自己的需求使用插件,大家快用起来吧!

J_Giser的博客 1644

【爬虫】Java关于高德地图爬取数据

不管是目前什么行业,对数据分析和做出合适的判断才是最重要的选择,比如,在某一个城市开一家餐馆,可以去了解这个城市目前一共有多少餐馆,分别那种菜系占比最多,大概菜系的分布范围等等信息,都可以通过爬虫的数据获得更好的分析和抉择。 总结步骤如下: 到高德开放平台 | 高德地图API注册账号,并且申请web服务的AK密钥,每次发送请求需要带着这个key去认证。注册账号登陆后点击右上角的控制台 ...

一起记录GIS学习 5673

java实现爬取省市区县镇乡区域信息.zip

基于Java使用Jsoup爬取省市区乡镇的源码,随时可以用相对新的数据了,需要的自行下载,适合爬虫新手练习

Java 正则表达式实现爬虫套路,爬取手机号,电话,邮箱信息

Java 正则表达式实现爬虫套路,爬取手机号,电话,邮箱信息 10秒读懂爬虫流程

cfqp123456的博客 2145

关于通过百度地图API采集POI数据,并存储到HBase的项目。_poi-parent.zip

关于通过百度地图API采集POI数据,并存储到HBase的项目。_poi-parent

闲鱼虚拟商品自动发货神器XianYuAutoDeliveryX:从配置到对接大模型的完整指南

本文提供了一份关于闲鱼虚拟商品自动发货神器XianYuAutoDeliveryX的完整配置与实战指南。详细介绍了从环境搭建、账号安全配置到核心自动化流程的设置,并重点讲解了如何对接大语言模型API,实现智能对话回复,从而构建一套无人值守的闲鱼店铺自动化运营系统。

gray5的博客 1372

SpringCloud Alibaba入门简介

第十七章 SpringCloud Alibaba入门简介 一、为什么使用Alibaba 1.因为:spring netflix进入维护模式 https://spring.io/blog/2018/12/12/spring-cloud-greenwich-rc1-available-now#spring-cloud-netflix-projects-entering-maintenance-mode 什么是维护模式:spring cloud团队将不会再向模块添加新功能,我们将修复block级别的bug以及安全

Brew的博客 6510

PC微信逆向:破解聊天记录文件!_读取别人pc微信msg文件

本文详细介绍了PC版微信数据库的解密方法,总结了前人经验并补充了关键细节。通过OllyDbg调试工具从微信内存中获取32字节加密密钥,使用C++结合OpenSSL库实现解密程序。重点解决了开发环境配置问题,包括Visual Studio项目设置和OpenSSL库的版本适配,将原本固定的数据库路径改为参数化输入,提高了工具的通用性。该方案为电子取证中的微信数据提取提供了完整的技术路径,避免了研究者重复探索已解决的问题。

zz96405784848的博客 9752

Redis:黑马点评项目之用户短信登录

一、表结构 建表sql语句: /* Navicat Premium Data Transfer Source Server : local Source Server Type : MySQL Source Server Version : 50622 Source Host : localhost:3306 Source Schema : hmdp Target Server Type : MySQL Target Se

m0_49569564的博客 4万+

基于Quartus II软件的FPGA综合实验——多功能数字钟

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、设计要求二、设计原理三、设计过程1.数码管扫描模块2.计时模块3.闹钟模块4.闹钟响铃模块5.数码管显示模块6.整点报时功能7.模式选择模块(计时器主控电路)四、实验中遇到的困难及解决方案五、总结 前言 FPGA综合实验——多功能数字钟 基于Quartus II软件 一、设计要求 设计一个能进行时、分、秒计时的十二小时制或二十四小时制的数字钟,并具有定时与闹钟功能,能在设定的时间发出闹铃音,能非常方便地对小时、分钟和秒进.

qq_53022342的博客 2万+

Ubuntu 24.04 极速部署 Dify:从零到一的保姆级实践

本文详细介绍了在Ubuntu 24.04系统上快速部署Dify的完整教程,从环境准备到部署验证,再到深度优化和安全加固,提供了一套保姆级的实践指南。通过使用Docker和Docker Compose,结合国内镜像源加速,帮助用户高效完成Dify的安装和配置,确保系统稳定运行。

weixin_42662293的博客 245

java 高德地图数据库_【爬虫】Java关于高德地图爬取数据

​ 不管是目前什么行业,对数据分析和做出合适的判断才是最重要的选择,比如,在某一个城市开一家餐馆,可以去了解这个城市目前一共有多少餐馆,分别那种菜系占比最多,大概菜系的分布范围等等信息,都可以通过爬虫的数据获得更好的分析和抉择。总结步骤如下:到高德开放平台 | 高德地图API注册账号,并且申请web服务的AK密钥,每次发送请求需要带着这个key去认证。注册账号登陆后点击右上角的控制台 ->应...

weixin_39640203的博客 857

【STM32实物】基于STM32的扫地机器人/小车控制系统设计

扫地机器人系统采用分层结构设计,主要包括底层硬件控制层、中间数据处理层和上层用户交互层。底层硬件控制层负责对各个硬件模块进行控制和数据采集,中间数据处理层负责对采集到的数据进行处理和解算,上层用户交互层负责与用户进行交互并显示系统状态信息。

嵌入式阿齐Archie 1万+

python爬高德地图_【爬虫】Java关于高德地图爬取数据

​不管是目前什么行业,对数据分析和做出合适的判断才是最重要的选择,比如,在某一个城市开一家餐馆,可以去了解这个城市目前一共有多少餐馆,分别那种菜系占比最多,大概菜系的分布范围等等信息,都可以通过爬虫的数据获得更好的分析和抉择。总结步骤如下:到高德开放平台 | 高德地图API注册账号,并且申请web服务的AK密钥,每次发送请求需要带着这个key去认证。注册账号登陆后点击右上角的控制台 ->应用...

weixin_39854070的博客 700

VMware ESXi 系统里创建虚拟机,虚拟磁盘日志损坏,如何或者把数据备份?

🏆本文收录于《全栈Bug调优(实战版)》专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

**My Coding Family** 1638

实时数字人SoulX-FlashHead 音视频不对齐解决

【代码】实时数字人SoulX-FlashHead 音视频不对齐解决。

jacke121的专栏 200

java中poi搜索工程_爬取高德地图poi数据

高德地图搜索poi的api介绍地址当前想法是爬取目标区域(作者所在小县城)的所有poi数据,存到数据库中作为原始数据,然后供其它系统调用,因为之前爬取过百度地图的poi数据,所以这次工作就驾轻就熟了。1、首先注册一个高德地图的开发者账号,申请一个绑定Web服务的key,然后把刚注册的开发者账号认证一下: 申请账号、key就不赘述了,去高德地图开发平台很简单就能完成了,将账号认证是为了提高每日访问高...

weixin_35702486的博客 1250

【win10】win 10 电脑喇叭音频显示红叉的处理方法

目录 一、报错情况 二、“音频服务未运行”解决方法 三、“未插入扬声器或耳机”解决方法 一、报错情况 (1)当电脑的扬声器喇叭图标上带有红X符号,提示“音频服务未运行”时: (2)小喇叭上面有红叉,显示“未插入扬声器或耳机”时: 二、“音频服务未运行”解决方法 (1)开始菜单搜索“服务”: (2)没有启动的点击“启动”,已启动的点击“重新启动”: (3)继续,右...

顾三殇 —— 博客空间(软件测试) 17万+

python爬高德地图_java中从高德地图爬取数据

废话不说了直接上代码importjava.io.*;importjava.math.BigDecimal;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;/***Createdbycwon2017/8/29.**/publicclassAd...

weixin_34222309的博客 305

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

python爬取高德数据_大牛分享爬取高德地图poi数据实战

//请求入口 publicvoidGaodePoiSearch(){//徐水区 final RectangleCoordinate searchAreaCoordinate = new RectangleCoordinate(115.521773, 39.106335, 115.801182, 38.943988); //保定市//final RectangleCoordinate sear...

weixin_39542608的博客 592

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

java poi 删除列_高德地图POI数据爬取

weixin_39548733的博客 146

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

高德地图 省市区 地理编码

packagetest; importjava.sql.Connection; importjava.sql.PreparedStatement; importjava.sql.SQLException; importjava.util.ArrayList; importjava...

chuichaolao0709的博客 4130

高德地图POI数据处理实战:从数据获取到智能分析全流程

还在为高德地图POI数据处理而烦恼?面对海量兴趣点数据,传统方法效率低下、操作复杂,让无数开发者望而却步。本文将为您揭示一套完整的高效数据处理解决方案,助您轻松应对各类地理信息处理挑战。🎯 ## 痛点分析:POI数据处理的四大难题 **数据获取效率低**:单线程爬取耗时过长,面对城市级数据束手无策 **任务中断风险高**:Key配额耗尽导致任务终止,前功尽弃 **格式兼容性差**:不同系

gitblog_00517的博客 726

如何快速配置AMapPoi:POI数据爬取新手指南

AMapPoi是一个基于Java开发的高效POI(兴趣点)搜索与地理编码工具,专注于简化地理位置数据的采集、转换和分析流程。这款工具支持多线程并发处理、多种数据格式输出和坐标系统转换,让开发者能够轻松获取和管理地理信息数据。 ## 🚀 项目核心功能介绍 AMapPoi工具集成了POI数据爬取、地理编码、格式转换和坐标系统转换四大核心功能模块。通过简洁的图形界面,用户可以快速配置高德API参数

gitblog_00980的博客 238

简单递归解析高德地图实施区县JSON然后入库

JSON结构如下: 县级的districts可能还有街道,结构跟县级一致 JSON爬取地址:https://lbs.amap.com/api/webservice/guide/api/district/?sug_index=1 表结构如下: CREATE TABLE `t_gaode_address` ( `ad_code` varchar(20) DEFAULT NULL CO...

weixin_42610529的博客 794

java爬取高德地图poi(兴趣点)_无需注册开发者账号

因项目需要爬取XX市XX区的poi信息,上网找了很多的教程,都需要注册高德的开发控制台,通过调用高德提供的api方式获取poi信息,但是有次数限制。所以自己搞了个"爬虫"。 1、思路: 打开高德地图浏览时,拖地地图,会调用https://ditu.amap.com/service/regeo?longitude=XXX&latitude=XXX接口,此接口是不需要鉴权的,该接口的作用是定位,将你所处位置的gps点输入进去后,将会返回附近的几个定位点。思路油然而生,我将所要爬取范围的所有gps点一个个

zhang7249的博客 2720
上一篇: Java中线程池ExecutorService详细
下一篇: Git上初次提交项目,报Please tell me who you are错误
Java_wucao
博客等级 码龄11年 272粉丝 42原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java_wucao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值