在KML和shapefile(SHP)格式之间转换?


Answers:


129

使用开源ogr2ogrGDAL / OGR

ogr2ogr -f 'ESRI Shapefile' output.shp input.kml

20
...并且只是为了避免出现下一个自然问题,它也可以采用另一种方式:ogr2ogr -f KML output.kml input.shp
glennon 2010年

8
如果您更喜欢使用基于GUI的工具,则QGIS可以充当ogr2ogr的前端。
昏暗

1
希望有一个在线GDAL / OGR网站提示提示窥视
Pure.Krome

1
@mattwilkie我认为他的意思是Zamzar.com。在线转换服务。
RK 2012年

1
我必须对“ ESRI Shapefile” arg使用双引号。
MatthewD

30

ArcGIS 10有一个称为KML到图层的GP工具,可以将KML转换为要素类。使用新搜索搜索KML。我用它来提取Google的漏油kml提要并将它们转换成SHP。

KML To Layer只能创建地理数据库要素类,因此需要紧随“要素类至要素类”步骤才能将其转换为shapefile。


2
这里提到的工具似乎是KML To Layer,但是只能创建地理数据库要素类,然后需要执行Feature Class To Feature Class步骤将其转换为shapefile。
PolyGeo


10

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

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

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


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


10

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


10

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

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

对于专有应用程序,安全软件的FME可让您控制如何将源信息映射到目标位置。如果您拥有ArcGIS,则可以通过数据互操作性扩展(格式列表)进行访问,但需要支付额外费用。

如果它们只是没有属性的点要素,我会考虑将XML解析为可以轻松导入的格式(例如CSV);您只是在寻找坐标标签之间的数据。


9

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




8

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


6

您也可以从安全软件http://www.safe.com查看FME

有14天的试用期。利用FME,您甚至可以在数据转换/迁移过程中将KML文件中的属性映射为ESRI SHP格式,此外还可以根据某些属性或空间范围来过滤KML点文件。

当您有大量来自用户的KML文件时,也可以选择进行批量转换。

〜SRG


6

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







3

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

MyGeodata转换器

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

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


2

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

如果需要,使用批处理来处理大量数据也很容易(例如,使用SAGA的“合并矢量层”)来生成单个形状文件,还可以在最终的“另存为SHP”之前清除空属性。

如果最终结果中出现奇怪的字符,请特别注意编纂系统...在向地图添加新的矢量数据时,可以选择适当的字符。


0

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

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

  2. 在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

0

另一个提示:如果要使用命令行一次将一个文件夹/目录中的多个KML转换为shapefile,请在该文件夹中打开cmd并在其中键入以下内容:

对于(* .kml)中的/ R%f,请执行ogr2ogr -f“ ESRI Shapefile”“%〜dpnf.shp”“%f”

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


-1

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

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

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

这是ogr2ogr可以完成转换的方式,如果没有获得结果,则可以通过编码方法将Kml转换为shp。

这也可以使用PHP完成。您可以创建一个将此命令定义为字符串的函数,并可以在shell_exec()方法中将此字符串赋予执行的功能。Shell_exec()实际上执行命令并以字符串形式返回输出。

public function KML_to_shp($KMLfilepath,$output){
 $query="ogr2ogr -f 'ESRI Shapefile'  $output.gml  $KMLfilepath";
 shell_exec($query);
 }

这是使用命令行工具ogr2ogr或使用php代码将kml转换为shp的帖子。如果您使用QGIS工具,则可以在此处kml浏览我的一篇博客文章,以使用QGIS进行shp转换,或者继续使用此文章。


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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.