我的用户向我发送了使用Google Earth数字化的点数据。
如何将其KML转换为shapefile,反之亦然?

评论

尽管这是逆运算,但是@iant问题的大多数答案都可以双向起作用。

在这种情况下,我同意关闭。让我们开始讨论。

ArcMap中的“ KML图层”将完全满足您的需求。

#1 楼

使用来自GDAL / OGR的开源ogr2ogr
ogr2ogr -f 'ESRI Shapefile' output.shp input.kml

,反之亦然:输出格式选项(例如Windows命令行的“ ESRI Shapefile”)用引号引起来。另请参见gdal Wiki。

评论


使用ogr2​​ogr时,需要注意几个语法要点(省去了数小时的挫败感):1.对于ogr2ogr字符串中的任何选项“标签”,请确保-和单词即-progress NOT-progress之间没有空格。 )

– grego
19年7月23日在22:08



2.键入ogr2ogr -help(按Enter)将显示所有可能的选项。以正确的顺序使用这些选项“标签”非常重要,即-progress -f NOT -f -progress)(以下是ogr2ogr -help打印的内容):用法:ogr2ogr [--help-general] [-skipfailures] [-附加] [-更新] [-选择field_list] [-其中restricted_where | @文件名] [-进度] [-sql | @文件名] [-方言] [-preserve_fid] [-fid FID]等等等

– grego
19年7月23日在22:09



3.格式是字符串中唯一带有引号的部分。 (无论是单引号还是双引号,这取决于运行ogr2ogr的环境:对我来说,在QGIS> OSGeo4W shell中,我使用双引号,即“ KML”而不是“ KML”4。您可以获取完整格式列表(键入90种不同格式):ogr2ogr --formats

– grego
19年7月23日在22:09



#2 楼

ArcGIS 10有一个称为KML To Layer的GP工具,可以将KML转换为要素类。使用新搜索搜索KML。我已使用它从Google收集了溢油的kml提要并将其转换为SHP。将其转换为shapefile的类步骤。

#3 楼

使用ogr2​​ogr,但是如果您对命令行不感兴趣,请尝试使用ogr2​​gui-ogr2ogr的非常简单的前端。

#4 楼

ogr2ogr -f KML output.kml input.shp 


#5 楼

要使用在ArcGIS中作为KML或KMZ文件发布的空间数据,必须首先将KML转换为要素类(shapefile)。康涅狄格大学发布了一个脚本,用于从KML创建形状文件,称为KML_to_Shp.tbx。它运行良好,您可以从ArcToolbox中使用它。由于KML(应该)始终处于地理坐标(WGS84)中,因此您最终希望将其转换为UTM Zone 15N NAD83 ...

与所有新工具一样,请在阅读以下内容之前阅读文档:采用。可以在UCONN的土地使用教育和研究中心网站上找到。将其添加到工具箱并了解其局限性后,该工具将非常易于使用。

http://clear.uconn.edu/tools/kml_to_shp/index.htm

评论


您并不总是想要UTM区域15N NAD83,而是想要合适的数据区域。您还可以使用WGS84进行投影(即,WGS84并不意味着latlon)

– Vinko Vrsalovic
10年7月23日在0:20

#6 楼

如果您对命令行工具感兴趣,可以使用OSGEO的GDAL / OGR。

http://www.gdal.org/ogr/index.html

#7 楼

值得一提的另一种商业产品是Global Mapper。这属于查看,转换,重新投影几乎可以想象的任何地理数据的类别。我在授课的课程中大量使用免费版本,几乎每个人都对这是GIS工具的瑞士军刀发表评论(尽管免费版本不进行翻译,但会显示所有菜单和选项)。以我的经验,这笔费用值得。

#8 楼

除其他答案外,还有更多选择...

SL-King的fdo2fdo应用程序使用开源FDO库,允许您执行KML到SHP的翻译,反之亦然。它包括一个GUI(表示格式到格式的转换和更多自定义的模式映射转换)以及一个命令行工具。

对于专有应用程序,Safe Software的FME为您提供了惊人的控制方式将源信息映射到目标。如果您拥有ArcGIS,则可以通过数据互操作性扩展(格式列表)进行访问,但需要支付额外费用。您可以像CSV一样轻松导入;您只是在寻找坐标标签之间的数据。

#9 楼

另一个选择是使用XToolsPro,这是在ArcGIS中工作的第三方扩展。在许多方便的转换工具中,有一个“从KML导入数据”功能。

#10 楼

对于kml和shp之间的转换,QGIS变得更加强大。只需使用图层上右键菜单中的另存为。或从“添加新图层”菜单中打开每种文件类型,请确保在对话框中更改文件类型。

#11 楼

FME发布了一个在线工具的Beta版,该工具可以处理许多不同类型的转换,包括这种转换。 http://fmeserver.com/userweb/sharper/Portal/EasyTranslator/index.html
此转换器确实可以为您提供帮助。

#12 楼

也有一些其他商业产品。想到Arc2Earth。它与ArcGIS Desktop集成得很好。 http://www.arc2earth.com

评论


Arc2Earth自2018年8月起关闭营业。

– Mike T
9月20日23:59

#13 楼

如果您需要GUI,则可以使用QGIS。它在后台使用OGR / GDAL。

#14 楼

您也可以从安全软件http://www.safe.com
上查看FME。有14天的试用期。使用FME,您甚至可以在数据转换/迁移过程中将KML文件中的属性映射为ESRI SHP格式,此外还可以根据某些属性或空间范围来过滤KML点文件。
还可以选择执行如果您有大量来自用户的KML文件,则可以进行批量转换。

#15 楼

使用OGR进行命令行控制,Google Earth Pro以及多种其他应用程序将为您提供图形化的转换方式

#16 楼

ET GeoWizards还具有从Google Earth导入的选项,该选项会将KML或KMZ文件转换为要素类。 > http://www.ian-ko.com/ET_GeoWizards/gw_MainFeatures.htm

如果您正在寻找开放源代码选项,我会看到MapWindow刚刚更新,其中有几个用于与KML和shapefile相互转换的插件。

#17 楼

开源MapWindow GIS具有免费的扩展名(KML2Shapefile),用于将KML / KMZ文件转换为shapefile。

#18 楼

如果您具有interop扩展名,则只需将KML直接加载到ArcMap中并导出到shp。完全可以从SHP转到-> KML
http://arcscripts.esri.com/details.asp?dbid=14273

#19 楼

如果您想在线转换文件,请尝试使用MyGeodata GIS格式并协调系统转换器。它基于ogr2ogr(gdal / ogr库)-因此几乎支持所有已知的GIS格式和坐标系...

#20 楼

以下是我未在任何答复中看到的一些选项,可以添加以下额外资源来将KML转换为SHP:

MyGeodata Converter


在线从锁孔标记语言格式到ESRI Shapefile格式(从KML到SHP)的转换器是快速且易于使用的工具,可用于单个和批量转换。 Converter还支持其他90多种矢量和栅格GIS / CAD格式以及3,000多种坐标参考系统。


免费地理工具涵盖了Zonums软件工具并提供了教程。 >

#21 楼

Zonum Solutions的在线KML到Shapefile转换器也很好用:

http://www.zonums.com/online/kml2shp.php

#22 楼

可能会产生更清晰结果的简便易行的帮助是,先将KML转换为GPX(可以使用多种开源软件),然后打开各自的数据(GPX具有5种不同的信息类别:航点,航迹点,在QGIS中使用GDAL / OGR中的ogr2ogr,并直接将其保存为.SHP文件格式。

使用批处理处理大量数据也很容易(使用合并)例如,如果需要,可以使用SAGA的Vector Layers(矢量图层)生成单个形状文件,还可以在最终的“另存为SHP”之前清除空属性。出现在您的最终结果中...在将新的矢量数据添加到地图时,您可以选择合适的结果。

#23 楼

我参加聚会很晚,但是这里有一些其他方法:


Google Fusion Tables,它可以将KML点信息转换为.csv格式的WGS84 X和Y,您可以然后在您首选的GIS分析软件中使用。

在R.中使用rgdal软件包:

install.packages("rgdal")
library(rgdal) #load package
kmlfile=readOGR("yourkmlfilehere.kml") #load KML
writeOGR(kmlfile,"yourshapepath",layer="shapename", driver="ESRI Shapefile") #save shape




#24 楼

另一个提示:如果您想使用命令行将一个文件夹/目录中的多个KML一次转换为shapefile,请在文件夹中打开cmd并在以下位置键入: * .kml)做ogr2ogr -f“ ESRI Shapefile”“%〜dpnf.shp”“%f”

注意:它将使用KML的名称作为shapefile的名称,因此请确保您的KML具有适用于shapefile的命名格式。 shapefile将在与相应kml相同的目录中创建。子目录中的KML也将转换为shapefile。

#25 楼

要将KML转换为Shp文件格式,可以使用ogr2​​ogr实用程序。
首先需要将其安装在系统中,如果已经安装,则在终端中使用
键入ogr2ogr。

现在要进行转换,需要执行给定的命令,即

--- ogr2ogr -f 'ESRI Shapefile' Output_sahpefile.shp Input_KML.kml


这就是ogr2ogr可以进行转换的方式,如果您不这样做获取结果,您可以通过编码方法将Kml转换为shp。

这也可以使用PHP完成。您可以创建一个将此命令定义为字符串的函数,并可以在shell_exec()方法中将此字符串赋予执行的功能。 Shell_exec()实际上执行命令并以字符串形式返回输出。如果您使用QGIS工具,则可以在此处的kml上查看我的一篇博客文章,以使用QGIS进行shp转换,或者继续使用此文章。

评论


您是否与提供答案的网站相关联?如果是这样,请在您的帖子中注明。

–LaughU
18年4月24日在12:53