vba编写kml圆思路

本文介绍如何使用VBA批量生成KML文件中的圆形。关键在于理解每个圆由72个等距点组成,通过计算特殊点的经纬度和应用坐标距离公式,确定圆周上任意点的坐标。作者分享了解题思路、代码实现及注意事项,提供了一个自定义函数,可生成72个点的经纬度坐标。
摘要由CSDN通过智能技术生成

工作原因要用vba编写一个批量生成kml圆的代码,在网上找了很久资料很少,好不容易找到一个还是一直在讲理论,看的晕头转向不说,最后的代码还不是用VB写的,更是看不懂,只能自己想办法了,写出解题过程和代码,供大家参考。
首先在谷歌地球上画一个圆,用txt或excel打开,发现任意一个圆都是由72个不重叠的在圆周上等距的点组成的,因此只需确定这72个点就能画出圆了。画圆时圆心经纬度和半径是已知的。再观察一下这个圆,圆上有四个点是特殊的,点1(J1,W1),点2(J2,W2),点3(J3,W3),点4(J4,W4),点1和点2的经度与圆心的经度相同,点3和点4的纬度和圆心的纬度相同,如下图:
圆上四个特殊点
重点一:同一经度上纬度相差1度,距离相差111195米,设此值为L,因为圆心经纬度(J0,W0)和半径R都是已知的,所以可以算出上下两个特殊点的经纬度,即点1(J0,W0+R/L),点2(J0,W0-R/L)。
重点二:坐标距离公式,在网上可以找到已知两个点经度,求两点的距离公式,如下图:
坐标距离公式
我们把距离公式中A点看做是圆心,B点看做是圆周上的任意点,那么距离就是已知的R,把公式复制出来,等号左边用R表示如下:
R=6371004*ACOS((SIN(RADIANS(B2))*SIN(RADIANS(D2))+COS(RADIANS(B2))COS(RADIANS(D2))COS(RADIANS(C2-A2))))
重点二,观察上面的距离公式可以发现C2只出现了一次,也就是假设D2为已知时,通过将上面的公式转换,可以等到求C2的一个等式,如下:
C2 = Acos((Cos(R / 6371004) - Sin(Radian

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值