公司网点表存储的坐标是百度坐标,现需要将网点位置标注到高德地图上,研究了一下高德地图的云图数据模版 http://lbs.amap.com/yuntu/reference/cloudstorage和坐标转换服务http://lbsbbs.amap.com/forum.php?mod=viewthread&tid=724,云数据管理平台http://yuntu.amap.com/datamanager/   ,实现了excel文件的导入,现将实现步骤及使用的一些技巧总结一下:

本地数据导出为高德云图导出模版需要的excel文件

因为需要转为高德地图对应的坐标,高德提供了坐标转换的接口服务(http://lbsbbs.amap.com/forum.php?mod=viewthread&tid=724),我想直接使用excel里的vba编程实现坐标的转换。

上面的文件导出后生成excel文件,红色的是模版必填的内容,蓝色的是选填的,为了后面其它应用的需要,我将对应的code和Id也存入到模版中

Excel VBA编程实现坐标转换

高德提供的坐标转换服务接口:http://restapi.amap.com/v3/assistant/coordinate/convert?locations=116.481499,39.990475&coordsys=baidu&output=Json&key=dd21bdd2263294d9e11b4a9f9d5d6c71

只要传入对应的坐标即可返回高德坐标(coordsys可选值:gps;mapbar;baidu),通过浏览器访问将返回如下格式数据,其中locations值就是对应的高德坐标。

根据这个接口,我使用Excel的VBA编程来实现接口请求和坐标转换,具体实现参考下面的截图

需要引用的对象如上图。

Function BytesToBstr(body, code)
Dim objstream
Set objstream = CreateObject("adodb.stream")
objstream.Type =
objstream.Mode =
objstream.Open
On Error Resume Next
objstream.Write body
On Error GoTo
objstream.Position =
objstream.Type =
objstream.Charset = code
BytesToBstr = objstream.ReadText
objstream.Close
Set objstream = Nothing
End Function Function GetGaoDeLocations(XmlStr As String) As String
Dim objHTTP, xmlDOC Set objHTTP = CreateObject("MSXML2.XMLHTTP")
Set xmlDOC = CreateObject("MSXML.DOMDocument")
strWebserviceURL = "http://restapi.amap.com/v3/assistant/coordinate/convert?coordsys=baidu&output=json&key=dd21bdd2263294d9e11b4a9f9d5d6c71&locations=" & XmlStr
objHTTP.Open "GET", strWebserviceURL, False '默认是POST方式
objHTTP.setRequestHeader "Content-Type", "application/json"
objHTTP.send ("")
'objHTTP.send ("{locations:'" & XmlStr & "'}") 'XmlInput是Ws的参数
GetGaoDeLocations = CStr(BytesToBstr((objHTTP.responseBody), "utf-8")) Dim objSC, strJSON, objJS
strJOSN = GetGaoDeLocations
'调用ScriptControl对象
Set objSC = CreateObject("MSScriptControl.ScriptControl")
strJSON = "var o=" & strJOSN & ";"
objSC.Language = "javascript"
objSC.AddCode (strJSON)
Set objJS = objSC.CodeObject.o
GetGaoDeLocations = objJS.locations End Function

VBA里的代码如上,实现接口请求及返回值的处理。

通过拖动实现文本框内容的自动填充,拖动过程中,就自动去调用接口返回对应的高德坐标。

经过一番坐标转换后,需要再将返回值分割成经度和纬度分别填充到X,Y列。关于字符串分割,参考下面的方法:取左侧经度=LEFT(C2,FIND(",",C2)-1),取右侧纬度的=RIGHT(C2,LEN(C2)-LEN(D2)-1)

怎么样可以从一串字符中的某个指定位置的前或后截取指定个数的字符.

如:12345.6789,我要截取小数点前(或后)的3个字符.怎么样操作,

另外,怎么样从右边截取字符,就是和left()函数相反的那个功能.

=find(".",a2)
返回在数字中字符(小数点)的位置。 具体公式如下:
字符(小数点)前三位
=MID(A2,FIND(".",A2)-3,3) 字符(小数点)后三个
=MID(A2,FIND(".",A2)+1,3) 字符(小数点)前面的所有数字 =LEFT(A2,FIND(".",A2)-1) 字符(小数点)后面的所有数字 =RIGHT(A2,FIND(".",A2)-2) 以上均为不包括“字符”的情况。其它情况只需改变一下红色数字大小。

Excel文件上传到高德云图

 
 
全部上传后,通过http://yuntu.amap.com/share/2YJvMz可以看到效果

使用Excel VBA编程将网点的百度坐标转换后标注到高德地图上的更多相关文章

  1. excel VBA 编程

    Dim cuttent_columns As Integer Dim care_repeat As Integer Private Sub Workbook_Open() Dim i As Integ ...

  2. Android 编程 AMapLocationClientOption 类中的 setNeedAddress 方法用处 (高德地图 com.amap.api.location.AMapLocationClientOption 中的类)

    最近在用高德地图来写Android App, 其中有一些 方法是不太理解的,这里写一下 对  高德地图  com.amap.api.location.AMapLocationClientOption ...

  3. Excel VBA 教程

    https://www.w3cschool.cn/excelvba/  Excel VBA 编程教程 https://www.yiibai.com/vba   VBA教程 http://www.acc ...

  4. 【百度地图API】建立全国银行位置查询系统(三)——如何在地图上添加银行标注

    原文:[百度地图API]建立全国银行位置查询系统(三)--如何在地图上添加银行标注 <摘要>你将在第三章中学会以下知识: 如何在地图上添加带银行logo的标注?(你也可以换成商场logo, ...

  5. 百度地图和高德地图坐标系的互相转换 四种Sandcastle方法生成c#.net帮助类帮助文档 文档API生成神器SandCastle使用心得 ASP.NET Core

    百度地图和高德地图坐标系的互相转换   GPS.谷歌.百度.高德坐标相互转换 一.在进行地图开发过程中,我们一般能接触到以下三种类型的地图坐标系: 1.WGS-84原始坐标系,一般用国际GPS纪录仪记 ...

  6. 记录开发基于百度地图API实现在地图上绘制轨迹并拾取轨迹对应经纬度的工具说明

    前言: 最近一直在做数据可视化方面的工作,其中平面可视化没什么难度,毕竟已经有很多成熟的可供使用的框架,比如百度的echart.js,highcharts.js等.还有就是3D可视化了,整体来说难度也 ...

  7. js不同地图坐标系经纬度转换(天地图,高德地图,百度地图,腾讯地图)

    1.js转换代码 1 //转换常数 2 var x_pi = 3.14159265358979324 * 3000.0 / 180.0; 3 var pi = 3.14159265358979324; ...

  8. 来吧!带你玩转 Excel VBA

    来吧!带你玩转 Excel VBA 从错失良机到艰辛的DOS征程,从坎坷购机自学路到转机起程,从爱好到事业,他从一个完全不懂电脑的人到VBA高级应用者,一切全是自学…… 我是罗刚君,来自四川的一个小县 ...

  9. 2017-5-29 Excel VBA 小游戏

    ---恢复内容开始--- 转一个Excel VBA的小游戏,最近对excel有了更深入的了解,功能很强大,也刷新了我对待事情的态度. 一.准备界面 我们先来把游戏界面准备好,选中前4行,行高调成50, ...

随机推荐

  1. 我的Spring Boot学习记录(一):自动配置的大致调用过程

    1. 背景 Spring Boot通过包管理工具引入starter包就可以轻松使用,省去了配置的繁琐工作,这里简要的通过个人的理解说下Spring Boot启动过程中如何去自动加载配置. 本文中使用的 ...

  2. 获取url特定参数

    获取通过url拼接的特定参数值: // 获取url指定参数 function getUrlParams(name) { var reg = new RegExp("(^|&)&quo ...

  3. 解决PostGIS打开shp文件输入输出模块出现"找不到文件libintl-9.dll"的问题

    找到shp2pgsql-gui.exe这个程序的目录 复制一份libintl-8.dll副本,改名为libintl-9.dll即可.

  4. Webpack 4教程 - 第六部分 增强开发时体验

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者.原文出处:https://wanago.io/2018/08/06/webpack-4-course-part ...

  5. nlp词性标注

    nlp词性标注 与分词函数不同,jieba库和pyltp库词性标注函数上形式相差极大. jieba的词性标注函数与分词函数相近,jieba.posseg.cut(sentence,HMM=True)函 ...

  6. Android ListView的基本应用

    ListView可以说是Android原生开发最基本.最重要的控件之一,良好的使用ListView可以让自己的项目得到提高,下面是ListView最简单的应用方式 定义ListViewlist_vie ...

  7. [转]Lua和Lua JIT及优化指南

    一.什么是lua&luaJit lua(www.lua.org)其实就是为了嵌入其它应用程序而开发的一个脚本语言, luajit(www.luajit.org)是lua的一个Just-In-T ...

  8. .net解析csv(C#导表工具)

    前言 解析Excel有知名的NPOI库,(Java语言是POI),但是NPOI是不支持解析csv的. csv本质上也是文本文件,可以进行差异对比,更利于解决冲突. 本文对解析csv的几个.net的开源 ...

  9. git pull以及git pull --rebase

    git pull的作用是将远程库中的更改代码合并到当前分支中,默认为:git fetch + git merge git fetch 的作用就相当于是从远程库中获取最新版本到本地分支,不会自动进行gi ...

  10. Django 日志配置

    Django日志处理 settings配置 ########### # LOGGING # ########### BASE_LOG_DIR = os.path.join(os.path.dirnam ...