使用Geopandas读取MultiGeometry KML文件



我有一个包含多个几何体(点和多边形(的kml文件。我只想访问kml文件中存在的多边形。

我尝试使用Geopandas-读取kml文件

inputfile = 'path to kml file' fiona.supported_drivers['KML'] = 'rw' sp = gpd.read_file(inputfile, driver='KML')

这里的"sp"变量只读取kml文件中存在的点特征。我尝试将"Geometry"参数与驱动程序参数一起使用,但仍然只读取点特征。

有人能帮助我访问kml文件中的"多边形"实体吗?

我今天也有同样的问题!然而,我是通过URL响应获得KML的,所以我能够";删除";点数据,然后将其写入kml文件(现在仅包含多边形数据(。这就是我所做的:

from bs4 import BeautifulSoup as bs
import geopandas as gpd
import fiona
fiona.drvsupport.supported_drivers['kml'] = 'rw'
fiona.drvsupport.supported_drivers['KML'] = 'rw'
soup = bs(r.content, 'xml')  # kml/xml content obtained from hitting an API
child = soup.find_all('Placemark')
child_polys = []
# Creates list of only polygon feature data
for c in child:
if c.find('Point') == None:
child_polys.append(c)
# Add required header/footer to the polygon data, then join below. 
header = ['''<?xml version="1.0" encoding="utf-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<open>
1
</open>''']
header.extend(child_polys)
header.append('''</Document>
</kml>''')
with open('temp_data.kml', 'w') as f:
f.write(''.join([str(x) for x in header]))
data = gpd.read_file(r"temp_data.kml", driver="kml")

这给我带来了一个地理数据框架,其中只有多边形的名称、描述和几何图形列。在你的情况下,你可能必须找到一种方法来读取kml,然后像我上面做的那样编辑它,然后重建并传递给地质标准。祝你好运

最新更新