是否可以保存此信息?
信息如下所示:
<ExtendedData>
<SchemaData schemaUrl="#vorlage">
<SimpleData name="Name">Test</SimpleData>
<SimpleData name="Power">10895</SimpleData>
<SimpleData name="Location">L</SimpleData>
</SchemaData>
</ExtendedData>
我的代码有问题吗?
#1 楼
ExtendedData没有正确的“名称”值。例如, GDAL和Qgis Master不会导入<Data><displayName>System</displayName><value>Riverine</value></Data>
,而
<Data name="System"><displayName>System</displayName><value>Riverine</value></Data>
被导入。
您可以使用一个好的文本编辑器来更改它。
-------------- -----由Miro添加---------------------
对于KML编辑,需要使用允许“替换功能(如PSPad(或Notepad ++和许多其他自由文本编辑器)中的“正则表达式”)
查找:
<Data><displayName>(.*)</displayName>
替换:
<Data name=""><displayName></displayName>
此后只需使用QGIS(关键是“新”版本-包括GDAL 1.9.2版及更高版本)和“添加矢量层”,该层将加载所有“ ExtendedData”。
评论
谢谢,那是关键信息。我试图将其替换为一个测试文件,但效果很好。现在,所有“ ExtendedData”都以列的形式出现在表中。再次非常感谢您。
–米罗
2012年11月7日在2:02
实际上,Qgis不使用DisplayName。因此,可以在没有RegExp的情况下进行替换,方法是将
– AndreJ
2012年11月7日7:02
我的KML文件还包含一个标记
– Djana
2014年6月12日在7:24
#2 楼
我使用globalmapper将其中一个湿地文件转换为形状:封装了转换后的dbf文件的两个屏幕截图(区域和线条):希望这是你想要什么..
评论
谢谢,是的,这正是我所需要的。很高兴知道有一些软件可以处理不符合KML标准的这些KML。因为已经有了使用免费QGIS的其他答案,所以我不会尝试使用Global Mapper,但它肯定可以帮助其他人。再次感谢你。
–米罗
2012年11月7日在1:56
真的是一个很棒的转换器,太酷了!
– SIslam
15年5月24日在12:07
#3 楼
您可以使用Global Mapper软件,在其中可以轻松导出/导入kml / kmz文件+附加数据以及许多矢量和栅格格式。它是最好的软件之一。http:// www.bluemarblegeo.com/global-mapper/product/formats.php
评论
多谢小费。我相信它可以导入/导出kml / kmz文件,但是我已经尝试了5种以上的应用程序。而且它们都不能够读取属性(“ ExtendedData”)。那么实际上Global Mapper可以做到吗?
–米罗
2012年11月5日在7:26
#4 楼
似乎Google的libkml在Ubuntu上不附带GDAL 1.9.2,特别是gdal-bin 1.9.2-2〜precise4: $ ogrinfo --formats | grep -i kml
-> "KML" (read/write)
要获得支持libkml和
ExtendedData
的版本,我必须从svn干线(r864)构建libkml后,从svn干线(r25473)构建GDAL。 ),具体请注意GDAL网站上记录的1.2.0版本显然不足。请注意,在Ubuntu精确版(当前为1.2.0-1ubuntu6)上安装libkml0
将无济于事。您确实确实需要1.3或svn干线,但我找不到它的PPA。我最终甚至无法在Ubuntu Precision上构建libkml。随附的boost版本中存在类型错误,并且由于依赖关系混乱而导致运行libtool时发生错误。无论出于什么原因,这些都不是我成功的Debian压缩问题:
$ ogrinfo --formats | grep -i kml
-> "LIBKML" (read/write)
-> "KML" (read/write)
一旦了解到这一点,运行
ogr2ogr -f "ESRI Shapefile" foo.shp foo.kml
就会给我一个qgis能够导入的shapefile,并保留ExtendedData
的属性。#5 楼
Qgis 1.8.0 Lisboa使用的Ogr2ogr kml驱动程序不支持kml ExtendedData标记。LIBKML驱动程序可以,它已并入GDAL 1.9.2版,OSGEO4W软件包,MS4W和Qgis Master中。
您的数据没有错,但OSGeo4W中的LIBKML驱动程序的SchemaData出现了一些问题。
或者,以下工作方式:
<ExtendedData>
<Data name="Name"><value>Test</value></Data>
<Data name="Power"><value>10895</value></Data>
<Data name="Location"><value>L</value></Data>
</ExtendedData>
编辑:SchemaData错误现在已在OSGEO4W的GDAL 1.9.2-2包中修复。
#6 楼
使用FME 2012(SP4)加载阅读器KML属性类型的属性)
运行工作空间
评论
谢谢,我已经下载了fme_install.msi,但是安装中出现错误,并且由于该问题已经存在不同的工作解决方案,因此我不再继续这种方式。无论如何,再次感谢您。
–米罗
2012年11月7日,下午1:47
#7 楼
您可以尝试kml2shp吗?他们也有一个新的在线转换器。
#8 楼
我不知道您可以使用QGIS来实现。但是,MapWindow具有KML2Shapefile插件。KML2Shapefile是MapWindow GIS的插件,可将Google Earth转换为Google Earth中的KML和KMZ文件。 >
KML2Shapefile将每个KML几何类型拆分为单独的
shapefile。它支持复杂的几何形状,并且能够将大多数KML表示为属性数据。
MapWindow也是一种免费的开源GIS程序包。您可以免费下载并安装。您可以使用MapWindow中的KML2Shapefile插件将KML转换为shapefile,然后将生成的形状文件加载到QGIS中。假设您仍然在Windows上。
我现在可以想到的最佳解决方案。我希望有人知道可以在QGIS中执行此操作的插件。
评论
谢谢你的帮助。我尝试了一下,但是仍然丢失了数据。信息如下所示:
–费利克斯
2012-09-19 18:33
哦,对此感到抱歉。我希望它能起作用。
– R.K.
2012年9月19日在18:36
@Felix-您在评论中提供的信息非常有用。我建议编辑您的问题,并在其中添加它,以获得更多的上下文和清晰度。
–获得空间
2012年9月20日0:14在
@AndreJoost-听起来您想出了一个不错的答案。值得将其添加为实际答案,以便它会出现在具有相同问题的其他任何人的搜索结果中。
–获得空间
2012年9月20日下午0:15
#9 楼
获取Global Mapper,您要做的就是导入KMZ或KML,然后导出Vector IMG(ESRI SHP文件)。全局映射器可以读取大多数文件类型。然后在ARC,全局映射器,歧管,QGIS中打开形状,并查看属性表。所有信息将在那里。您也可以在此时使用Microsoft Excel从SHP打开DBF文件,然后根据需要另存为XLXS文件扩展名。#10 楼
在QGIS 3.2.0中,可以使用工具箱轻松进行转换。在工具箱中选择-> GDAL->矢量转换->转换格式...。
(Caja de Herramientas de Procesos -> GDAL->ConversiónVectorial-> Convertir Formato)
选择KML文件,另存为SHP文件。
我还必须在“属性”中更改重新生成的文件(“已转换”)- >源(Tab)->从“ UTF-8”到“ Windows-1258”的源代码,可以正确看到西班牙语字符。
评论
您如何将.kml导入QGIS?该格式是基本格式之一,因此将kml文件添加为图层应该是一个相对轻松的过程。如果您提供更多详细信息,则可能有人会帮助您找出问题所在。另外,有关文件源的信息也可能有用。您是否有到kml的实时链接?
我认为可以通过FME实现,或者如果您觉得有点冒险,可以编写一个Python脚本来解析kml(xml!)并导出到shapefile中。 (要使用的库:python shapefile库,python中的任何XML)
R.K.是的,我见过那个。尽管我决定问一个新问题,用对问题的更好描述,因为没有令人满意的解决方案。此外,经过另一轮尝试后,问题可能出在在在线KML验证程序中测试时,湿地KML文件不是有效的KML,并且存在许多错误...
U2ros我尝试了在线FME,但没有成功。也许是台式机FME,我可以在下一个“安装回合”中尝试一下...我绝对不会冒险尝试编写将kml转换为shp :-)的脚本。但是在最坏的情况下,我可以想象编写脚本将通过KML,为每个功能找到“ ExtendedData”并创建表/ csv,我可以通过“名称”将其联接以在QGIS / ArcGIS / Mapinfo中转换KML ...