background - 我正在尝试使用simpleKML创建一个圆形多边形并将其添加到kml。
kml知道应该添加一个多边形,并且它具有正确的颜色,宽度和描述,但每当我缩放到该位置时,它会引导我到坐标0,0而不是多边形。
我创建多边形的代码如下:
pol = kml.newpolygon(name=pnt.name)
pol.description = ("A buffer for " + pnt.name)
pol.innerboundaryis = [newCoord]
pol.style.linestyle.color = simplekml.Color.green
pol.style.linestyle.width = 5
pol.style.polystyle.color = simplekml.Color.changealphaint(100, simplekml.Color.green)
其中'newCoord'是一个2D数组,其中包含所有纬度/经度信息。
因为我认为数组可能无法正确格式化数据,所以我尝试使用代码形成一个简单的三角形多边形:
pol1 = kml.newpolygon(name=pnt.name)
pol1.innerboundaryis = [(46.714,-75.6667),(44.60796,-74.502),(46.13910,-74.57411),(46.714,-75.6667)]
pol1.style.linestyle.color = simplekml.Color.green
pol1.style.linestyle.width = 5
pol1.style.polystyle.color = simplekml.Color.changealphaint(100, simplekml.Color.green)
但它与第一个问题相同。
我尝试用.innerboundaryis()和.outerboundaryis()形成多边形但没有成功,我的想法已经用完了。
编辑:我应该补充说我正在谷歌地球中打开kml文件
答案 0 :(得分:0)
网上几乎没有关于这个问题的文档,所以我想我会将问题的答案发布给将来有这个问题的人。
这是我使用的使多边形工作的代码。
newCoords = []
pol = kml.newpolygon(name=pnt.name)
pol.description = ("A buffer for " + pnt.name)
if pnt.name in bufferList:
bufferRange = input('Enter the buffer range. ' )
for i in range(360):
newCoords.append( ( math to calculate Lat, math to calculate Long ) )
pol.outerboundaryis.coords.addcoordinates([newCoords[i]])
pol.style.linestyle.color = simplekml.Color.green
pol.style.linestyle.width = 5
pol.style.polystyle.color = simplekml.Color.changealphaint(100, simplekml.Color.green)
您需要将坐标放入列表中,然后使用&coese.addcoordinates()'将它们添加到多边形的外边界。功能。此外,它必须是一维列表,因此纬度和经度坐标必须存储在同一位置。
您可以使用' .outerboundaryis()'直接输入浮点数,例如:
pol.outerboundaryis = [(18.333868,-34.038274), (18.370618,-34.034421),
(18.350616,-34.051677),(18.333868,-34.038274)]
但是' .addcoordinates()'只接受列表和整数。