经纬度转换地址

anssin用的是高德地图,实现逆地理位置,首先需要去高德地图开放平台(https://lbs.amap.com/)获取key

我的key就不分享给大家了

逆地理位置用的是http请求 在maven项目里面导入http请求工具包的依赖就可以

<!--发送HTTP请求的Java工具包 -->
<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.7</version>
</dependency>
http请求api
val httpclient = HttpClients.createDefault
val httpGet = new HttpGet(s"https://restapi.amap.com/v3/geocode/regeo?&location=$longitude,$latitude&key=$key")
val response = httpclient.execute(httpGet)
package cn.spark.teacherText.gaodeMapimport java.utilimport cn.spark.teacherText.gaodeMap.Utlis.HbaseUtils
import com.alibaba.fastjson.{JSON, JSONException}
import org.apache.hadoop.hbase.client.{Put, Table}
import org.apache.hadoop.hbase.util.Bytes
import org.apache.http.client.methods.HttpGet
import org.apache.http.impl.client.HttpClients
import org.apache.http.util.EntityUtils
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}object OrderMap2 {val key = "key"def main(args: Array[String]): Unit = {val isLocal = args(0).toBooleanval conf = new SparkConf().setAppName(this.getClass.getSimpleName)if(isLocal) {conf.setMaster("local[*]")}val sc = new SparkContext(conf)val lines = sc.textFile(args(1))//将数据进行解析val beanRDD: RDD[OrderMapBean] = lines.map(line => {var orderBean: OrderMapBean = nulltry {orderBean = JSON.parseObject(line, classOf[OrderMapBean])} catch {case e: JSONException => {//记录有问题的数据,HDFS、MySQL、打Log//logger.error("parse json error :", line)}}orderBean})//将空数据过滤掉val filtered = beanRDD.filter(_ != null)val n = args(2).toInt//调用一个Transformation 关联维度信息(根据经纬度查询地理位置信息)val orderDetailWithLocation: RDD[OrderMapBean] = filtered.mapPartitions(it => {//Executor端不用序列化 每个分区进行逆地理val httpclient = HttpClients.createDefaultit.foreach(e => {//关联经纬度val longitude = e.longitudeval latitude = e.latitude//发送http请求val httpGet = new HttpGet(s"https://restapi.amap.com/v3/geocode/regeo?&location=$longitude,$latitude&key=$key")//响应val response = httpclient.execute(httpGet)//获取存在的对象val entity = response.getEntityvar province: String = nullvar city: String = null//判断响应的状态编号if (response.getStatusLine.getStatusCode == 200) {//获取请求的json字符串val result = EntityUtils.toString(entity)//转成json对象val jsonObj = JSON.parseObject(result)//获取位置信息val regeocode = jsonObj.getJSONObject("regeocode")if (regeocode != null && !regeocode.isEmpty) {val address = regeocode.getJSONObject("addressComponent")//获取省市区province = address.getString("province")city = address.getString("city")//过滤直辖市if (province.equals("北京市") || province.equals("上海市") || province.equals("天津市") || province.equals("重庆市")) {val district = address.getString("district")city = district}}}e.province = provincee.city = city//将迭代器中数据迭代完后在关闭连接if (!it.hasNext) httpclient.close()})it})//将结果写到Hbase orderDetailWithLocation.foreachPartition(it => {//创建表对象val htable: Table = HbaseUtils.getHbaseTable("orders_map")//创建一个容器放putval puts = new util.ArrayList[Put](n)var i = 0//将每条数据关联高德地图逆地理位置解析it.foreach(e => {//将oid做行键val put = new Put(Bytes.toBytes(e.oid))//导入数据put.addColumn(Bytes.toBytes("info"), Bytes.toBytes("cid"), Bytes.toBytes(e.cid))put.addColumn(Bytes.toBytes("info"), Bytes.toBytes("money"), Bytes.toBytes(e.money))put.addColumn(Bytes.toBytes("info"), Bytes.toBytes("province"), Bytes.toBytes(e.province))put.addColumn(Bytes.toBytes("info"), Bytes.toBytes("city"), Bytes.toBytes(e.city))//把数据放入到puts中puts.add(put)i += 1if(i % n == 0) {//每N条批量写入一次htable.put(puts)//写完清理容器puts.clear()}})//批量写入htable.put(puts)//关闭资源htable.close()})}
}
case class OrderMapBean(var  oid : String,var cid : Int,var name : String,var money : Double,var longitude : Double,var latitude : Double,var province: String,var city: String)

SPARK 笔记 (五) 经纬度转换地址相关推荐

  1. 腾讯地图api php经纬度转换地址,腾讯地图经纬度转换为百度地图经纬度

    ‍ 利用微信来获取用户当前的详细地址是非常方便的,但是利用微信获取到用户的经纬度转换为具体地址时,老是出现误差很大,因此,决心把腾讯地图经纬度转换城百度地图经纬度,然后再‍利用百度地图api来获取详细 ...

  2. uni-app获取位置信息(经纬度转换地址信息)

    uniapp获取位置信息,获取到的信息为经纬度,再通过转换成地址信息 1.使用uni.getLocation()获取位置信息 2.下载qqmap-wx-jssdk.js插件插件下载地址 3.使用腾讯位 ...

  3. Android开发之百度地图经纬度转换地址(以及获取详细地址的方法自测成功)

    方法一: 直接粘贴代码 GeoCoder mSearch = GeoCoder.newInstance();mSearch.setOnGetGeoCodeResultListener(new OnGe ...

  4. 百度地图经纬度转换地址 android,百度地图地址经纬度互转,java代码(v1版本使用)...

    /** * 输入地址返回经纬度坐标 * key lng(经度),lat(纬度) */ public void getGeocoderLatitude(String address){ Buffered ...

  5. android 经纬度 转换成地址,Android 百度地图经纬度转换成地址

    1.地理编码查询接口是单列模式的,我们需要调用让它自己实例化 // 在OnCreate方法里创建地理编码检索实例 GeoCoder geoCoder = GeoCoder.newInstance(); ...

  6. 百度转换经纬度为地址

    1 /** 2 * 通过百度转换经纬度为地址信息 3 * 4 * @param longitude 经度 5 * @param latitude 纬度 6 * @param coordtype 坐标体 ...

  7. HIVE自定义UDF函数-经纬度转换成省市地址

    目录 1.需求背景 2.解决方案 3.代码pom引用 4.代码集成UDF 5.编译jar包 6.使用说明 7.将jar包放到hdfs 8.创建持久化function 9.测试 10.结语 1.需求背景 ...

  8. python高德地图api调用实例_Python 利用高德地图api实现经纬度与地址的批量转换...

    我们都知道,可以使用高德地图api实现经纬度与地址的转换.那么,当我们有很多个地址与经纬度,需要批量转换的时候,应该怎么办呢? 在这里,选用高德Web服务的API,其中的地址/逆地址编码,可以实现经纬 ...

  9. python根据经纬度转换详细地址_使用python实现地址-经纬度转换

    标签:地址   ref   uri   port   div   字符   注册   gui   图片 中文领域: 指的是提取境内地址的经纬度,的主要调用的是百度API.中间经历了一些波折,刚开始直接 ...

最新文章

  1. centos中执行apt-get命令提示apt-get command not found
  2. 英语是缺乏AOP的语言,汉语是具备AOP的语言。
  3. Unity OBB分包(基础APK+OBB) 与apk签名
  4. Amazon Redshift 架构
  5. Atitit.atiJsBridge 新特性v7q329
  6. AD 批量修改漫游文件
  7. c语言程序中必不可少的,C语言程序设计(第3章程序控制语句)2
  8. qq头像计算机系,QQ头像
  9. c# 智能升级程序代码(1)
  10. hadoop-0.20.2完全分布式集群
  11. SQL知识(浓缩版)快速入门(基础语法、概念)
  12. afudos备份bios不动_afudos备份bios不动_老鸟经验之谈刷坏BIOS后的2种恢复方法
  13. 2020定额招投标报价评审办法及案例分享交流会圆满结束
  14. CefSharp 实现拖拉滑动验证Demo
  15. 魅蓝note6救砖_魅蓝NOTE6救砖工具及线刷包
  16. 30岁以前该做什么,30岁以后该做什么!!很有道理
  17. 京沪高铁全程提供WiFi无线网络技术揭密
  18. Xrm.WebApi 多对多关系处理
  19. Windows10环境下自己配置Pytracking详细流程(有参考博客)
  20. 计算机网络安全的一些概念以及知识点

热门文章

  1. 号外 ! 号外 ! V7包下的View都来此参加同学会 , 快来看,快来看...
  2. CSUOJ1238--兵临城下
  3. 1142 Maximal Clique
  4. 关于在word中使用分栏符 出现左边没有填完就开始了右边 然后再是左边 然后再右边的解决
  5. 鲁棒局部均值分解 (RLMD)附Matlab代码
  6. 基于S52单片机的温度测量与报警装置
  7. 网络——数据交换方式
  8. 斩获新一轮数亿元融资,Seesaw这杯创意咖啡里有多少“泡沫”?
  9. 个人股东股权转让涉税问题初探
  10. 【地图易-制图案例】全球地震分布地图