97

My users are sending me point data that were digitized using Google Earth.

How can I convert their KML to a shapefile?

24 Answers 24

129

Using the open source ogr2ogr from GDAL/OGR:

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

As noted in grego's comment below, you may need to use double quotes instead of single quotes for the output format option (e.g. "ESRI Shapefile" for the Windows command line). See also the gdal wiki.

  • 20
    ...and just to preempt next natural question, it works the other way too: ogr2ogr -f KML output.kml input.shp – glennon Jul 23 '10 at 5:24
  • 8
    If you prefer to use GUI based tools, QGIS can act as a front end for ogr2ogr. – underdark Aug 1 '10 at 7:30
  • 1
    wish there was an online GDAL/OGR site hint hint peeps – Pure.Krome Sep 5 '11 at 1:31
  • 1
    @mattwilkie I think he meant something like Zamzar.com. An online conversion service. – R.K. Feb 3 '12 at 16:50
  • 1
    I had to use double quotes for the "ESRI Shapefile" arg. – MatthewD Jan 28 '16 at 18:16
30

ArcGIS 10 has a GP tool called KML To Layer that converts KML to a feature class. Search for KML using the new search. I've used this to take the oil spill kml feeds from Google and convert them into SHP.

KML To Layer can only create a geodatabase feature class so that needs to be followed by a Feature Class To Feature Class step to convert it to a shapefile.

  • 2
    The tool mentioned here seems to be KML To Layer but that can only create a geodatabase feature class that needs to be followed by Feature Class To Feature Class step to convert it to a shapefile. – PolyGeo Apr 30 '15 at 10:21
19

Use ogr2ogr, but if you're not interested in a command line, try ogr2gui - a really simple front end for ogr2ogr.

10

To use spatial data published as a KML or KMZ file in ArcGIS you must first convert the KML to a feature class (shapefile). The University of Connecticut has a published a script for creating shapefiles from KML called KML_to_Shp.tbx. It works quite well and you can use it from ArcToolbox. Because KML will (should) always be in geographic coordinates (WGS84), you will eventually want to transform them to UTM Zone 15N NAD83...

As with all new tools, review the documentation on prior to use. This can be found on the UCONN’s Center for Land Use Education and Research web site. Once you add it to your toolbox and understand its limitations, the tool is very straight forward to use.

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

  • 3
    You don't always want UTM Zone 15N NAD83, you want the proper zone for the data. And you can also project using WGS84 (ie, WGS84 doesn't mean latlon) – Vinko Vrsalovic Jul 23 '10 at 0:20
10

If you are interested in command line tools, you can use GDAL/OGR from OSGEO.

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

10

One more commercial product that bears mentioning is Global Mapper. This falls in the category of view, convert, re-project almost any geographic data you can imagine. I use the free version heavily in a class I teach and almost everyone walks away commenting on how this is the swiss army knife of GIS tools (though the free version doesn't do translations, it exposes all the menu's and options). Well worth the cost in my experience.

10

Couple more options in addition to the other answers...

SL-King's fdo2fdo application, which uses the open source FDO libraries, allows you to perform KML to SHP and visa versa translations. It includes both a GUI (which express format-to-format translations and more customized schema mapping translations) as well as a commandline tool.

For properietary applications, Safe Software's FME gives you amazing control over how you map the source information into destination. If you have ArcGIS, you can access this via the Data Interoperability Extension (list of formats) at additional cost.

If they are just point features with no attributes, I'd consider parsing the XML into something you can easily import like a CSV; you're just looking for the data between the coordinates tags.

9

Another option is to use XToolsPro, a third-party extension that works in ArcGIS. Amongst their many handy conversion tools is a "Import Data from KML" function.

9

FME posted a beta for an online tool that handles many different types of conversion, including this. http://fmeserver.com/userweb/sharper/Portal/EasyTranslator/index.html This converter should really help you.

8

There are also some other commercial products. Arc2Earth comes to mind. It's got pretty good integration with ArcGIS Desktop. http://www.arc2earth.com

8

QGIS has become much more robust for the conversion between kml and shp. Just use the Save As from the right click menu on the layer. Or open up each of those file types from the Add New Layer menu, be sure to change the file type in the dialog box.

6

You can also look at FME from Safe Software http://www.safe.com

There is a 14 day trial available. FME lets you even map the attributes from your KML file to ESRI SHP format during the data conversion/migration process besides the ability to filter the KML point files based on certain attributes or spatial extents.

There is also the option to do batch conversion when you have a large set of KML files from your users.

~SRG

6

use OGR for command line control, Google Earth Pro will give you a graphical way to convert, as will a variety of other apps

5

ET GeoWizards also has an import from Google Earth option, which will convert KML or KMZ files to feature class. > http://www.ian-ko.com/ET_GeoWizards/gw_MainFeatures.htm

If you're looking for an open source option, I see MapWindow was just updated, and there are a couple of plugins for converting to and from KML and shapefile.

5

The Open Source MapWindow GIS has a free extension (KML2Shapefile) for converting KML/KMZ files into shapefiles.

4

If you have the interop extension just load that KML straight into ArcMap and export to shp.

Although the opposite answer to your Q, in case someone has come here to do the vice versa, I find this script perfect to go from SHP-->KML http://arcscripts.esri.com/details.asp?dbid=14273

4

If you would like to convert your files online, try MyGeodata GIS formats and coordinate system converter. It is based on ogr2ogr (gdal/ogr library) - so almost all known GIS formats and coordinate systems are supported...

3

Zonum Solutions' Online KML to Shapefile converter also works well:

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

3

A few options I didn't see on any of the responses to add additional resources for converting KML to SHP would be the follow:

MyGeodata Converter

Online converter of Keyhole Markup Language format to ESRI Shapefile format (KML to SHP) is fast and easy to use tool for both individual and batch conversions. Converter also supports more than 90 others vector and rasters GIS/CAD formats and more than 3 000 coordinate reference systems.

Free Geography Tools covers and provides a tutorial of Zonums Software tool

2

A good and easy help that might produce a more clean results is to convert KML to GPX first (there are several open-source software that can do it) and open the respective data (GPX has 5 different class of information: Waypoints, Trackpoints, Routepoints, Tracks and Routes) using the ogr2ogr from GDAL/OGR in QGIS and save it directly in .SHP file format.

It's quite easy also to use batch process for large quantity of data (using the Merge Vector Layers from SAGA for example) to produce a single shape file if desired and you can also clear the empty attributes before the final "Save as SHP".

Take special attention to the codification system if strange characters appear on your final result... you can choose the proper one at the moment you are adding new vector data to your map.

0

I am late to the party but here are a few extra ways:

  1. Google Fusion Tables, it can convert KML points information to WGS84 X and Y in a .csv format, which you can then use in your preferred GIS analysis software.

  2. Using the rgdal package in R.:

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

Another tip: If you want to convert multiple KMLs in a folder/directory at once to shapefile using the command line, open up cmd in the folder and type this in:

for /R %f in (*.kml) do ogr2ogr -f "ESRI Shapefile" "%~dpnf.shp" "%f"

Note: It will use the name of the KML as the name of the shapefile so make sure your KMLs have the proper naming formats for shapefiles. The shapefile will be created in the same directory as the corresponding kml. KMLs in sub-directories will be converted to shapefiles too.

-1

For converting KML to Shp file format you can use ogr2ogr utility. Firstly you need to install it in the system, If you already installed it use type ogr2ogr in the terminal.

Now for conversion the given command needs to be executed i.e.

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

This is how conversions can be done by ogr2ogr and if you are not getting results you can convert Kml to shp by coding method.

this can also be done using PHP. You can create a function that defined this command as string and can give this string in shell_exec() method to execute. Shell_exec() actually execute the command and returns output as string.

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

here is an post to convert kml to shp using command line tool ogr2ogr or using php code. While if you use QGIS tool, you can look over one of my blog post here kml to shp convert using QGIS or else continue using this post.

  • 1
    are you associated with the website you are offering as an answer? If so please state it in your posts. – LaughU Apr 24 '18 at 12:53
-2

In ArcGIS just search "kml TO LAYER" or "Layer to KML". this tool will help you convert into shapefile and KML

  • I think this approach was already mentioned before by another author. Alternatively, you can suggest something new or enhanced. – Taras Dec 13 '18 at 6:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.