vba编写kml圆思路

工作原因要用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的一个等式,如下:

你可能感兴趣的:(谷歌地球画圆,vba,kml)